[ttFont] Assume GlyphOrder is never modified after setting
See https://github.com/fonttools/fonttools/pull/2398#discussion_r694271551
This commit is contained in:
parent
d5de11d805
commit
ca06c9530c
@ -544,39 +544,23 @@ class TTFont(object):
|
|||||||
|
|
||||||
def getGlyphID(self, glyphName):
|
def getGlyphID(self, glyphName):
|
||||||
glyphOrder = self.getGlyphOrder()
|
glyphOrder = self.getGlyphOrder()
|
||||||
d = self.getReverseGlyphMap()
|
try:
|
||||||
|
return self.getReverseGlyphMap()[glyphName]
|
||||||
glyphID = d.get(glyphName)
|
except KeyError:
|
||||||
|
if glyphName[:5] == "glyph":
|
||||||
if glyphID is None:
|
try:
|
||||||
# TODO This check is really expensive
|
return int(glyphName[5:])
|
||||||
if glyphName in glyphOrder:
|
except (NameError, ValueError):
|
||||||
return self._buildReverseGlyphOrderDict()[glyphName]
|
raise KeyError(glyphName)
|
||||||
else:
|
|
||||||
# Handle glyphXXX only
|
|
||||||
if glyphName[:5] == "glyph":
|
|
||||||
try:
|
|
||||||
return int(glyphName[5:])
|
|
||||||
except (NameError, ValueError):
|
|
||||||
raise KeyError(glyphName)
|
|
||||||
|
|
||||||
if glyphName != glyphOrder[glyphID]:
|
|
||||||
return self._buildReverseGlyphOrderDict()[glyphName]
|
|
||||||
|
|
||||||
return glyphID
|
|
||||||
|
|
||||||
def getGlyphIDMany(self, lst):
|
def getGlyphIDMany(self, lst):
|
||||||
d = self.getReverseGlyphMap()
|
d = self.getReverseGlyphMap()
|
||||||
|
try:
|
||||||
glyphIDs = [d.get(glyphName) for glyphName in lst]
|
return [d[glyphName] for glyphName in lst]
|
||||||
|
except KeyError:
|
||||||
if any(glyphID is None for glyphID in glyphIDs):
|
|
||||||
# TODO Add something faster
|
|
||||||
getGlyphID = self.getGlyphID
|
getGlyphID = self.getGlyphID
|
||||||
return [getGlyphID(glyphName) for glyphName in lst]
|
return [getGlyphID(glyphName) for glyphName in lst]
|
||||||
|
|
||||||
return glyphIDs
|
|
||||||
|
|
||||||
def getReverseGlyphMap(self, rebuild=False):
|
def getReverseGlyphMap(self, rebuild=False):
|
||||||
if rebuild or not hasattr(self, "_reverseGlyphOrderDict"):
|
if rebuild or not hasattr(self, "_reverseGlyphOrderDict"):
|
||||||
self._buildReverseGlyphOrderDict()
|
self._buildReverseGlyphOrderDict()
|
||||||
@ -791,9 +775,9 @@ class GlyphOrder(object):
|
|||||||
def fromXML(self, name, attrs, content, ttFont):
|
def fromXML(self, name, attrs, content, ttFont):
|
||||||
if not hasattr(self, "glyphOrder"):
|
if not hasattr(self, "glyphOrder"):
|
||||||
self.glyphOrder = []
|
self.glyphOrder = []
|
||||||
ttFont.setGlyphOrder(self.glyphOrder)
|
|
||||||
if name == "GlyphID":
|
if name == "GlyphID":
|
||||||
self.glyphOrder.append(attrs["name"])
|
self.glyphOrder.append(attrs["name"])
|
||||||
|
ttFont.setGlyphOrder(self.glyphOrder)
|
||||||
|
|
||||||
|
|
||||||
def getTableModule(tag):
|
def getTableModule(tag):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user