[CFF2ToCFF] Clean up dicts and privates
This commit is contained in:
parent
1076f2c558
commit
9943a109e8
@ -2,7 +2,13 @@
|
|||||||
|
|
||||||
from fontTools.ttLib import TTFont, newTable
|
from fontTools.ttLib import TTFont, newTable
|
||||||
from fontTools.misc.cliTools import makeOutputFileName
|
from fontTools.misc.cliTools import makeOutputFileName
|
||||||
from fontTools.cffLib import TopDictIndex, buildOrder, topDictOperators
|
from fontTools.cffLib import (
|
||||||
|
TopDictIndex,
|
||||||
|
buildOrder,
|
||||||
|
buildDefaults,
|
||||||
|
topDictOperators,
|
||||||
|
privateDictOperators,
|
||||||
|
)
|
||||||
from .width import optimizeWidths
|
from .width import optimizeWidths
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import logging
|
import logging
|
||||||
@ -38,10 +44,30 @@ def _convertCFF2ToCFF(cff, otFont):
|
|||||||
|
|
||||||
opOrder = buildOrder(topDictOperators)
|
opOrder = buildOrder(topDictOperators)
|
||||||
topDict.order = opOrder
|
topDict.order = opOrder
|
||||||
|
for key in topDict.rawDict.keys():
|
||||||
|
if key not in opOrder:
|
||||||
|
del topDict.rawDict[key]
|
||||||
|
if hasattr(topDict, key):
|
||||||
|
delattr(topDict, key)
|
||||||
|
|
||||||
fdArray = topDict.FDArray
|
fdArray = topDict.FDArray
|
||||||
charStrings = topDict.CharStrings
|
charStrings = topDict.CharStrings
|
||||||
|
|
||||||
|
defaults = buildDefaults(privateDictOperators)
|
||||||
|
order = buildOrder(privateDictOperators)
|
||||||
|
for fd in fdArray:
|
||||||
|
fd.setCFF2(False)
|
||||||
|
privateDict = fd.Private
|
||||||
|
privateDict.order = order
|
||||||
|
for key in order:
|
||||||
|
if key not in privateDict.rawDict and key in defaults:
|
||||||
|
privateDict.rawDict[key] = defaults[key]
|
||||||
|
for key in privateDict.rawDict.keys():
|
||||||
|
if key not in order:
|
||||||
|
del privateDict.rawDict[key]
|
||||||
|
if hasattr(privateDict, key):
|
||||||
|
delattr(privateDict, key)
|
||||||
|
|
||||||
for cs in charStrings.values():
|
for cs in charStrings.values():
|
||||||
cs.decompile()
|
cs.decompile()
|
||||||
cs.program.append("endchar")
|
cs.program.append("endchar")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user