mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-11-16 10:35:49 +08:00
50 lines
1.2 KiB
Python
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()
|