Merge pull request #1359 from justvanrossum/addmultilingualnames-mac

[name] make addMultilingualNames() add mac names by default
This commit is contained in:
Cosimo Lupo 2019-01-07 09:54:34 +00:00 committed by GitHub
commit 683547dde2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 62 additions and 12 deletions

View File

@ -161,7 +161,8 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
raise ValueError("nameID must be less than 32768")
return nameID
def addMultilingualName(self, names, ttFont=None, nameID=None):
def addMultilingualName(self, names, ttFont=None, nameID=None,
windows=True, mac=True):
"""Add a multilingual name, returning its name ID
'names' is a dictionary with the name in multiple languages,
@ -176,6 +177,9 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
'nameID' is the name ID to be used, or None to let the library
pick an unused name ID.
If 'windows' is True, a platformID=3 name record will be added.
If 'mac' is True, a platformID=1 name record will be added.
"""
if not hasattr(self, 'names'):
self.names = []
@ -184,15 +188,16 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
# TODO: Should minimize BCP 47 language codes.
# https://github.com/fonttools/fonttools/issues/930
for lang, name in sorted(names.items()):
# Apple platforms have been recognizing Windows names
# since early OSX (~2001), so we only add names
# for the Macintosh platform when we cannot not make
# a Windows name. This can happen for exotic BCP47
# language tags that have no Windows language code.
windowsName = _makeWindowsName(name, nameID, lang)
if windowsName is not None:
self.names.append(windowsName)
else:
if windows:
windowsName = _makeWindowsName(name, nameID, lang)
if windowsName is not None:
self.names.append(windowsName)
else:
# We cannot not make a Windows name: make sure we add a
# Mac name as a fallback. This can happen for exotic
# BCP47 language tags that have no Windows language code.
mac = True
if mac:
macName = _makeMacName(name, nameID, lang, ttFont)
if macName is not None:
self.names.append(macName)

View File

@ -109,6 +109,21 @@
</OS_2>
<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="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">
HelloTestFont
</namerecord>

View File

@ -201,6 +201,21 @@
</glyf>
<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="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">
HelloTestFont
</namerecord>

View File

@ -177,6 +177,15 @@
</glyf>
<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>
@ -195,6 +204,12 @@
<namerecord nameID="261" platformID="1" platEncID="0" langID="0x0" unicode="True">
Right Up
</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">
HelloTestFont
</namerecord>

View File

@ -93,12 +93,12 @@ class NameTableTest(unittest.TestCase):
"en": "Width",
"de-CH": "Breite",
"gsw-LI": "Bräiti",
}, ttFont=font)
}, ttFont=font, mac=False)
self.assertEqual(widthID, 256)
xHeightID = nameTable.addMultilingualName({
"en": "X-Height",
"gsw-LI": "X-Hööchi"
}, ttFont=font)
}, ttFont=font, mac=False)
self.assertEqual(xHeightID, 257)
captor.assertRegex("cannot add Windows name in language gsw-LI")
self.assertEqual(names(nameTable), [