From a95c991daa4cf4811b6264f9c42dc041da2f1946 Mon Sep 17 00:00:00 2001 From: Rasmus Andersson Date: Sat, 17 Feb 2018 19:53:57 -0800 Subject: Adjust italic angle from 10 to 12 and change spacing delta to -8 --- misc/pylib/fontbuild/Build.pyx | 41 ++++++++++++++++++++++++++++------------ misc/pylib/fontbuild/italics.pyx | 4 ++-- 2 files changed, 31 insertions(+), 14 deletions(-) (limited to 'misc/pylib/fontbuild') diff --git a/misc/pylib/fontbuild/Build.pyx b/misc/pylib/fontbuild/Build.pyx index 81407d97f..567e1a4c9 100644 --- a/misc/pylib/fontbuild/Build.pyx +++ b/misc/pylib/fontbuild/Build.pyx @@ -16,6 +16,7 @@ import ConfigParser import os import sys +import math from booleanOperations import BooleanOperationManager @@ -86,7 +87,7 @@ class FontProject: return os.path.join(path, "%s-%s.%s" % (family, style, ext)) def generateFont(self, mix, names, italic=False, swapSuffixes=None, stemWidth=185, - italicMeanYCenter=-825, italicNarrowAmount=1, panose=[]): + italicMeanYCenter=-825, scaleX=1, panose=[]): n = names.split("/") log("---------------------\n%s, %s\n----------------------" %(n[0],n[1])) @@ -109,16 +110,15 @@ class FontProject: i += 1 if i % 10 == 0: print g.name - if g.name in self.lessItalic: - italicizeGlyph(f, g, 9, stemWidth=stemWidth, - meanYCenter=italicMeanYCenter, - narrowAmount=italicNarrowAmount) - elif g.name not in self.noItalic: - italicizeGlyph(f, g, 10, stemWidth=stemWidth, - meanYCenter=italicMeanYCenter, - narrowAmount=italicNarrowAmount) - if g.width != 0: - g.width += 10 + if g.name not in self.noItalic: + if g.name in self.lessItalic: + italicizeGlyph(f, g, 10, stemWidth=stemWidth, + meanYCenter=italicMeanYCenter, + scaleX=scaleX) + else: + italicizeGlyph(f, g, 12, stemWidth=stemWidth, + meanYCenter=italicMeanYCenter, + scaleX=scaleX) # set the oblique flag in fsSelection f.info.openTypeOS2Selection.append(9) @@ -144,6 +144,23 @@ class FontProject: generateGlyphs(f, self.diacriticList, self.adobeGlyphList) # log(">> Reading features") # readFeatureFile(f, f.features.text) + + # adjust width of italic glyphs + if italic == True: + widthAdjustment = -8 + leftAdjustment = math.floor(widthAdjustment / 2) + rightAdjustment = math.ceil(widthAdjustment / 2) + for g in f: + if g.name not in self.noItalic: + if g.width != 0: + if g.box is None: + g.width += widthAdjustment + else: + newLeftMargin = int(g.leftMargin + leftAdjustment) + newRightMargin = int(g.rightMargin + rightAdjustment) + g.leftMargin = newLeftMargin + g.rightMargin = newRightMargin + log(">> Decomposing") # for g in f: # if len(g.components) > 0: @@ -151,7 +168,7 @@ class FontProject: for gname in self.decompose: if f.has_key(gname): decomposeGlyph(f, f[gname]) - + copyrightHolderName = '' if self.config.has_option('main', 'copyrightHolderName'): copyrightHolderName = self.config.get('main', 'copyrightHolderName') diff --git a/misc/pylib/fontbuild/italics.pyx b/misc/pylib/fontbuild/italics.pyx index 522336197..769586f40 100644 --- a/misc/pylib/fontbuild/italics.pyx +++ b/misc/pylib/fontbuild/italics.pyx @@ -26,7 +26,7 @@ from fontbuild.alignpoints import alignCorners from fontbuild.curveFitPen import fitGlyph, segmentGlyph -def italicizeGlyph(f, g, angle=10, stemWidth=185, meanYCenter=-825, narrowAmount=1): +def italicizeGlyph(f, g, angle=10, stemWidth=185, meanYCenter=-825, scaleX=1): unic = g.unicode #save unicode glyph = f[g.name] @@ -39,7 +39,7 @@ def italicizeGlyph(f, g, angle=10, stemWidth=185, meanYCenter=-825, narrowAmount # and -825 for a 2816 unit em square. (UPM*0.29296875) m = Transform(1, 0, slope, 1, 0, 0) xoffset, junk = m.transformPoint((0, meanYCenter)) - m = Transform(narrowAmount, 0, slope, 1, xoffset, 0) + m = Transform(scaleX, 0, slope, 1, xoffset, 0) if len(glyph) > 0: g2 = italicize(f[g.name], angle, xoffset=xoffset, stemWidth=stemWidth) -- cgit v1.2.3