aboutsummaryrefslogtreecommitdiff
path: root/Doc/source/designspaceLib/v5_split_downconvert.puml
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