blob: 6f51f80c98a5c0d6b919ed4cf7d62772f306efe9 (
plain)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
@startuml v5_split_downconvert
title
How to split and down-convert a DesignSpace version 5
<size:14>so that existing tools can work with it
end title
start
#lightgrey:DesignSpace 5.0
- with STAT data
- optional instance names
- with discrete axes
- with multiple VFs]
note left
- STAT data means that compilers will need
to write that data to the ouput TTFs
- optional instance names means that
compilers will need to generate any missing
names using the STAT data
- discrete axes mean that not all sources
are compatible for interpolation
- multiple VFs means that compilers will
need to output several TTFs for one DS
end note
split
split again
:""splitInterpolating()"";
note left
- Create one DS document per interpolating
sub-space, for example: with a discrete
axis for Upright vs Italics, create 2
DesignSpaces, one for the Uprights, and
one for the Italics.
- Expand all missing instance names using
the STAT data.
- Drop all the STAT data because as we start
taking out discrete axes, the sub-documents
lose STAT data anyway (only the full
document at the start of the process should
be used to generate the STAT table)
end note
split
#lightgrey:DesignSpace 5.0
- (no STAT data)
- (explicit instance names)
- (at discrete location #1)
- with multiple VFs]
note left
All sources in this sub-space are
(supposed to be) compatible for
interpolation
end note
split again
#lightgrey:DesignSpace 5.0
- (no STAT data)
- (explicit instance names)
- (at discrete location #2)
- with multiple VFs]
detach
split again
#lightgrey:etc
...]
detach
end split
:check compatibility;
:build compatible master TTFs with cu2qu;
:""splitVariableFonts()"";
note left
Create one DS document per variable font,
for example: the above document may
describe a weight and width space, out of
which we'll build 3 variable fonts:
full weight + width, weight only, width only.
end note
split
#lightgrey:DesignSpace 5.0
- (no STAT data)
- (explicit instance names)
- (at discrete location #1)
- (describing just VF #1)]
note left
This document looks very much
like version 4.1, you can just
change the version number at
the top and feed it to a tool
that doesn't know about v5;
see ""convert5to4()"".
end note
split again
#lightgrey:DesignSpace 5.0
- (no STAT data)
- (explicit instance names)
- (at discrete location #1)
- (describing just VF #2)]
detach
split again
#lightgrey:etc
...]
detach
end split
:""varLib.build()"";
#lightgrey:Variable font TTF
No STAT data]
end split
:""buildVFStatTable()"";
note left
Apply STAT data using the full document
from the start of the process + filtering
entries based on this VF's location
end note
#lightgrey:Variable font TTF
With STAT data]
end
@enduml
|