[feaLib] Sort name table entries in builder

This patch ensures that feaLib always produces a name table with entries
sorted in the order proscribed by the spec: platform id, encoding id,
language id, name id.

This breaks some tests, and so I have manually updated the test data to
match the new outputs.
This commit is contained in:
Colin Rofls 2022-12-12 19:09:21 -05:00
parent 164d6ead03
commit 4716f85731
7 changed files with 39 additions and 38 deletions

View File

@ -446,6 +446,7 @@ class Builder(object):
assert self.cv_parameters_ids_[tag] is not None assert self.cv_parameters_ids_[tag] is not None
nameID = self.cv_parameters_ids_[tag] nameID = self.cv_parameters_ids_[tag]
table.setName(string, nameID, platformID, platEncID, langID) table.setName(string, nameID, platformID, platEncID, langID)
table.names.sort()
def build_OS_2(self): def build_OS_2(self):
if not self.os2_: if not self.os2_:

View File

@ -260,8 +260,8 @@ Famira, Sam Fishman, Matt Fontaine, Takaaki Fuji, Yannis Haralambous, Greg
Hitchcock, Jeremie Hornus, Khaled Hosny, John Hudson, Denis Moyogo Jacquerye, Hitchcock, Jeremie Hornus, Khaled Hosny, John Hudson, Denis Moyogo Jacquerye,
Jack Jansen, Tom Kacvinsky, Jens Kutilek, Antoine Leca, Werner Lemberg, Tal Jack Jansen, Tom Kacvinsky, Jens Kutilek, Antoine Leca, Werner Lemberg, Tal
Leming, Peter Lofting, Cosimo Lupo, Olli Meier, Masaya Nakamura, Dave Opstad, Leming, Peter Lofting, Cosimo Lupo, Olli Meier, Masaya Nakamura, Dave Opstad,
Laurence Penney, Roozbeh Pournader, Garret Rieger, Read Roberts, Guido Laurence Penney, Roozbeh Pournader, Garret Rieger, Read Roberts, Colin Rofls,
van Rossum, Just van Rossum, Andreas Seidel, Georg Seifert, Chris Guido van Rossum, Just van Rossum, Andreas Seidel, Georg Seifert, Chris
Simpkins, Miguel Sousa, Adam Twardoch, Adrien Tétar, Vitaly Volkov, Simpkins, Miguel Sousa, Adam Twardoch, Adrien Tétar, Vitaly Volkov,
Paul Wise. Paul Wise.

View File

@ -2,6 +2,15 @@
<ttFont> <ttFont>
<name> <name>
<namerecord nameID="8" platformID="1" platEncID="0" langID="0x0" unicode="True">
Test8
</namerecord>
<namerecord nameID="10" platformID="1" platEncID="0" langID="0x0" unicode="True">
Test10
</namerecord>
<namerecord nameID="11" platformID="1" platEncID="0" langID="0x0" unicode="True">
Test11
</namerecord>
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
Test1 Test1
</namerecord> </namerecord>
@ -23,18 +32,9 @@
<namerecord nameID="7" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="7" platformID="3" platEncID="1" langID="0x409">
Test7 Test7
</namerecord> </namerecord>
<namerecord nameID="8" platformID="1" platEncID="0" langID="0x0" unicode="True">
Test8
</namerecord>
<namerecord nameID="9" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="9" platformID="3" platEncID="1" langID="0x409">
Test9 Test9
</namerecord> </namerecord>
<namerecord nameID="10" platformID="1" platEncID="0" langID="0x0" unicode="True">
Test10
</namerecord>
<namerecord nameID="11" platformID="1" platEncID="0" langID="0x0" unicode="True">
Test11
</namerecord>
</name> </name>
</ttFont> </ttFont>

View File

@ -2,15 +2,15 @@
<ttFont> <ttFont>
<name> <name>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
Win MinionPro Size Name
</namerecord>
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True"> <namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
Mac MinionPro Size Name Mac MinionPro Size Name
</namerecord> </namerecord>
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x5" unicode="True"> <namerecord nameID="256" platformID="1" platEncID="0" langID="0x5" unicode="True">
Mac MinionPro Size Name Mac MinionPro Size Name
</namerecord> </namerecord>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
Win MinionPro Size Name
</namerecord>
</name> </name>
<GPOS> <GPOS>
@ -37,7 +37,7 @@
<FeatureParamsSize> <FeatureParamsSize>
<DesignSize value="10.0"/> <DesignSize value="10.0"/>
<SubfamilyID value="3"/> <SubfamilyID value="3"/>
<SubfamilyNameID value="256"/> <!-- Win MinionPro Size Name --> <SubfamilyNameID value="256"/> <!-- Mac MinionPro Size Name -->
<RangeStart value="8.0"/> <RangeStart value="8.0"/>
<RangeEnd value="13.9"/> <RangeEnd value="13.9"/>
</FeatureParamsSize> </FeatureParamsSize>

View File

@ -2,18 +2,18 @@
<ttFont> <ttFont>
<name> <name>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
Feature description for MS Platform, script Unicode, language English
</namerecord>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x411">
Feature description for MS Platform, script Unicode, language Japanese
</namerecord>
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True"> <namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
Feature description for Apple Platform, script Roman, language unspecified Feature description for Apple Platform, script Roman, language unspecified
</namerecord> </namerecord>
<namerecord nameID="256" platformID="1" platEncID="1" langID="0xc" unicode="True"> <namerecord nameID="256" platformID="1" platEncID="1" langID="0xc" unicode="True">
Feature description for Apple Platform, script Japanese, language Japanese Feature description for Apple Platform, script Japanese, language Japanese
</namerecord> </namerecord>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
Feature description for MS Platform, script Unicode, language English
</namerecord>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x411">
Feature description for MS Platform, script Unicode, language Japanese
</namerecord>
</name> </name>
<GSUB> <GSUB>
@ -39,7 +39,7 @@
<Feature> <Feature>
<FeatureParamsStylisticSet> <FeatureParamsStylisticSet>
<Version value="0"/> <Version value="0"/>
<UINameID value="256"/> <!-- Feature description for MS Platform, script Unicode, language English --> <UINameID value="256"/> <!-- Feature description for Apple Platform, script Roman, language unspecified -->
</FeatureParamsStylisticSet> </FeatureParamsStylisticSet>
<!-- LookupCount=1 --> <!-- LookupCount=1 -->
<LookupListIndex index="0" value="0"/> <LookupListIndex index="0" value="0"/>

View File

@ -2,36 +2,36 @@
<ttFont> <ttFont>
<name> <name>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
uilabel simple a uilabel simple a
</namerecord> </namerecord>
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True"> <namerecord nameID="257" platformID="1" platEncID="0" langID="0x0" unicode="True">
tool tip simple a
</namerecord>
<namerecord nameID="258" platformID="1" platEncID="0" langID="0x0" unicode="True">
sample text simple a
</namerecord>
<namerecord nameID="259" platformID="1" platEncID="0" langID="0x0" unicode="True">
param1 text simple a
</namerecord>
<namerecord nameID="260" platformID="1" platEncID="0" langID="0x0" unicode="True">
param2 text simple a
</namerecord>
<namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
uilabel simple a uilabel simple a
</namerecord> </namerecord>
<namerecord nameID="257" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="257" platformID="3" platEncID="1" langID="0x409">
tool tip simple a tool tip simple a
</namerecord> </namerecord>
<namerecord nameID="257" platformID="1" platEncID="0" langID="0x0" unicode="True">
tool tip simple a
</namerecord>
<namerecord nameID="258" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="258" platformID="3" platEncID="1" langID="0x409">
sample text simple a sample text simple a
</namerecord> </namerecord>
<namerecord nameID="258" platformID="1" platEncID="0" langID="0x0" unicode="True">
sample text simple a
</namerecord>
<namerecord nameID="259" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="259" platformID="3" platEncID="1" langID="0x409">
param1 text simple a param1 text simple a
</namerecord> </namerecord>
<namerecord nameID="259" platformID="1" platEncID="0" langID="0x0" unicode="True">
param1 text simple a
</namerecord>
<namerecord nameID="260" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="260" platformID="3" platEncID="1" langID="0x409">
param2 text simple a param2 text simple a
</namerecord> </namerecord>
<namerecord nameID="260" platformID="1" platEncID="0" langID="0x0" unicode="True">
param2 text simple a
</namerecord>
</name> </name>
<GSUB> <GSUB>

View File

@ -2,10 +2,10 @@
<ttFont> <ttFont>
<name> <name>
<namerecord nameID="9" platformID="3" platEncID="1" langID="0x409"> <namerecord nameID="9" platformID="1" platEncID="0" langID="0x0" unicode="True">
Joachim Müller-Lancé Joachim Müller-Lancé
</namerecord> </namerecord>
<namerecord nameID="9" platformID="1" platEncID="0" langID="0x0" unicode="True"> <namerecord nameID="9" platformID="3" platEncID="1" langID="0x409">
Joachim Müller-Lancé Joachim Müller-Lancé
</namerecord> </namerecord>
</name> </name>