Exemplo n.º 1
0
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
Exemplo n.º 2
0
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)