[name] make addMultilingualName() also add Mac names by default.

This commit is contained in:
justvanrossum 2018-11-02 11:56:22 +01:00
parent 364a578c1d
commit 8841d98652
3 changed files with 45 additions and 10 deletions

View File

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

View File

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

View File

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