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