diff --git a/Lib/fontTools/otlLib/builder.py b/Lib/fontTools/otlLib/builder.py index 16bd19c10..bdf4e7c7f 100644 --- a/Lib/fontTools/otlLib/builder.py +++ b/Lib/fontTools/otlLib/builder.py @@ -2649,7 +2649,7 @@ AXIS_VALUE_NEGATIVE_INFINITY = fixedToFloat(-0x80000000, 16) AXIS_VALUE_POSITIVE_INFINITY = fixedToFloat(0x7FFFFFFF, 16) -def buildStatTable(ttFont, axes, locations=None, elidedFallbackName=2, platforms=((1, 0, 0), (3, 1, 0x409))): +def buildStatTable(ttFont, axes, locations=None, elidedFallbackName=2, windows=True, mac=True): """Add a 'STAT' table to 'ttFont'. 'axes' is a list of dictionaries describing axes and their @@ -2734,17 +2734,17 @@ def buildStatTable(ttFont, axes, locations=None, elidedFallbackName=2, platforms ttFont["STAT"] = ttLib.newTable("STAT") statTable = ttFont["STAT"].table = ot.STAT() nameTable = ttFont["name"] - statTable.ElidedFallbackNameID = _addName(nameTable, elidedFallbackName, platforms=platforms) + statTable.ElidedFallbackNameID = _addName(nameTable, elidedFallbackName, windows=windows, mac=mac) # 'locations' contains data for AxisValue Format 4 - axisRecords, axisValues = _buildAxisRecords(axes, nameTable, platforms=platforms) + axisRecords, axisValues = _buildAxisRecords(axes, nameTable, windows=windows, mac=mac) if not locations: statTable.Version = 0x00010001 else: # We'll be adding Format 4 AxisValue records, which # requires a higher table version statTable.Version = 0x00010002 - multiAxisValues = _buildAxisValuesFormat4(locations, axes, nameTable, platforms=platforms) + multiAxisValues = _buildAxisValuesFormat4(locations, axes, nameTable, windows=windows, mac=mac) axisValues = multiAxisValues + axisValues # Store AxisRecords @@ -2763,13 +2763,13 @@ def buildStatTable(ttFont, axes, locations=None, elidedFallbackName=2, platforms statTable.AxisValueCount = len(axisValues) -def _buildAxisRecords(axes, nameTable, platforms=((1, 0, 0), (3, 1, 0x409))): +def _buildAxisRecords(axes, nameTable, windows=True, mac=True): axisRecords = [] axisValues = [] for axisRecordIndex, axisDict in enumerate(axes): axis = ot.AxisRecord() axis.AxisTag = axisDict["tag"] - axis.AxisNameID = _addName(nameTable, axisDict["name"], 256, platforms=platforms) + axis.AxisNameID = _addName(nameTable, axisDict["name"], 256, windows=windows, mac=mac) axis.AxisOrdering = axisDict.get("ordering", axisRecordIndex) axisRecords.append(axis) @@ -2777,7 +2777,7 @@ def _buildAxisRecords(axes, nameTable, platforms=((1, 0, 0), (3, 1, 0x409))): axisValRec = ot.AxisValue() axisValRec.AxisIndex = axisRecordIndex axisValRec.Flags = axisVal.get("flags", 0) - axisValRec.ValueNameID = _addName(nameTable, axisVal["name"], platforms=platforms) + axisValRec.ValueNameID = _addName(nameTable, axisVal["name"], windows=windows, mac=mac) if "value" in axisVal: axisValRec.Value = axisVal["value"] @@ -2802,7 +2802,7 @@ def _buildAxisRecords(axes, nameTable, platforms=((1, 0, 0), (3, 1, 0x409))): return axisRecords, axisValues -def _buildAxisValuesFormat4(locations, axes, nameTable, platforms=((1, 0, 0), (3, 1, 0x409))): +def _buildAxisValuesFormat4(locations, axes, nameTable, windows=True, mac=True): axisTagToIndex = {} for axisRecordIndex, axisDict in enumerate(axes): axisTagToIndex[axisDict["tag"]] = axisRecordIndex @@ -2811,7 +2811,7 @@ def _buildAxisValuesFormat4(locations, axes, nameTable, platforms=((1, 0, 0), (3 for axisLocationDict in locations: axisValRec = ot.AxisValue() axisValRec.Format = 4 - axisValRec.ValueNameID = _addName(nameTable, axisLocationDict["name"], platforms=platforms) + axisValRec.ValueNameID = _addName(nameTable, axisLocationDict["name"], windows=windows, mac=mac) axisValRec.Flags = axisLocationDict.get("flags", 0) axisValueRecords = [] for tag, value in axisLocationDict["location"].items(): @@ -2826,7 +2826,7 @@ def _buildAxisValuesFormat4(locations, axes, nameTable, platforms=((1, 0, 0), (3 return axisValues -def _addName(nameTable, value, minNameID=0, platforms=((1, 0, 0), (3, 1, 0x409))): +def _addName(nameTable, value, minNameID=0, windows=True, mac=True): if isinstance(value, int): # Already a nameID return value @@ -2851,6 +2851,4 @@ def _addName(nameTable, value, minNameID=0, platforms=((1, 0, 0), (3, 1, 0x409)) else: raise TypeError("value must be int, str, dict or list") - _mac = True if (1, 0, 0) in platforms else False - _win = True if (3, 1, 0x409) in platforms else False - return nameTable.addMultilingualName(names, windows=_win, mac=_mac, minNameID=minNameID) + return nameTable.addMultilingualName(names, windows=windows, mac=mac, minNameID=minNameID) diff --git a/Tests/otlLib/builder_test.py b/Tests/otlLib/builder_test.py index aac8ab57c..a9119f8a3 100644 --- a/Tests/otlLib/builder_test.py +++ b/Tests/otlLib/builder_test.py @@ -1475,7 +1475,7 @@ def test_buildStatTable_name_duplicates(): expected_names = [x.string for x in font_obj["name"].names] - builder.buildStatTable(font_obj, AXES, platforms=((3, 1, 0x409),)) + builder.buildStatTable(font_obj, AXES, windows=True, mac=False) actual_names = [x.string for x in font_obj["name"].names] assert expected_names == actual_names