"""assets/fonts/cjk.ttf for Japanese, Chinese and Korean: the Latin of Liberation Sans (assets/fonts/ui.ttf) first, then
Droid Sans Fallback's CJK (Apache 2.0). TtfFont draws with one file, so both alphabets must be in it.
    python3 -I tools/fonts/make_cjk.py [/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf]"""
import sys
from pathlib import Path
from fontTools.ttLib import TTFont
from fontTools.ttLib.scaleUpem import scale_upem
from fontTools.merge import Merger, Options

app = Path(__file__).resolve().parents[2]
droid_src = sys.argv[1] if len(sys.argv) > 1 else '/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf'
tmp = Path('/tmp') if not len(sys.argv) > 2 else Path(sys.argv[2])
latin = TTFont(app / 'assets/fonts/ui.ttf')
droid = TTFont(droid_src)
upem = droid['head'].unitsPerEm
if latin['head'].unitsPerEm != upem:
    scale_upem(latin, upem)
for font in (latin, droid):
    for tag in ('fpgm', 'prep', 'cvt ', 'hdmx', 'LTSH', 'VDMX', 'kern', 'GPOS', 'GSUB', 'GDEF', 'gasp', 'DSIG'):
        if tag in font:
            del font[tag]
a, b = tmp / 'cjk-latin.ttf', tmp / 'cjk-droid.ttf'
latin.save(a)
droid.save(b)
merged = Merger(options=Options(drop_tables=['vhea', 'vmtx'])).merge([str(a), str(b)])
merged['name'].setName('CaraChat CJK', 1, 3, 1, 0x409)
merged.save(app / 'assets/fonts/cjk.ttf')
print('assets/fonts/cjk.ttf', (app / 'assets/fonts/cjk.ttf').stat().st_size)
