1
0
Fork 0
ligature_xml_to_list.py/ligature_xml_to_list.py

40 lines
1.0 KiB
Python

#!/usr/bin/env python
# This takes in just the ligatures section of a .ttx file:
# USAGE: sed -n '/<LigatureSubst /,/<\/LigatureSubst>/p' FOO.ttx \
# | ./ligature_xml_to_list.py
from __future__ import print_function
import lxml.etree
import sys
try:
import fontTools.agl
def map_glyph(c):
res = fontTools.agl.AGL2UV.get(c, None)
if res is not None:
return unichr(res)
else:
return c
except ImportError:
print('WARNING: Package fonttools not found.', file=sys.stderr)
# Don't have fonttools package.
# TODO: 5 ---> five etc.
glyph_mappings = {
'space': ' ',
}
def map_glyph(c):
return glyph_mappings.get(c, c)
tree = lxml.etree.parse(sys.stdin)
print('\n'.join(sorted([''.join(map(map_glyph,
[ligSet.attrib['glyph']]
+ lig.attrib['components'].split(',')))
for ligSet in tree.iterfind('LigatureSet')
for lig in ligSet.iterfind('Ligature')
])))