def test_setupTable_CFF_no_blues_defined(self, testufo): # no blue values defined testufo.info.postscriptBlueValues = [] testufo.info.postscriptOtherBlues = [] testufo.info.postscriptFamilyBlues = [] testufo.info.postscriptFamilyOtherBlues = [] # the following attributes have no effect testufo.info.postscriptBlueFuzz = 2 testufo.info.postscriptBlueShift = 8 testufo.info.postscriptBlueScale = 0.049736 testufo.info.postscriptForceBold = False compiler = OutlineOTFCompiler(testufo) compiler.otf = TTFont(sfntVersion="OTTO") compiler.setupTable_CFF() cff = compiler.otf["CFF "].cff private = cff[list(cff.keys())[0]].Private # expect default values as defined in fontTools' cffLib.py assert private.BlueFuzz == 1 assert private.BlueShift == 7 assert private.BlueScale == 0.039625 assert private.ForceBold == 0 # CFF PrivateDict has no blues attributes assert not hasattr(private, "BlueValues") assert not hasattr(private, "OtherBlues") assert not hasattr(private, "FamilyBlues") assert not hasattr(private, "FamilyOtherBlues")
def test_setupTable_CFF_all_blues_defined(self, testufo): testufo.info.postscriptBlueFuzz = 2 testufo.info.postscriptBlueShift = 8 testufo.info.postscriptBlueScale = 0.049736 testufo.info.postscriptForceBold = False testufo.info.postscriptBlueValues = [-12, 0, 486, 498, 712, 724] testufo.info.postscriptOtherBlues = [-217, -205] testufo.info.postscriptFamilyBlues = [-12, 0, 486, 498, 712, 724] testufo.info.postscriptFamilyOtherBlues = [-217, -205] compiler = OutlineOTFCompiler(testufo) compiler.otf = TTFont(sfntVersion="OTTO") compiler.setupTable_CFF() cff = compiler.otf["CFF "].cff private = cff[list(cff.keys())[0]].Private assert private.BlueFuzz == 2 assert private.BlueShift == 8 assert private.BlueScale == 0.049736 assert private.ForceBold == 0 assert private.BlueValues == [-12, 0, 486, 498, 712, 724] assert private.OtherBlues == [-217, -205] assert private.FamilyBlues == [-12, 0, 486, 498, 712, 724] assert private.FamilyOtherBlues == [-217, -205]
def test_setupTable_CFF_no_blues_defined(self): # no blue values defined self.ufo.info.postscriptBlueValues = [] self.ufo.info.postscriptOtherBlues = [] self.ufo.info.postscriptFamilyBlues = [] self.ufo.info.postscriptFamilyOtherBlues = [] # the following attributes have no effect self.ufo.info.postscriptBlueFuzz = 2 self.ufo.info.postscriptBlueShift = 8 self.ufo.info.postscriptBlueScale = 0.049736 self.ufo.info.postscriptForceBold = False compiler = OutlineOTFCompiler(self.ufo) compiler.otf = TTFont(sfntVersion="OTTO") compiler.setupTable_CFF() cff = compiler.otf["CFF "].cff private = cff[list(cff.keys())[0]].Private # expect default values as defined in fontTools' cffLib.py self.assertEqual(private.BlueFuzz, 1) self.assertEqual(private.BlueShift, 7) self.assertEqual(private.BlueScale, 0.039625) self.assertEqual(private.ForceBold, False) # CFF PrivateDict has no blues attributes self.assertFalse(hasattr(private, "BlueValues")) self.assertFalse(hasattr(private, "OtherBlues")) self.assertFalse(hasattr(private, "FamilyBlues")) self.assertFalse(hasattr(private, "FamilyOtherBlues"))
def test_setupTable_CFF_all_blues_defined(self): self.ufo.info.postscriptBlueFuzz = 2 self.ufo.info.postscriptBlueShift = 8 self.ufo.info.postscriptBlueScale = 0.049736 self.ufo.info.postscriptForceBold = False self.ufo.info.postscriptBlueValues = [-12, 0, 486, 498, 712, 724] self.ufo.info.postscriptOtherBlues = [-217, -205] self.ufo.info.postscriptFamilyBlues = [-12, 0, 486, 498, 712, 724] self.ufo.info.postscriptFamilyOtherBlues = [-217, -205] compiler = OutlineOTFCompiler(self.ufo) compiler.otf = TTFont(sfntVersion="OTTO") compiler.setupTable_CFF() cff = compiler.otf["CFF "].cff private = cff[list(cff.keys())[0]].Private self.assertEqual(private.BlueFuzz, 2) self.assertEqual(private.BlueShift, 8) self.assertEqual(private.BlueScale, 0.049736) self.assertEqual(private.ForceBold, False) self.assertEqual(private.BlueValues, [-12, 0, 486, 498, 712, 724]) self.assertEqual(private.OtherBlues, [-217, -205]) self.assertEqual(private.FamilyBlues, [-12, 0, 486, 498, 712, 724]) self.assertEqual(private.FamilyOtherBlues, [-217, -205])
def test_optimized_default_and_nominal_widths(self, FontClass): ufo = FontClass() ufo.info.unitsPerEm = 1000 for glyphName, width in ( (".notdef", 500), ("space", 250), ("a", 388), ("b", 410), ("c", 374), ("d", 374), ("e", 388), ("f", 410), ("g", 388), ("h", 410), ("i", 600), ("j", 600), ("k", 600), ("l", 600), ): glyph = ufo.newGlyph(glyphName) glyph.width = width compiler = OutlineOTFCompiler(ufo) compiler.otf = TTFont(sfntVersion="OTTO") compiler.setupTable_hmtx() compiler.setupTable_CFF() cff = compiler.otf["CFF "].cff topDict = cff[list(cff.keys())[0]] private = topDict.Private assert private.defaultWidthX == 600 assert private.nominalWidthX == 303 charStrings = topDict.CharStrings # the following have width == defaultWidthX, so it's omitted for g in ("i", "j", "k", "l"): assert charStrings.getItemAndSelector(g)[0].program == ["endchar"] # 'space' has width 250, so the width encoded in its charstring is: # 250 - nominalWidthX assert charStrings.getItemAndSelector("space")[0].program == [ -53, "endchar" ]
def test_setupTable_CFF_some_blues_defined(self, testufo): testufo.info.postscriptBlueFuzz = 2 testufo.info.postscriptForceBold = True testufo.info.postscriptBlueValues = [] testufo.info.postscriptOtherBlues = [-217, -205] testufo.info.postscriptFamilyBlues = [] testufo.info.postscriptFamilyOtherBlues = [] compiler = OutlineOTFCompiler(testufo) compiler.otf = TTFont(sfntVersion="OTTO") compiler.setupTable_CFF() cff = compiler.otf["CFF "].cff private = cff[list(cff.keys())[0]].Private assert private.BlueFuzz == 2 assert private.BlueShift == 7 # default assert private.BlueScale == 0.039625 # default assert private.ForceBold is True assert not hasattr(private, "BlueValues") assert private.OtherBlues == [-217, -205] assert not hasattr(private, "FamilyBlues") assert not hasattr(private, "FamilyOtherBlues")
def test_setupTable_CFF_some_blues_defined(self): self.ufo.info.postscriptBlueFuzz = 2 self.ufo.info.postscriptForceBold = True self.ufo.info.postscriptBlueValues = [] self.ufo.info.postscriptOtherBlues = [-217, -205] self.ufo.info.postscriptFamilyBlues = [] self.ufo.info.postscriptFamilyOtherBlues = [] compiler = OutlineOTFCompiler(self.ufo) compiler.otf = TTFont(sfntVersion="OTTO") compiler.setupTable_CFF() cff = compiler.otf["CFF "].cff private = cff[list(cff.keys())[0]].Private self.assertEqual(private.BlueFuzz, 2) self.assertEqual(private.BlueShift, 7) # default self.assertEqual(private.BlueScale, 0.039625) # default self.assertEqual(private.ForceBold, True) self.assertFalse(hasattr(private, "BlueValues")) self.assertEqual(private.OtherBlues, [-217, -205]) self.assertFalse(hasattr(private, "FamilyBlues")) self.assertFalse(hasattr(private, "FamilyOtherBlues"))