#! /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.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)
