forked from adobe-fonts/source-code-pro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index_to_resources.txt
272 lines (245 loc) · 10.8 KB
/
index_to_resources.txt
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
Index to resources in repository for Source Code Pro (SCP)
This document’s purpose is to provide a description of the file types and
folder structure found in this repository and the tools used to generate and
process them. This index also lays out the workflow from making and editing the
sources to compiling working fonts.
A. Key to File Types:
1. Files for type design
The vast majority of files in this repository belong to the Unified Font
Object (ufo) storage format, which is an open format and largely XML based.
This document will not describe UFO-related files that are found in the
UFO file packages in this repository. For information about these file
types, please consult the official documentation of the UFO specification,
that can be found online at:
http://unifiedfontobject.org OR
https://github.com/unified-font-object/ufo-spec
1.1 Master UFO files
A master, in the context of typeface design, is a designed reference
point that defines the bounds of the type design space. Master UFO
files house all the information needed to compile a working font in a
format that is easily read by font editors and humans alike. However,
this information is stored using XML syntax, whereas the tools used
to compile fonts for this project use the feature file (.fea) syntax
(see §3 for more information).
Perhaps most imporatantly, the masters define the paramaters of a
typeface family. Each master is a separate design that relates to the
others. Basically this means that the the masters must be compatible
with each other in certain ways: masters must (except for the case of
intermediate masters) contain the same number of glyphs, each of which
must be point-compatible with the corresponding glyph outlines in each
design master. Additionally,
These parameters include designed glyph outlines at
the extremes of the design space, sometimes with intermediate poles
that help with more fine-grained control of the design space. Glyph
outlines must be point-compatible with all other masters in order to
enable the interpolation of intermediate instances within the design
space that the masters define. Master UFO files are what the designer
modifies directly using a font editor that has UFO import / export support.
Master UFO files will also be the inputs for tools that will ap-
ply kerning and anchor information to the design.
The master UFO files live in the directories named 'RomanMasters'
and 'ItalicMasters'. These have the family name, eg. 'SourceCodePro',
in the UFO file name, to which is appended '-It' for italic masters,
and '_d' where d is a digit that corresponds to the the master’s
index number.
[ 1.1 UFO files in this repository
a. Default UFO data files:
The UFO files in this repository follow the structure outlined
in the documentation referenced above, however you will also
find some:
b. Custom UFO data files:
b.1 com.adobe.type.processedHashMap, in 'data' folder
This file stores a hash of the outlines of all glyphs in the
default layer (glyphs folder). This is for the purpose of
tracking which modified glyphs need to be processed by
checkOutlines (FDK) and autohint (FDK).
1.2 UFO types in this repository
]
2. Files for interpolation
2.1 Design space file (.designspace)
This is a MutatorMath file in XML format that maps the relationships
between the design master UFOs and the instances that will be generated
by those using the makeInstancesUFO (FDK) tool. The designspace file can
be output by Superpolator (3rd party, proprietary tool), or crafted and
edited by any text editor.
2.2 Superpolator file (.sp3)
This is a Superpolator file that maps the relationships between the
design masters to define the design space and also plots the postions
of intermediate masters to be interpolated. As stated above, this
information can be exported to a .designspace file.
3. Files for font compilation
The entirety of this project leverages a workflow that relies on the
Adobe Font Development Kit for OpenType (FDK) to compile the final font
software. The FDK is a set of open source tools developed and maintained
by Adobe for the purpose of developing, compiling, and processing OpenType
(OT) fonts, specifically for Compact Font Format (CFF) fonts, but with
some TrueType (TTF) font support as well.
Documentation on the FDK can be found on Adobe’s website:
http://www.adobe.com/devnet/opentype/afdko.html
The open source version of the toolkit can be found on GitHub:
https://github.com/adobe-type-tools/afdko
Many of the files in this repository are input files used by the
makeotf tool to compile font software. A full description of these input
files can be found as part of the FDK distribution package on GitHub:
https://github.com/adobe-type-tools/afdko/blob/master/FDK/Technical%20Documentation/MakeOTFUserGuide.pdf
However, a brief description of each of these files will follow.
3.1 Family-wide files
Files that contain information that applies to the entire type family
(or sub-family) are typically stored at the top-level directory.
a. family.fea
This file contains the OT shaping rules that apply to all fonts
in the family. Because there is currently a discrepancy in the
glyph repritoire of the upright and italic fonts, there is also
an italics.fea file that overrides the family.fea file.
b. FontMenuNameDB
A text file which stores font naming information.
c. GlyphOrderAndAliasDB
A text file which stores relationships between glyph names used
in production and glyph names to be used int he final font. In
general, the production names follow those that can be found in
the Adobe Glyp Dictionary (AGD.txt), which is part of the FDK
distribution. Final names follow a strict set of rules laid out
by the Adobe Glyph List Specification:
https://github.com/adobe-type-tools/agl-specification
This file is also used to set the order of glyphs in the final
font software.
d. tables.fea
For this project, this file only houses some of the <name> table
information that is shared across all fonts in the family and the
<base> table information. However, this file can also be used to
house other table information as needed.
e. widthsAdjust.fea
This file is specific to this project. Because SCP is a monospace
font, some interpreters expect strict adherance to a common set
width for each character, including those which are defined by
Unicode to be non-spacing (have 0 width). To satisfy both these
requirements, the combining diacritics are set on the full width
and then OT positioning features adjust the width of these char-
acters so that they effectively become non-spacing.
3.2 Font-specific files
Files that contain information that applies to a specific font style.
These can be found in the directories that correspond to the font
style names, eg. 'Regular' for the Regular style.
a. Instance UFO files
An instance, in the context of font development, is a input file
that is automatically interpolated from within the design space of
the master files. Instance UFOs are generated by the makeInstancesUFO
(FDK) tool, which will also flatten (remove overlaps) and add
hinting instructions to all glyphs. Instance UFO files will also
contain interpolated kerning and anchor infomation if present in the
master UFO files. The instance UFO files typically are simply
named 'font.ufo'.
In additon to the default UFO structure, these instance UFOs
also inlcude a file named 'com.adobe.type.processedHashMap', in
the 'data' folder. This file stores a hash of the outlines of all
glyphs in the default layer (glyphs folder). This is for the pur-
pose of tracking which modified glyphs need to be processed by
checkOutlines (FDK) and autohint (FDK).
4. Files for storage of font meta information
These files, although not strictly necessary, are helpful auxilliary files
that can aid in the type design / font development process.
4.1 Masters meta information files
a. derivedchars_0
Stores information on the relationships of components for
composite glyphs.
b. anchors_0
Houses anchor information that is used in generating the various
mark features files that are used by the FDK.
4.2 Instances meta information files
a. derivedchars_TT
Similar to the other derivedchars files previously described, these
files are used to regenerate composite glyphs in the font.ttf.
b. tthints
This is a storage file for TT hinting information.
c. ppms
Another file storing TT hinting parameters.
5. Build scripts & misc.
These files do something:
5.1 build.sh
DESCRIPTION GOES HERE.
5.2 package.json
DESCRIPTION GOES HERE.
5.3 .gitignore
Self-explanatory.
6. Docmentation
These are human-readable files and should be self-explanatory:
6.1 LICENSE.txt
6.2 ReadMe.html
6.3 README.md
6.4 relnotes.txt
6.5 Roadmap.txt
6.6 SourceCodeProReadMe.html
B. Key to Folder Structure*:
SoucrceCodePro
└ RomanMasters
└ SourceCodePro_0.ufo
├ metainfo.plist
├ lib.plist
├ fontinfo.plist
├ features.fea
├ groups.plist
└ glyphs
├ contents.plist
├ _notdef.glif
├ a.glif
├ …
├ …
├ SourceCodePro.designspace
├ SourceCodePro.sp3
├ anchors_0
├ anchors_2
├ derivedchars_0
└ derivedchars_2
└ ItalicMasters
└ do.
└ Roman
└ Regular
└ font.ufo
├ metainfo.plist
├ lib.plist
├ fontinfo.plist
├ groups.plist
├ layercontents.plist
└ glyphs
├ contents.plist
├ _notdef.glif
├ a.glif
├ …
└ glyphs.com.adobe.type.processedGlyphs
└ do.
└ data
└ com.adobe.type.processedHashMap
├ features
├ fontinfo
├ markclasses.fea
├ mark.fea
├ mkmk.fea
├ font.ttf
├ derivedchars_TT
├ tthints
└ ppms
├ …
└ Italic
└ do.
├ family.fea
├ FontMenuNameDB
├ GlyphOrderAndAliasDB
├ tables.fea
├ widthsAdjust.fea
├ build.sh
├ package.json
├ .gitignore
├ LICENSE.txt
├ ReadMe.html
├ README.md
├ relnotes.txt
├ Roadmap.txt
├ SourceCodeProReadMe.html
└ index_to_resources.txt
* This structure breaks from alphabetical ordering and uses logical order where
it would help to simplify the the representation of the file structure. The fol-
lowing conventions are also used to this end: do. to connote that the contents
are structurally the same as the previous item at the same level (if having dif-
ferent file names), … to connote an ellision of files of the same type as the
previous item at the same level.
C. Workflow