Skip to content

Instantly share code, notes, and snippets.

@dperelman
Forked from RoelN/gist:8e3e7ecda723dfdfa590
Last active November 30, 2019 03:07
Show Gist options
  • Save dperelman/d78e4897743f32e88a4b to your computer and use it in GitHub Desktop.
Save dperelman/d78e4897743f32e88a4b to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
from __future__ import print_function
import collections
import fileinput
import sys
plop = collections.defaultdict(list)
try:
import fontTools.agl
def map_character(c):
try:
return fontTools.agl.UV2AGL.get(ord(c), c)
except:
return c
except ImportError:
print('WARNING: Package fonttools not found.', file=sys.stderr)
# Don't have fonttools package.
# TODO: 5 ---> five etc.
character_mappings = {
' ': 'space',
}
def map_character(c):
return character_mappings.get(c, c)
for word in fileinput.input():
word = word.strip()
length = len(word)
string = ''
glue = ''
firstletter = ''
if length < 6:
yooniecode = 'uniE602'
elif length > 11:
yooniecode = 'uniE600'
else:
yooniecode = 'uniE601'
firstletter = word[0]
string = ','.join(map(map_character, word[1:]))
line = ' <Ligature components="' + string + '" glyph="' + yooniecode + '"/>'
plop[firstletter].append(line)
for ltr in plop:
print('<LigatureSet glyph="' + ltr + '">')
print("\n".join(plop[ltr]))
print('</LigatureSet>' + "\n")
@DonaldTsang
Copy link

DonaldTsang commented Nov 30, 2019

the blackout version sounds good enough for me, if the script can detect the length of the combined ligatures that would be useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment