• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1@startuml v5_split_downconvert
2
3title
4How to split and down-convert a DesignSpace version 5
5<size:14>so that existing tools can work with it
6end title
7
8
9start
10
11#lightgrey:DesignSpace 5.0
12- with STAT data
13- optional instance names
14- with discrete axes
15- with multiple VFs]
16
17note left
18  - STAT data means that compilers will need
19  to write that data to the ouput TTFs
20  - optional instance names means that
21  compilers will need to generate any missing
22  names using the STAT data
23  - discrete axes mean that not all sources
24  are compatible for interpolation
25  - multiple VFs means that compilers will
26  need to output several TTFs for one DS
27end note
28
29split
30split again
31
32:""splitInterpolating()"";
33
34note left
35  - Create one DS document per interpolating
36  sub-space, for example: with a discrete
37  axis for Upright vs Italics, create 2
38  DesignSpaces, one for the Uprights, and
39  one for the Italics.
40  - Expand all missing instance names using
41  the STAT data.
42  - Drop all the STAT data because as we start
43  taking out discrete axes, the sub-documents
44  lose STAT data anyway (only the full
45  document at the start of the process should
46  be used to generate the STAT table)
47end note
48
49split
50
51  #lightgrey:DesignSpace 5.0
52  - (no STAT data)
53  - (explicit instance names)
54  - (at discrete location #1)
55  - with multiple VFs]
56
57  note left
58    All sources in this sub-space are
59    (supposed to be) compatible for
60    interpolation
61  end note
62
63split again
64
65  #lightgrey:DesignSpace 5.0
66  - (no STAT data)
67  - (explicit instance names)
68  - (at discrete location #2)
69  - with multiple VFs]
70  detach
71
72split again
73
74  #lightgrey:etc
75  ...]
76  detach
77
78end split
79
80:check compatibility;
81:build compatible master TTFs with cu2qu;
82
83:""splitVariableFonts()"";
84
85note left
86  Create one DS document per variable font,
87  for example: the above document may
88  describe a weight and width space, out of
89  which we'll build 3 variable fonts:
90  full weight + width, weight only, width only.
91end note
92
93split
94
95  #lightgrey:DesignSpace 5.0
96  - (no STAT data)
97  - (explicit instance names)
98  - (at discrete location #1)
99  - (describing just VF #1)]
100
101  note left
102    This document looks very much
103    like version 4.1, you can just
104    change the version number at
105    the top and feed it to a tool
106    that doesn't know about v5;
107    see ""convert5to4()"".
108  end note
109
110split again
111
112  #lightgrey:DesignSpace 5.0
113  - (no STAT data)
114  - (explicit instance names)
115  - (at discrete location #1)
116  - (describing just VF #2)]
117  detach
118
119split again
120
121  #lightgrey:etc
122  ...]
123  detach
124
125end split
126
127:""varLib.build()"";
128
129#lightgrey:Variable font TTF
130No STAT data]
131
132end split
133
134:""buildVFStatTable()"";
135
136note left
137Apply STAT data using the full document
138from the start of the process + filtering
139entries based on this VF's location
140end note
141
142#lightgrey:Variable font TTF
143With STAT data]
144
145end
146
147@enduml
148