You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.1 KiB
39 lines
1.1 KiB
#! /usr/bin/env python3
|
|
|
|
# Sample script to convert legacy cmap subtables to format-4
|
|
# subtables. Note that this is rarely what one needs. You
|
|
# probably need to just drop the legacy subtables if the font
|
|
# already has a format-4 subtable.
|
|
#
|
|
# Other times, you would need to convert a non-Unicode cmap
|
|
# legacy subtable to a Unicode one. In those cases, use the
|
|
# getEncoding() of subtable and use that encoding to map the
|
|
# characters to Unicode... TODO: Extend this script to do that.
|
|
|
|
from fontTools.ttLib import TTFont
|
|
from fontTools.ttLib.tables._c_m_a_p import CmapSubtable
|
|
import sys
|
|
|
|
if len(sys.argv) != 3:
|
|
print("usage: cmap-format.py fontfile.ttf outfile.ttf")
|
|
sys.exit(1)
|
|
fontfile = sys.argv[1]
|
|
outfile = sys.argv[2]
|
|
font = TTFont(fontfile)
|
|
|
|
cmap = font['cmap']
|
|
outtables = []
|
|
for table in cmap.tables:
|
|
if table.format in [4, 12, 13, 14]:
|
|
outtables.append(table)
|
|
# Convert ot format4
|
|
newtable = CmapSubtable.newSubtable(4)
|
|
newtable.platformID = table.platformID
|
|
newtable.platEncID = table.platEncID
|
|
newtable.language = table.language
|
|
newtable.cmap = table.cmap
|
|
outtables.append(newtable)
|
|
cmap.tables = outtables
|
|
|
|
font.save(outfile)
|