JKQtPlotter/lib/jkqtmathtext/resources/xits/tools/copy-math-from-amiri.py

50 lines
1.2 KiB
Python

import sys
import fontforge
amiri = fontforge.open(sys.argv[1])
xits = fontforge.open(sys.argv[2])
amiri.em = 1000
amiri.layers[1].is_quadratic = 0
amiri.selection.all()
amiri.unlinkReferences()
names = []
alts = []
for aglyph in amiri.glyphs():
u = aglyph.unicode
if (u in range(0x1EE00, 0x1EF00) or
u in range(0x0660, 0x066E) or
u in range(0x06F0, 0x06FA) or
u in range(0x0608, 0x060B) or
u == 0x060C):
names.append(aglyph.name)
for aglyph in amiri.glyphs():
for name in names:
if aglyph.name != name and aglyph.name.startswith(name + ".alt"):
alts.append(aglyph.name)
for name in names + alts:
aglyph = amiri[name]
if aglyph.name not in xits:
xits.createChar(aglyph.unicode, aglyph.name)
xglyph = xits[aglyph.name]
aglyph.draw(xglyph.glyphPen())
xglyph.width = aglyph.width
xglyph.round()
xglyph.autoHint()
for name in alts:
base, ext = name.split(".")
if ext.startswith("alt"):
xits[base].addPosSub("'cv01' Alternate Arabic Math symbols-1", name)
elif ext.startswith("display"):
xits[base].verticalVariants = (xits[base], xits[name])
else:
print "Unknown alternate glyph:", name
xits.save()