don't get glyph names from CFF it it's a CID-keyed font; invent glyph name on the spot if glyphID is too high (dubious change..).

git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@224 4cde692c-a291-49d1-8350-778aa11640f8
This commit is contained in:
jvr 2002-05-13 11:26:38 +00:00
parent a2a75b348d
commit 0b63b28615

View File

@ -42,7 +42,7 @@ Dumping 'prep' table...
""" """
# #
# $Id: __init__.py,v 1.25 2002-05-12 17:14:50 jvr Exp $ # $Id: __init__.py,v 1.26 2002-05-13 11:26:38 jvr Exp $
# #
import os import os
@ -335,8 +335,12 @@ class TTFont:
except AttributeError: except AttributeError:
pass pass
if self.has_key('CFF '): if self.has_key('CFF '):
# CFF OpenType font cff = self['CFF ']
self.glyphOrder = self['CFF '].getGlyphOrder() if cff.haveGlyphNames():
self.glyphOrder = cff.getGlyphOrder()
else:
# CID-keyed font, use cmap
self._getGlyphNamesFromCmap()
elif self.has_key('post'): elif self.has_key('post'):
# TrueType font # TrueType font
glyphOrder = self['post'].getGlyphOrder() glyphOrder = self['post'].getGlyphOrder()
@ -443,7 +447,12 @@ class TTFont:
return textTools.caselessSort(self.getGlyphOrder()) return textTools.caselessSort(self.getGlyphOrder())
def getGlyphName(self, glyphID): def getGlyphName(self, glyphID):
return self.getGlyphOrder()[glyphID] try:
return self.getGlyphOrder()[glyphID]
except IndexError:
# XXX The ??.W8.otf font that ships with OSX uses higher glyphIDs in
# the cmap table than there are glyphs. I don't think it's legal...
return "glyph%.5d" % glyphID
def getGlyphID(self, glyphName): def getGlyphID(self, glyphName):
if not hasattr(self, "_reverseGlyphOrderDict"): if not hasattr(self, "_reverseGlyphOrderDict"):