whichLayer = OneList(layers, message) return int(whichLayer) fontToChange = CurrentFont() if not hasMM(fontToChange.naked()): Message('Font needs to be MM') else: orignalMetricsFont = OpenFont(None, "Which font's sidebearings do you want?") orignalMetrics = {} tickCount = len(orignalMetricsFont) bar = ProgressBar('Getting metrics', tickCount) tick = 0 if hasMM(orignalMetricsFont.naked()): layer = getLayer(orignalMetricsFont.naked(), 'Which layer do you want?') for glyph in orignalMetricsFont: advanceWidth = int(glyph.naked().GetMetrics(layer).x) glyphWidth = int(glyph.naked().GetBoundingRect(layer).width) glyphLeft = int(glyph.naked().GetBoundingRect(layer).x) glyphRight = advanceWidth - (glyphWidth + glyphLeft) orignalMetrics[glyph.name] = [glyphLeft, glyphRight] bar.tick(tick) tick = tick + 1 bar.close() orignalMetricsFont.close() else: for glyph in orignalMetricsFont: orignalMetrics[glyph.name] = [glyph.leftMargin, glyph.rightMargin]
layers.append(numberOfLayers) numberOfLayers = numberOfLayers - 1 whichLayer = OneList(layers, message) return int(whichLayer) fontToChange = CurrentFont() if not hasMM(fontToChange.naked()): Message('Font needs to be MM') else: orignalMetricsFont = OpenFont(None, "Which font's sidebearings do you want?") orignalMetrics = {} tickCount = len(orignalMetricsFont) bar = ProgressBar('Getting metrics', tickCount) tick = 0 if hasMM(orignalMetricsFont.naked()): layer = getLayer(orignalMetricsFont.naked(), 'Which layer do you want?') for glyph in orignalMetricsFont: advanceWidth = int(glyph.naked().GetMetrics(layer).x) glyphWidth = int(glyph.naked().GetBoundingRect(layer).width) glyphLeft = int(glyph.naked().GetBoundingRect(layer).x) glyphRight = advanceWidth - (glyphWidth + glyphLeft) orignalMetrics[glyph.name] = [glyphLeft, glyphRight] bar.tick(tick) tick = tick+1 bar.close() orignalMetricsFont.close() else: for glyph in orignalMetricsFont: orignalMetrics[glyph.name] = [glyph.leftMargin, glyph.rightMargin] bar.tick(tick)
gs = GlyphSet(path, glyphNameToFileNameFunc=glyphNameToShortFileName) for g in f: print "saving glyph %s in %s"%(g.name, path) gs.writeGlyph(g.name, g, g.drawPoints) gs.writeContents() # make a new writer u = UFOWriter(ufoPath) # font info print "exporting font info.." u.writeInfo(f.info) # features print "exporting features.." glyphOrder = [] for nakedGlyph in f.naked().glyphs: glyph = RGlyph(nakedGlyph) glyphOrder.append(glyph.name) assert None not in glyphOrder, glyphOrder # We make a shallow copy if lib, since we add some stuff for export # that doesn't need to be retained in memory. fontLib = dict(f.lib) if supportHints: psh = PostScriptFontHintValues(f) d = psh.asDict() fontLib[postScriptHintDataLibKey] = d fontLib["org.robofab.glyphOrder"] = glyphOrder f._writeOpenTypeFeaturesToLib(fontLib) print "fontLib", fontLib