forked from georgd/EB-Garamond
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakescfont.py
39 lines (32 loc) · 1.08 KB
/
makescfont.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/python
import re
import argparse
import fontforge
argparser = argparse.ArgumentParser(description=
"Generate a small-caps variant of a font out of a source \
for older programs that do not support OpenType features.")
argparser.add_argument(
'input',
help='Input font source, e.g. "/some/path/Bla.sfdir"')
argparser.add_argument(
'output',
help='Output font file, e.g. "/some/path/Bla.otf"')
argparser.add_argument(
'version',
help='Version string to embed into the font file, e.g. "v1.1"')
args = argparser.parse_args()
font = fontforge.open(args.input)
font.version = args.version
font.encoding = 'UnicodeFull'
for glyph in font:
# match all glyphs that start with a lower-case letter (to avoid the
# c2sc-variants) and end with ".sc".
match = re.search("^([a-z].*)\.sc$", glyph)
if match:
lowercase_glyph = match.group(1)
smallcaps_replacement = glyph
font.selection.select(smallcaps_replacement)
font.copy()
font.selection.select(lowercase_glyph)
font.paste()
font.generate(args.output)