Merge pull request #3688 from fonttools/name_consistency
[varLib] Lets not add mac names if the rest of `name` doesn't have them
This commit is contained in:
commit
4a18869794
@ -918,7 +918,15 @@ class FontBuilder(object):
|
|||||||
"""
|
"""
|
||||||
from .otlLib.builder import buildStatTable
|
from .otlLib.builder import buildStatTable
|
||||||
|
|
||||||
buildStatTable(self.font, axes, locations, elidedFallbackName)
|
assert "name" in self.font, "name must to be set up first"
|
||||||
|
|
||||||
|
buildStatTable(
|
||||||
|
self.font,
|
||||||
|
axes,
|
||||||
|
locations,
|
||||||
|
elidedFallbackName,
|
||||||
|
macNames=any(nr.platformID == 1 for nr in self.font["name"].names),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def buildCmapSubTable(cmapping, format, platformID, platEncID):
|
def buildCmapSubTable(cmapping, format, platformID, platEncID):
|
||||||
@ -938,6 +946,15 @@ def addFvar(font, axes, instances):
|
|||||||
fvar = newTable("fvar")
|
fvar = newTable("fvar")
|
||||||
nameTable = font["name"]
|
nameTable = font["name"]
|
||||||
|
|
||||||
|
# if there are not currently any mac names don't add them here, that's inconsistent
|
||||||
|
# https://github.com/fonttools/fonttools/issues/683
|
||||||
|
macNames = any(nr.platformID == 1 for nr in getattr(nameTable, "names", ()))
|
||||||
|
|
||||||
|
# we have all the best ways to express mac names
|
||||||
|
platforms = ((3, 1, 0x409),)
|
||||||
|
if macNames:
|
||||||
|
platforms = ((1, 0, 0),) + platforms
|
||||||
|
|
||||||
for axis_def in axes:
|
for axis_def in axes:
|
||||||
axis = Axis()
|
axis = Axis()
|
||||||
|
|
||||||
@ -963,7 +980,7 @@ def addFvar(font, axes, instances):
|
|||||||
if isinstance(name, str):
|
if isinstance(name, str):
|
||||||
name = dict(en=name)
|
name = dict(en=name)
|
||||||
|
|
||||||
axis.axisNameID = nameTable.addMultilingualName(name, ttFont=font)
|
axis.axisNameID = nameTable.addMultilingualName(name, ttFont=font, mac=macNames)
|
||||||
fvar.axes.append(axis)
|
fvar.axes.append(axis)
|
||||||
|
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
@ -980,9 +997,11 @@ def addFvar(font, axes, instances):
|
|||||||
name = dict(en=name)
|
name = dict(en=name)
|
||||||
|
|
||||||
inst = NamedInstance()
|
inst = NamedInstance()
|
||||||
inst.subfamilyNameID = nameTable.addMultilingualName(name, ttFont=font)
|
inst.subfamilyNameID = nameTable.addMultilingualName(
|
||||||
|
name, ttFont=font, mac=macNames
|
||||||
|
)
|
||||||
if psname is not None:
|
if psname is not None:
|
||||||
inst.postscriptNameID = nameTable.addName(psname)
|
inst.postscriptNameID = nameTable.addName(psname, platforms=platforms)
|
||||||
inst.coordinates = coordinates
|
inst.coordinates = coordinates
|
||||||
fvar.instances.append(inst)
|
fvar.instances.append(inst)
|
||||||
|
|
||||||
|
@ -85,6 +85,15 @@ def _add_fvar(font, axes, instances: List[InstanceDescriptor]):
|
|||||||
fvar = newTable("fvar")
|
fvar = newTable("fvar")
|
||||||
nameTable = font["name"]
|
nameTable = font["name"]
|
||||||
|
|
||||||
|
# if there are not currently any mac names don't add them here, that's inconsistent
|
||||||
|
# https://github.com/fonttools/fonttools/issues/683
|
||||||
|
macNames = any(nr.platformID == 1 for nr in getattr(nameTable, "names", ()))
|
||||||
|
|
||||||
|
# we have all the best ways to express mac names
|
||||||
|
platforms = ((3, 1, 0x409),)
|
||||||
|
if macNames:
|
||||||
|
platforms = ((1, 0, 0),) + platforms
|
||||||
|
|
||||||
for a in axes.values():
|
for a in axes.values():
|
||||||
axis = Axis()
|
axis = Axis()
|
||||||
axis.axisTag = Tag(a.tag)
|
axis.axisTag = Tag(a.tag)
|
||||||
@ -95,7 +104,7 @@ def _add_fvar(font, axes, instances: List[InstanceDescriptor]):
|
|||||||
a.maximum,
|
a.maximum,
|
||||||
)
|
)
|
||||||
axis.axisNameID = nameTable.addMultilingualName(
|
axis.axisNameID = nameTable.addMultilingualName(
|
||||||
a.labelNames, font, minNameID=256
|
a.labelNames, font, minNameID=256, mac=macNames
|
||||||
)
|
)
|
||||||
axis.flags = int(a.hidden)
|
axis.flags = int(a.hidden)
|
||||||
fvar.axes.append(axis)
|
fvar.axes.append(axis)
|
||||||
@ -121,10 +130,12 @@ def _add_fvar(font, axes, instances: List[InstanceDescriptor]):
|
|||||||
psname = instance.postScriptFontName
|
psname = instance.postScriptFontName
|
||||||
|
|
||||||
inst = NamedInstance()
|
inst = NamedInstance()
|
||||||
inst.subfamilyNameID = nameTable.addMultilingualName(localisedStyleName)
|
inst.subfamilyNameID = nameTable.addMultilingualName(
|
||||||
|
localisedStyleName, mac=macNames
|
||||||
|
)
|
||||||
if psname is not None:
|
if psname is not None:
|
||||||
psname = tostr(psname)
|
psname = tostr(psname)
|
||||||
inst.postscriptNameID = nameTable.addName(psname)
|
inst.postscriptNameID = nameTable.addName(psname, platforms=platforms)
|
||||||
inst.coordinates = {
|
inst.coordinates = {
|
||||||
axes[k].tag: axes[k].map_backward(v) for k, v in coordinates.items()
|
axes[k].tag: axes[k].map_backward(v) for k, v in coordinates.items()
|
||||||
}
|
}
|
||||||
|
@ -408,7 +408,9 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
|
|||||||
if set(excludedUnicodeLangIDs) == set(range(len((varfont["ltag"].tags)))):
|
if set(excludedUnicodeLangIDs) == set(range(len((varfont["ltag"].tags)))):
|
||||||
del varfont["ltag"]
|
del varfont["ltag"]
|
||||||
varfont["name"].names[:] = [
|
varfont["name"].names[:] = [
|
||||||
n for n in varfont["name"].names if n.nameID not in exclude
|
n
|
||||||
|
for n in varfont["name"].names
|
||||||
|
if n.nameID < 256 or n.nameID not in exclude
|
||||||
]
|
]
|
||||||
|
|
||||||
if "wght" in location and "OS/2" in varfont:
|
if "wght" in location and "OS/2" in varfont:
|
||||||
|
@ -39,11 +39,18 @@ def buildVFStatTable(ttFont: TTFont, doc: DesignSpaceDocument, vfName: str) -> N
|
|||||||
|
|
||||||
region = getVFUserRegion(doc, vf)
|
region = getVFUserRegion(doc, vf)
|
||||||
|
|
||||||
|
# if there are not currently any mac names don't add them here, that's inconsistent
|
||||||
|
# https://github.com/fonttools/fonttools/issues/683
|
||||||
|
macNames = any(
|
||||||
|
nr.platformID == 1 for nr in getattr(ttFont.get("name"), "names", ())
|
||||||
|
)
|
||||||
|
|
||||||
return fontTools.otlLib.builder.buildStatTable(
|
return fontTools.otlLib.builder.buildStatTable(
|
||||||
ttFont,
|
ttFont,
|
||||||
getStatAxes(doc, region),
|
getStatAxes(doc, region),
|
||||||
getStatLocations(doc, region),
|
getStatLocations(doc, region),
|
||||||
doc.elidedFallbackName if doc.elidedFallbackName is not None else 2,
|
doc.elidedFallbackName if doc.elidedFallbackName is not None else 2,
|
||||||
|
macNames=macNames,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -177,39 +177,6 @@
|
|||||||
</glyf>
|
</glyf>
|
||||||
|
|
||||||
<name>
|
<name>
|
||||||
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
HelloTestFont
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TotallyNormal
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
HelloTestFont-TotallyNormal
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Left
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="257" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Right
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="258" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Up
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="259" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Down
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="260" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Right Up
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="261" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Neutral
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x4" unicode="True">
|
|
||||||
HalloTestFont
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x4" unicode="True">
|
|
||||||
TotaalNormaal
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||||
HelloTestFont
|
HelloTestFont
|
||||||
</namerecord>
|
</namerecord>
|
||||||
|
@ -236,7 +236,7 @@ def test_build_var(tmpdir):
|
|||||||
fb.setupHorizontalMetrics(metrics)
|
fb.setupHorizontalMetrics(metrics)
|
||||||
|
|
||||||
fb.setupHorizontalHeader(ascent=824, descent=200)
|
fb.setupHorizontalHeader(ascent=824, descent=200)
|
||||||
fb.setupNameTable(nameStrings)
|
fb.setupNameTable(nameStrings, mac=False)
|
||||||
|
|
||||||
axes = [
|
axes = [
|
||||||
("LEFT", 0, 0, 100, "Left"),
|
("LEFT", 0, 0, 100, "Left"),
|
||||||
|
@ -161,42 +161,42 @@
|
|||||||
|
|
||||||
<!-- Regular -->
|
<!-- Regular -->
|
||||||
<!-- PostScript: TestFamily-Regular -->
|
<!-- PostScript: TestFamily-Regular -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="263" subfamilyNameID="262">
|
<NamedInstance flags="0x0" postscriptNameID="262" subfamilyNameID="2">
|
||||||
<coord axis="wght" value="394.0"/>
|
<coord axis="wght" value="394.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Semibold -->
|
<!-- Semibold -->
|
||||||
<!-- PostScript: TestFamily-Semibold -->
|
<!-- PostScript: TestFamily-Semibold -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="265" subfamilyNameID="264">
|
<NamedInstance flags="0x0" postscriptNameID="264" subfamilyNameID="263">
|
||||||
<coord axis="wght" value="600.0"/>
|
<coord axis="wght" value="600.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Bold -->
|
<!-- Bold -->
|
||||||
<!-- PostScript: TestFamily-Bold -->
|
<!-- PostScript: TestFamily-Bold -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="267" subfamilyNameID="266">
|
<NamedInstance flags="0x0" postscriptNameID="266" subfamilyNameID="265">
|
||||||
<coord axis="wght" value="824.0"/>
|
<coord axis="wght" value="824.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Black -->
|
<!-- Black -->
|
||||||
<!-- PostScript: TestFamily-Black -->
|
<!-- PostScript: TestFamily-Black -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="269" subfamilyNameID="268">
|
<NamedInstance flags="0x0" postscriptNameID="268" subfamilyNameID="267">
|
||||||
<coord axis="wght" value="1000.0"/>
|
<coord axis="wght" value="1000.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Black Medium Contrast -->
|
<!-- Black Medium Contrast -->
|
||||||
<!-- PostScript: TestFamily-BlackMediumContrast -->
|
<!-- PostScript: TestFamily-BlackMediumContrast -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="271" subfamilyNameID="270">
|
<NamedInstance flags="0x0" postscriptNameID="270" subfamilyNameID="269">
|
||||||
<coord axis="wght" value="1000.0"/>
|
<coord axis="wght" value="1000.0"/>
|
||||||
<coord axis="cntr" value="50.0"/>
|
<coord axis="cntr" value="50.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Black High Contrast -->
|
<!-- Black High Contrast -->
|
||||||
<!-- PostScript: TestFamily-BlackHighContrast -->
|
<!-- PostScript: TestFamily-BlackHighContrast -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="273" subfamilyNameID="272">
|
<NamedInstance flags="0x0" postscriptNameID="272" subfamilyNameID="271">
|
||||||
<coord axis="wght" value="1000.0"/>
|
<coord axis="wght" value="1000.0"/>
|
||||||
<coord axis="cntr" value="100.0"/>
|
<coord axis="cntr" value="100.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
@ -443,63 +443,6 @@
|
|||||||
<namerecord nameID="257" platformID="0" platEncID="4" langID="0x0">
|
<namerecord nameID="257" platformID="0" platEncID="4" langID="0x0">
|
||||||
کنتراست
|
کنتراست
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Weight
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="257" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Contrast
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="258" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
ExtraLight
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="259" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-ExtraLight
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="260" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Light
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="261" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-Light
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="262" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Regular
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="263" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-Regular
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="264" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Semibold
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="265" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-Semibold
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="266" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Bold
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="267" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-Bold
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="268" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Black
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="269" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-Black
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="270" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Black Medium Contrast
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="271" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-BlackMediumContrast
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="272" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Black High Contrast
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="273" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
TestFamily-BlackHighContrast
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="257" platformID="1" platEncID="0" langID="0x2" unicode="True">
|
|
||||||
Kontrast
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="257" platformID="3" platEncID="1" langID="0x407">
|
<namerecord nameID="257" platformID="3" platEncID="1" langID="0x407">
|
||||||
Kontrast
|
Kontrast
|
||||||
</namerecord>
|
</namerecord>
|
||||||
@ -546,39 +489,36 @@
|
|||||||
TestFamily-Light
|
TestFamily-Light
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="262" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="262" platformID="3" platEncID="1" langID="0x409">
|
||||||
Regular
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="263" platformID="3" platEncID="1" langID="0x409">
|
|
||||||
TestFamily-Regular
|
TestFamily-Regular
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="264" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="263" platformID="3" platEncID="1" langID="0x409">
|
||||||
Semibold
|
Semibold
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="265" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="264" platformID="3" platEncID="1" langID="0x409">
|
||||||
TestFamily-Semibold
|
TestFamily-Semibold
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="266" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="265" platformID="3" platEncID="1" langID="0x409">
|
||||||
Bold
|
Bold
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="267" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="266" platformID="3" platEncID="1" langID="0x409">
|
||||||
TestFamily-Bold
|
TestFamily-Bold
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="268" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="267" platformID="3" platEncID="1" langID="0x409">
|
||||||
Black
|
Black
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="269" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="268" platformID="3" platEncID="1" langID="0x409">
|
||||||
TestFamily-Black
|
TestFamily-Black
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="270" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="269" platformID="3" platEncID="1" langID="0x409">
|
||||||
Black Medium Contrast
|
Black Medium Contrast
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="271" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="270" platformID="3" platEncID="1" langID="0x409">
|
||||||
TestFamily-BlackMediumContrast
|
TestFamily-BlackMediumContrast
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="272" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="271" platformID="3" platEncID="1" langID="0x409">
|
||||||
Black High Contrast
|
Black High Contrast
|
||||||
</namerecord>
|
</namerecord>
|
||||||
<namerecord nameID="273" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="272" platformID="3" platEncID="1" langID="0x409">
|
||||||
TestFamily-BlackHighContrast
|
TestFamily-BlackHighContrast
|
||||||
</namerecord>
|
</namerecord>
|
||||||
</name>
|
</name>
|
||||||
@ -807,42 +747,42 @@
|
|||||||
|
|
||||||
<!-- Regular -->
|
<!-- Regular -->
|
||||||
<!-- PostScript: TestFamily-Regular -->
|
<!-- PostScript: TestFamily-Regular -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="263" subfamilyNameID="262">
|
<NamedInstance flags="0x0" postscriptNameID="262" subfamilyNameID="2">
|
||||||
<coord axis="wght" value="394.0"/>
|
<coord axis="wght" value="394.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Semibold -->
|
<!-- Semibold -->
|
||||||
<!-- PostScript: TestFamily-Semibold -->
|
<!-- PostScript: TestFamily-Semibold -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="265" subfamilyNameID="264">
|
<NamedInstance flags="0x0" postscriptNameID="264" subfamilyNameID="263">
|
||||||
<coord axis="wght" value="600.0"/>
|
<coord axis="wght" value="600.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Bold -->
|
<!-- Bold -->
|
||||||
<!-- PostScript: TestFamily-Bold -->
|
<!-- PostScript: TestFamily-Bold -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="267" subfamilyNameID="266">
|
<NamedInstance flags="0x0" postscriptNameID="266" subfamilyNameID="265">
|
||||||
<coord axis="wght" value="824.0"/>
|
<coord axis="wght" value="824.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Black -->
|
<!-- Black -->
|
||||||
<!-- PostScript: TestFamily-Black -->
|
<!-- PostScript: TestFamily-Black -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="269" subfamilyNameID="268">
|
<NamedInstance flags="0x0" postscriptNameID="268" subfamilyNameID="267">
|
||||||
<coord axis="wght" value="1000.0"/>
|
<coord axis="wght" value="1000.0"/>
|
||||||
<coord axis="cntr" value="0.0"/>
|
<coord axis="cntr" value="0.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Black Medium Contrast -->
|
<!-- Black Medium Contrast -->
|
||||||
<!-- PostScript: TestFamily-BlackMediumContrast -->
|
<!-- PostScript: TestFamily-BlackMediumContrast -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="271" subfamilyNameID="270">
|
<NamedInstance flags="0x0" postscriptNameID="270" subfamilyNameID="269">
|
||||||
<coord axis="wght" value="1000.0"/>
|
<coord axis="wght" value="1000.0"/>
|
||||||
<coord axis="cntr" value="50.0"/>
|
<coord axis="cntr" value="50.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
|
||||||
<!-- Black High Contrast -->
|
<!-- Black High Contrast -->
|
||||||
<!-- PostScript: TestFamily-BlackHighContrast -->
|
<!-- PostScript: TestFamily-BlackHighContrast -->
|
||||||
<NamedInstance flags="0x0" postscriptNameID="273" subfamilyNameID="272">
|
<NamedInstance flags="0x0" postscriptNameID="272" subfamilyNameID="271">
|
||||||
<coord axis="wght" value="1000.0"/>
|
<coord axis="wght" value="1000.0"/>
|
||||||
<coord axis="cntr" value="100.0"/>
|
<coord axis="cntr" value="100.0"/>
|
||||||
</NamedInstance>
|
</NamedInstance>
|
||||||
|
@ -228,9 +228,6 @@
|
|||||||
</glyf>
|
</glyf>
|
||||||
|
|
||||||
<name>
|
<name>
|
||||||
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Weight
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||||
Test Family
|
Test Family
|
||||||
</namerecord>
|
</namerecord>
|
||||||
|
@ -68,9 +68,6 @@
|
|||||||
</gvar>
|
</gvar>
|
||||||
|
|
||||||
<name>
|
<name>
|
||||||
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Weight
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||||
Test Family
|
Test Family
|
||||||
</namerecord>
|
</namerecord>
|
||||||
|
@ -236,9 +236,6 @@
|
|||||||
</glyf>
|
</glyf>
|
||||||
|
|
||||||
<name>
|
<name>
|
||||||
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
|
|
||||||
Weight
|
|
||||||
</namerecord>
|
|
||||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||||
Layer Font
|
Layer Font
|
||||||
</namerecord>
|
</namerecord>
|
||||||
|
@ -3,7 +3,8 @@ from pathlib import Path
|
|||||||
import pytest
|
import pytest
|
||||||
from fontTools.designspaceLib import DesignSpaceDocument
|
from fontTools.designspaceLib import DesignSpaceDocument
|
||||||
from fontTools.designspaceLib.split import Range
|
from fontTools.designspaceLib.split import Range
|
||||||
from fontTools.varLib.stat import getStatAxes, getStatLocations
|
from fontTools.ttLib import TTFont, newTable
|
||||||
|
from fontTools.varLib.stat import buildVFStatTable, getStatAxes, getStatLocations
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@ -189,3 +190,37 @@ def test_getStatLocations(datadir):
|
|||||||
"name": {"en": "Other"},
|
"name": {"en": "Other"},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"with_mac_names",
|
||||||
|
[
|
||||||
|
pytest.param(True, id="with_mac_names"),
|
||||||
|
pytest.param(False, id="without_mac_names"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_buildVFStatTable(datadir, with_mac_names):
|
||||||
|
doc = DesignSpaceDocument.fromfile(datadir / "test_v5.designspace")
|
||||||
|
ttFont = TTFont()
|
||||||
|
|
||||||
|
nameTable = newTable("name")
|
||||||
|
nameTable.names = []
|
||||||
|
ttFont["name"] = nameTable
|
||||||
|
|
||||||
|
if with_mac_names:
|
||||||
|
# addName adds a name string for both Macintosh and Windows platforms by default
|
||||||
|
nameTable.addName("Regular")
|
||||||
|
|
||||||
|
buildVFStatTable(ttFont, doc, vfName="Test_WghtWdth")
|
||||||
|
|
||||||
|
assert "STAT" in ttFont
|
||||||
|
|
||||||
|
name_recs = ttFont["name"].names
|
||||||
|
assert len({nr.nameID for nr in name_recs}) == 15
|
||||||
|
|
||||||
|
# test that mac names don't get added if there weren't any before
|
||||||
|
mac_recs = [nr for nr in name_recs if nr.platformID == 1]
|
||||||
|
if with_mac_names:
|
||||||
|
assert len(mac_recs) > 1
|
||||||
|
else:
|
||||||
|
assert len(mac_recs) == 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user