-
Notifications
You must be signed in to change notification settings - Fork 4
/
build.py
83 lines (62 loc) · 2.49 KB
/
build.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from glyphsLib.cli import main
from fontTools.ttLib import TTFont, newTable
import glob, shutil, subprocess, os
import ufo2ft
import ufoLib2
from pathlib import Path
# PREP
f = open("sources/palt.txt", "r")
palt_set = []
for line in f.readlines():
sub = str(line).rstrip().replace(";","")[4:]
palt_set.append(sub)
def GASP_set(font:TTFont):
if "gasp" not in font:
font["gasp"] = newTable("gasp")
font["gasp"].gaspRange = {}
if font["gasp"].gaspRange != {65535: 0x000A}:
font["gasp"].gaspRange = {65535: 0x000A}
def DSIG_modification(font:TTFont):
font["DSIG"] = newTable("DSIG") #need that stub dsig
font["DSIG"].ulVersion = 1
font["DSIG"].usFlag = 0
font["DSIG"].usNumSigs = 0
font["DSIG"].signatureRecords = []
font["head"].flags |= 1 << 3 #sets flag to always round PPEM to integer
print ("Converting to UFO")
main(("glyphs2ufo", "sources/MochiyPop.glyphs"))
print ("[Mochiy Pop One] Compiling")
exportFont = ufoLib2.Font.open("sources/MochiyPopOne-Regular.ufo")
exportFont.lib['com.github.googlei18n.ufo2ft.filters'] = [{
"name": "flattenComponents",
"pre": 1,
}]
# BUILDING STANDARD VERSION
static_ttf = ufo2ft.compileTTF(exportFont, removeOverlaps=True)
DSIG_modification(static_ttf)
static_ttf["name"].addMultilingualName({'ja':'モッチーポップ One'}, static_ttf, nameID = 1, windows=True, mac=False)
static_ttf["name"].addMultilingualName({'ja':'Regular'}, static_ttf, nameID = 2, windows=True, mac=False)
print ("[Mochiy Pop One] Saving")
GASP_set(static_ttf)
static_ttf.save("fonts/ttf/MochiyPopOne-Regular.ttf")
# BUILDING PROPORTIONAL VERSION
exportFont.info.familyName = "Mochiy Pop P One"
print ("[Mochiy Pop P One] Compiling")
p_ttf = ufo2ft.compileTTF(exportFont, removeOverlaps=True)
DSIG_modification(p_ttf)
p_ttf["name"].addMultilingualName({'ja':'モッチーポップ P One'}, p_ttf, nameID = 1, windows=True, mac=False)
p_ttf["name"].addMultilingualName({'ja':'Regular'}, p_ttf, nameID = 2, windows=True, mac=False)
print ("[Mochiy Pop P One] Changing metrics to proportional")
for sub in palt_set:
split = sub.split(" by ")
p = split[1]
fw = split[0]
p_ttf["vmtx"].metrics[fw] = p_ttf["vmtx"].metrics[p]
p_ttf["hmtx"].metrics[fw] = p_ttf["hmtx"].metrics[p]
print ("[Mochiy Pop P One] Saving")
GASP_set(p_ttf)
p_ttf.save("fonts/ttf/MochiyPopPOne-Regular.ttf")
# CLEANUP AND HINTING
shutil.rmtree("sources/MochiyPopOne-Regular.ufo")
os.remove("sources/MochiyPop.designspace")
ttf = Path("fonts/ttf")