def loadUFOGlyphNames(ufoPath): font = OpenFont(ufoPath) libPlist = PList(os.path.join(ufoPath, 'lib.plist')) orderedNames = libPlist['public.glyphOrder'] # [ 'Omega', ...] # append any glyphs that are missing in orderedNames allNames = set(font.keys()) for name in orderedNames: allNames.discard(name) for name in allNames: orderedNames.append(name) ucToNames = font.getCharacterMapping() # { 2126: [ 'Omega', ...], ...} nameToUc = revCharMap(ucToNames) # { 'Omega': 2126, ...} gol = OrderedDict() # OrderedDict{ ('Omega', 2126|None), ...} for name in orderedNames: gol[name] = nameToUc.get(name) # gol.append((name, nameToUc.get(name))) return gol, ucToNames, nameToUc, libPlist
ufopath = args.ufopath.rstrip('/') font = OpenFont(ufopath) effectiveAscender = max(font.info.ascender, font.info.unitsPerEm) srcdir = os.path.abspath(os.path.join(__file__, '..', '..')) # print('\n'.join(font.keys())) # sys.exit(0) agl = loadAGL(os.path.join(srcdir, 'src', 'glyphlist.txt')) # { 2126: 'Omega', ... } ignoreGlyphs = set(['.notdef', '.null']) glyphnames = args.glyphs if len(args.glyphs) else font.keys() glyphnameSet = set(glyphnames) generatedGlyphNames = set() diacriticComps = loadGlyphCompositions( os.path.join(srcdir, 'src', 'diacritics.txt')) for glyphName, comp in diacriticComps.iteritems(): if glyphName not in glyphnameSet: generatedGlyphNames.add(glyphName) glyphnames.append(glyphName) glyphnameSet.add(glyphName) glyphnames = [gn for gn in glyphnames if gn not in ignoreGlyphs] glyphnames.sort() nameToIdMap, idToNameMap = genGlyphIDs(glyphnames)