[Snippets] Add script for cmap subtable format conversion
Fixes https://github.com/behdad/fonttools/issues/340
This commit is contained in:
parent
b23d7cba8c
commit
b7e2391e66
40
Snippets/cmap-format.py
Executable file
40
Snippets/cmap-format.py
Executable file
@ -0,0 +1,40 @@
|
||||
#! /usr/bin/env python
|
||||
|
||||
# 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 __future__ import print_function, division, absolute_import
|
||||
from fontTools.misc.py23 import *
|
||||
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)
|
Loading…
x
Reference in New Issue
Block a user