Fontlab Training Slides Hand
Fontlab Training Slides Hand
Fontlab Training Slides Hand
Opening a Font
File -> Open
10
10
11
12
Edit tool Click = select Click-drag = move Dbl-click = select contour Erase tool Knife tool Meter Drawing Pen
11
12
13
14
14
15
16
Metrics
15
16
17
18
17
18
19
20
Font Info
19
20
21
22
Font Info
Names and copyright Version and ID Metrics and dimensions Encoding and Unicode Hinting settings Type 1 settings TrueType settings
Font Info
Names Font name Family name Menu name Copyright
21
22
23
24
Font Info
Version Metrics Encoding
Font Info
Font Note
23
24
25
26
Font generation
Saving - .vfb format
Font Generation
25
26
27
28
Font Generation
Windows Type 1 TrueType/OpenType Macintosh Type 1 TrueType/OpenType
27
29
30
31
32
33
34
35
36
37
38
39
40
PostScript Type 1 created 1 985 1 990 by Adobe Systems declared obsolete in 1 999 !" #"$%% &'&!%() exists in two platform variants: !" #$%& '* resource-fork suitcase + LWFN! printer file(s) works on !"() *+, and !" () doesn"t work on Windows ./0 #$%& ' 2 4 data-fork files (.pfb, .pfm + possibly .afm, .inf) works on ./01234 and some Unix/Linux systems doesn"t work on MacOS 8/9 or Mac OS X * only supported in FontLab for Mac
2
41
42
43
44
OpenType
What is it?
45
46
OpenType
What is it?
Readings on OpenType
OpenType: The Next Level of Digital Typography (Mark Eastman, Communication Arts) http://store.adobe.com/type/opentype/CA-Aug02.pdf OpenType ushers in new era of typography (Edward Mendelson, Creativepro.com) http://www.creativepro.com/story/feature/6503.html Will Adobe Finally Push OpenType into the Big Time? (Terri Stone, Macworld) http://www.macworld.com/2001/08/bc/20adobe_opentype/
TrueType with more tables. Uses one file (the same file) for both Mac and PC Allows very sophisticated typography through the use of OpenType features (in applications that support OpenType) Can use either TT or T1 glyphs.
47
48
OpenType References
Specifications Microsoft: http://www.microsoft.com/typography/tt/tt.htm Adobe: http://partners.adobe.com/asn/tech/type/opentype/otover.jsp
49
50
51
52
10
53
54
11
12
55
56
13
14
57
58
15
16
59
60
Other OT Shortcuts
17
18
61
62
63
64
65
66
User interface
Meter tool
Meter panel
67
68
69
70
71
72
User Interface
Lock Layers
User Interface
Snap to Layers
10
11
73
74
12
13
75
76
Edit mode
Node select <shift> Segment select <shift> Contour select <x2> Node properties <ctrl> Node menu <RMB>/<cntrl>click Node insertion <cmd+opt> Convert to curve <alt>
14
15
77
78
Edit mode
The Nodes properties panel <ctrl><click>
Edit mode
The Node menu (RMB/<ctrl>click)
16
17
79
80
Edit mode
Eraser Standard Marquee <cmd> Knife Add node Cut stem Delete line <opt>
Edit Exercise
Open the A glyph cell Select an apex node and delete it. Cut one of the legs; select the lower contour; drag it 10 units to the right. Add a node in the middle of the top of the crossbar; select the segment to the right; delete it to leave an open contour. Select the bottom right node and move it 11 units to the right and two units up.
18
19
81
82
Edit mode
Bezier drawing tool (pen)
Edit mode
New contour tools Add corner Add curve Add tangent
20
21
83
84
Edit mode
Transform tools Rotate Scale Slant Transform Box
Edit Exercise 2
Open a blank glyph window. Draw a D using the contour tools. Select the inner contour and scale it up by 10%. Draw a dot in the counter of the D using the Bezier Pen. Select the D but not the dot and slant it 12 degrees to the left (hint: use a guideline).
22
23
85
86
Contours
Open and closed Filled and unfilled Startpoint and closepath
Contours
Type 1 (cubic b-spline)
24
25
87
88
Contours
Connections: sharp vs. smooth Changing connection type Double-click RMB/<ctrl>click ->menu
Contours
Convert Delete Duplicate Retract BCPs Add anchor
node commands
26
27
89
90
Contours
Reverse
contour commands
Contour Exercise
Open the 5 glyph Change the extremum node of the bowl to a sharp connection and make it the first node. Break the contour at the node in the upper right corner. Select the top segment and make a parallel path.
Contour Make contour first Delete Subtract Select Make parallel path Break contour Make corner Fixed BCP direction
28
29
91
92
Nodes
Moving nodes and segments Selection Click Marquee Magic wand Click-drag Copy-paste
Nodes
Inserting nodes Edit tool Win: Hold RMB then click LMB Mac: <cmd><opt>click Knife tool click-drag across outline
30
31
93
94
Nodes
Removing nodes Edit tool Win: Hold LMB then click RMB Mac: click-drag node then <ctrl>click Eraser Click Marquee select Node menu Edit menu
Nodes
Non-node editing
32
33
95
96
Selection
Edit tool <shift>click selects node Double-click selects contour Marquee selects segment Magic wand - <ctrl>+Edit tool Selects nearest contour +<alt>/<optn> selects nearest contour & all contours inside it Lasso in VP toolbar
Segment <Shift>click both ends Marquee select all nodes in segment Edit menu Select All Invert Deselect
34 35
97
98
36
37
99
100
Contour Toolbox
38
39
101
102
Contour toolbox
Also available from the menu
Contour toolbox
Interpolate Nodes
40
41
103
104
Contour Toolbox
Envelope Move Node (Set) Simplify Segment (Curve)
Contour Toolbox
Contour direction Set PS direction Set TT direction Also available from menu
42
43
105
106
Contour Toolbox
Merge Contours Get Intersection Delete Intersection (in menu)
107
108
Mask a layer of a glyph that can contain a contour that is not affected by editing the outline layer Template a global mask layer a layer in which a bitmap pattern can be imported
109
110
Masks
Copy to Mask mask layer. copies the selected contour (or part) to the
Masks
111
112
Masks
Paste Mask copies the mask layer into the outline layer. Note that it does not replace what was in the outline layer, nor is the mask removed.
Masks
Clear Mask removes all contours from the mask layer
113
114
Masks
Exchange with Mask moves the outline layer to the mask layer and the mask layer to the outline layer. All contours are replaced.
Masks
Assign Font Mask makes one font a mask for another
115
116
Masks
Editing the Mask Layer View->Show Layers->Edit mask
Exercise 1
Open the H glyph. Select the left half and put it on the mask layer. Exchange the mask and outline layers. Paste the mask layer into the outline layer. Clear the mask layer.
10
11
117
118
Templates
Copy to Template copies the contour (or selected part) from the outline layer to the template layer.
Templates
12
13
119
120
Templates
Copy Mask to Template copies the active glyph"s mask layer contents into the template layer.
Templates
Paste Template to Mask copies the contents of the template layer into the active glyph"s mask layer.
14
15
121
122
Templates
Clear Template removes the contents of the template layer.
Exercise 2
Open the T glyph. Copy it to the template layer. Open the a glyph and copy it to the mask layer. Copy its mask layer to the template layer. Open the space character and copy the template to the mask layer. Then copy the mask layer to the outline layer. Clear the template layer.
16
17
123
124
Background
Tools -> Background
18
19
125
126
Background
Remove clears the bitmap layer
Background
Copy copies the bitmap to the clipboard Edit->Paste copies a bitmap from the clipboard to the background layer
20
21
127
128
Background
Move and Scale allows you to move and adjust the size and shape of the bitmap.
Exercise 3
Open the Z glyph and create a bitmap background from it. Scale down the bitmap by about half and move it over to one side. Clear the background.
22
23
129
130
VectorPaint
Bitmap paint tools
131
132
Tools - Lasso
Lasso select selects enclosed contour LMB straight line RMB close contour Edit Tool move selection
Tools - Pencil
Freehand line drawing
133
134
Tools - Brush
Brush tips Brush options Strokes Widths Angle Caps Joins
Tools - Brush
Brush Options
135
136
Exercise 1
Open a new glyph window and draw a swash R that looks something like this. The stem width should be 60 units. Draw a grave accent. Lasso it and drag it over the R.
Tools - Line
Straight lines
137
138
Tools - Polygon
Draws polygons RMB to close Normal contour mode Brush trace mode
Tools - Text
Adds text to a glyph Edit tool moves text
10
139
140
Tools - Color
Black White Empty the brush takes the foreground color Auto the brush takes the color where the stroke begins
Exercise 2
Create a new glyph design in a blank cell using the VectorPaint tools. Add text to make a logo glyph.
11
12
141
142
Sketch Toolbar
Show outline creates a template layer copy of the contour. This copy remains unchanged while the contour is edited. Show marks New sketch Import sketch Replace outline the sketch Add to outline contour
13
Sketch Mode
copies the contour to the sketch layer replaces the existing contour with adds the sketch to the existing
14
143
144
Sketch tools
All the usual toolbox tools work in sketch mode. The main difference between sketch mode and normal outline mode is that the sketch is not WYSIWYG. I.e the character contour does not change as you edit it in the sketch layer. Only when you click Replace Outline or Add to Outline does the sketch get transferred to the real character contour layer.
Exercise 3
Open the B glyph. Go into sketch mode and put the glyph outline into the sketch layer. Make a copy on the template layer and then scale the glyph 90%. Use the edit tool to enlarge the upper bowl. Put the new contour back into the glyph window, replacing the old contour.
15
16
145
146
Expand Strokes
Draw and or select a line segment Choose stroke width, Caps, Joins, And shape
17
18
147
148
Parallel Paths
Draw and/or select a segment Choose relative position, Replace or add, Close contour?, And offset
149
150
Transformations
151
152
153
154
Glyph transform
Select segment or contour Click free transform tool Click on handles for scale, skew or rotate Drag to position
free transform
155
156
Transform Panel
Window->Transform panel Enables digital precision transforms
Exercise 1
Open the S character Scale it down to about 90% Slant it left about 15 degrees Rotate it about 30 degrees
157
158
Range Transformation
Tools -> Transform (Action)
Range Transformation
10
11
159
160
Range Transformation
Select a range or character Select an action Click OK to apply
Exercise 2
Open a sample font Widen all the caps by 10%. Make all the lower case characters 20% bolder.
12
13
161
162
Transformation Programs
Select a range or character (or leave blank to do the whole font) Tools -> Action set
Transformation Programs
14
15
163
164
Transformation Programs
Setup Transformation program Choose range Retrieve or create an action set Edit the actions
Transformation Programs
The Preview Panel
16
17
165
166
Exercise 3
Create a transformation program that makes the font 10% bolder, slanted by 6 degrees left, and applies a shadow.
18
167
168
)*#+,-. /* +,#0
./01* 2-3* 4 "3*5%6%5,(%0!7 Making a PostScript language implementation of a typeface design involves two essential considerations: The character paths must accurately express the true analog shapes of the original design. Certain conventions must be observed to help the interpreter accurately scale for all sizes. Failure to observe either of these conventions can result in uneven stems, unwanted pixels, poor curve shapes, and poor transitions from straight to curved sections.
)*#+,-. /* +,#0
80%!(" ,( 9($*:*" An endpoint (first or last point of a lineto or curveto) should be placed at most horizontal or vertical extremes. This implies that most curves should not include more than 90 degrees of arc. The placement of extreme points aids the rendering algorithms in properly reproducing the major features of characters. Of course, points may be placed anywhere else on the character outline, as long as the important extremes are defined as well. It is not necessary to place an endpoint at extremes of very small curves such as the tips of curved serifs.
169
170
)*#+,-. /* +,#0
2,!&*!( ;0!(%!#%(Whenever one path element should make a smooth transition to the next element (for example, straight line to curve, curve to straight line, or curve to curve) the endpoint joining the two elements and the B zier control points (the off-curve points) associated with that endpoint (for curves) or the other endpoint (for lines) should all be collinear. This is especially important at horizontal and vertical extremes, where slight deviations tend to be magnified by interaction with the pixel grid.
)*#+,-. /* +,#0
;0!5%"*!*"" Be as concise as possible, without breaking the other rules. This achieves minimum memory usage and maximum speed in the rendering system, and simplifies the task of adding hints. Use the fewest B zier curve segments that accurately represent a shape. Do not use consecutive collinear straight line segments. Do not draw straight lines by using collinear curveto definitions Whenever possible, use the closepath command to draw one of the straight line segments, rather than closing a character with a closepath that results in a zero-length line segment. In general, find the smallest sequence of commands that accurately describe the character shape.
171
172
1&-# 2*!,#
!"#*+(,#- set of algorithms that analyses a glyph"s outline to find errors that may decrease glyph rasterization quality. To activate, press the ying-yang button on the Show Layers toolbar. To see a description of a possible error, click on the red arrow mark.
1&-# 2*!,#
173
174
1&-# 2*!,#
)3#,",4.
Tools / Outline / ./#,0,12: FontLab tries to automatically adjust the outline to remove unnecessary elements and correct others. Remove unnecessary curve and line segments. Align imprecisely directed vertical and horizontal lines. Correct the connection types of lines and curves. 32##,"45: Preferences / Font Audit / Optimized Outline Simplification level: The bigger value, the more curves FontLab will try to remove. Auto-alignment level: The bigger value, the stronger FontLab will align curves.
175
176
177
178
Interface
Mode Text Preview Metrics Kerning Size Options Tools String
Interface
Header bar Size String select Load text Open/close
179
180
saves a metrics
Quick Save saves a metrics file to RAM (not disk) Quick Open opens a metrics file from RAM
181
182
kerning
183
184
10
185
186
Metrics Modes
11
12
187
188
Metrics Modes
Text
Metrics Modes
Preview
13
14
189
190
Metrics Modes
Metrics
Metrics Modes
Kerning
15
16
191
192
String Field
String selections Entering strings Type one in By name: /A.small/ By decimal code: /44 By Unicode: \0445 For slashes use double slashes: \\ // Select from dropdown list Cycle through list using spin buttons
17
18
193
194
String Field
Loading text strings List comes from preview.txt in data subdirectory of fontlab directory. ASCII editable. Make your own list(s) and use the OPEN button to load them. Second preview allows comparison
195
19 20
Editing Metrics
196
Editing Metrics
Select Metrics Mode Select or enter string Select character Adjust sidebearings Manually Drag sidebearing line Drag glyph Digitally Use spin buttons Enter numbers in spinbox or table
21
Editing Metrics
Or just click the Auto button:
22
197
198
Editing Kerning
Select Kerning Mode Select or enter string Select character Adjust kerning Manually Drag kerning line Drag glyph Digitally Enter numbers in table
Editing Kerning
23
24
199
200
Editing Kerning
Or just click the Auto button:
25
26
201
202
")#%*'+ ,! -)%,*,.
FontLab 4.6
203
204
")#%*'+ ,! -)%,*,.
FontLab Studio 5
/&,#0 1 2#3!*& 4
New: Text Mode! that allows live multiline text editing
205
206
/&,#0 1 2#3!*& 4
New: Permanent Metrics/Kerning table (Metrics mode)
/&,#0 1 2#3!*& 4
New: Permanent Metrics/Kerning table (Kerning mode)
207
208
209
210
96 ++ :)%,*,.
FontLab kerning classes special FontLab classes used for class kerning name must start with underscore (e.g. _A!) one glyph in the class must be a key glyph!: its glyph name in class definition is followed by quotesingle (')
10
211
212
96 ++ -)%,*,.
1. 2. 3.
96 ++ :)%,*,.
1. Create kerning classes by dragging glyph groups into classes panel or writing class definition file.
Create *+,"-". /$%00+0 Define the *+,"-". 0/!1+ of each kerning class Define *+,"-". 1%-,0 for individual glyphs (for classes, only key glyphs need to be kerned) Use 2+,"-". 300-0#%"/+ to copy kerning values from pairs with key glyphs to pairs with dependant glyphs 56/+1#-!"0 are made by kerning dependant glyphs explicitly
4.
4)
11
12
213
214
96 ++ :)%,*,.
2. Define the kerning scope of each class using Kerning Assistance (Save changes): 1st glyph class, 2nd glyph class, both-side class 3. Define kerning pairs for individual glyphs. For glyphs in classes, you only need to define kerning pairs with key glyphs.
13
14
215
216
/&,#0 1 2#3!*& 4
New: Live class kerning
96 ++ :)%,*,.
4. Use Kerning Assistance to apply changes: Apply and Save build OpenType kern! feature with class kerning, for OpenType PS and OpenType TT fonts Expand Kerning physically copy kerning values to dependant glyphs, for Type 1 and TrueType fonts to be used in non-OpenType applications
15
16
217
218
/&,#0 1 2#3!*& 4
Improved: Expanding class kerning into plain kerning
/&,#0 1 2#3!*& 4
Improved: Expanding class kerning into plain kerning
17
18
219
220
/&,#0 1 2#3!*& 4
New: Compressing kerning into class kerning
/&,#0 1 2#3!*& 4
New: Metrics window options
19
20
221
222
)&*#+ , -.##/*0Font Settings Font-centric. Affect a given font regardless of which user and machine it is edited on. They travel! with the .VFB font file. Control font naming and identification, metrics and dimensions, glyph naming and encoding, screen display settings, other font format-dependant settings. Application Settings User-centric. Affect all fonts edited by the current user on the current machine. Do not travel! with the .VFB font file. Control FontLab"s behavior, opening and saving, user interface elements, keyboard shortcuts etc. Also control certain aspects of font naming, encoding, screen display settings etc. of fonts that are being generated.
5
223
224
)&*#+ , 1.##/*0-2 3445/' #/&* 1.##/*0User interface Font Window, Glyph Window, colors, fonts, smoothing, keyboard shortcuts, toolbar and menu items*, UI icons*... Behavior of certain functions Optimize, FontAudit, Trace, T1/TT Autohinting, copy-paste, tracking, snapping, selecting, node moving... Importing (opening) and exporting (generating) fonts Decompose composites on import, autohint unhinted glyphs, re-encode glyphs... Read/export: original hinting, complete name! table, OpenType Layout tables, embedded bitmaps... * only available in FontLab for Windows
7 8
225
226
9.: 3445/' #/&* 1.##/*0Preferences | Type 1 Type 1 import: leave default settings Type 1 export Disable Use WinAscent and WinDescent... Encoding options: Select encoding automatically (more discussion when we will speak of font formats) Preferences | TrueType TrueType import For round-tripping, enable Store custom TrueType tables TrueType export Disable Autohint unhinted glyphs Note: Type 1 settings apply to Mac & Win. TrueType! settings apply to Mac TrueType, Win TrueType and OpenType TT (.ttf).
9 13
Terminology:
The terms OpenType TT and Win TrueType are interchangeable OpenType PS (CFF) is often misnamed as just OpenType!
Settings:
OpenType settings apply both to Win TrueType / OpenType TT and to OpenType PS fonts TrueType settings apply to Win TrueType / OpenType TT and to Mac TrueType fonts Type 1 settings apply to Mac Type 1 and Win Type 1 fonts
227
228
9.: 3445/' #/&* 1.##/*0Preferences | OpenType OpenType import Disable Interpret mort! table. Set Read all OpenType name records... OpenType export Set Append OpenType name records for Roman fonts or in development mode. For shipping, set Export only OpenType name records and verify all naming in detail. Enable Use OpenType names as menu names on Macintosh. Enable Add all glyph classes to OpenType feature definition... Note: Settings apply to Win TrueType, OpenType TT (.ttf) and OpenType PS (.otf) fonts. Naming settings also apply to Mac TrueType.
14
)&*#+ , 1.##/*0-2 )&*# 1.##/*0Font names and identification Font names, design credits, vendor information, copyrights and licenses, version numbers, creation date Metrics and dimensions UPM, ascenders / descenders, superscript / subscript Glyph naming and encoding Glyph names, Unicode values, codepages Screen display settings PostScript and TrueType hinting, auto-aliasing Other settings Settings specific to given font format
16
229
230
17
18
231
232
)&*#+ , 1#@!/& A
Improved Fonts panel in FontLab Studio 5 displays both types of naming Brief family naming FontLab 4.6 Long family naming ( OT!) Alt. view in FL Studio 5
To switch the views: Solution: give each family two sorts of family naming: brief family naming! and long family naming!.
19 20
233
234
21
22
235
236
24
237
238
25
29
239
240
31
33
241
242
34
35
243
244
".#%/'- *! !/".*-/&*-
".#%/'- *! !/".*-/&*-
36
37
245
246
38
39
247
248
-'%..* !/-45 : -.##/*0Format-specific hinting settings: Pref | Type 1 Pref | TrueType Info | Hinting Settings Info | TrueType-specific settings | Font smoothing Tool: TrueType Hinting | Stems Options
G4#/"/H/*0 1'%..* 1.##/*0Finalizing a PostScript design (Type 1 or OpenType PS/CFF) Tools / Transform Range / range: All characters in the font Add actions: Contour / Decompose Contour / Reverse all / Set counterclockwise (Type 1) direction Hints and Guidelines / Remove hints/guides Hints and Guidelines / Autohint Hints and Guidelines / Autoreplace Run the program Font Info Hinting Settings / Auto zones Standard stems (T1 hinting) / Auto stems
40
41
249
250
G4#/"/H/*0 1'%..* 1.##/*0Finalizing a TrueType design (OpenType TT) Complete steps on previous page Font Info Metrics and Dimensions: Change UPM if required or leave 1000, enable Scale all glyphs according to UPM change! TrueType-specific settings / Font smoothing / Auto! (green) Tools / Transform Range / range: All characters in the font Add actions: Contour / Convert to TrueType Contour / Reverse all / Set clockwise (TrueType) direction Hints and Guidelines / Convert to instructions Run the program
42
251
252
253
254
"
255
256
257
258
&
'
259
260
()
((
261
262
(!
263
264
("
(#
265
266
($
(%
267
268
(&
('
269
270
)* +,#(&- ./0%/10$
Python is an open source object-oriented programming language
Python is cross-platform, one code can be executed on Mac, Windows, Unix etc. It is easy to learn, very flexible and extremely powerful Why write code? simplify batch processing cut down on repetitive tasks FontLab has extensive Python implementation
271
272
))* 2&%0 %0 3&-3 #& 430 +,#(&First version of Python was written by Guido van Rossum. Guido van Rossum is the older brother of Just van Rossum, who is type designer (Letterror) and ATypI member. Many years ago, Just van Rossum, Erik van Blokland and Petr van Blokland wrote RoboFog a scriptable version of Fontographer 3.5. It was written in Python. A few years ago, Just van Rossum wrote TTX, a package that allows you to convert TrueType and OpenType fonts to XML and back. In Python, of course. This year, Just van Rossum, Erik van Blokland and Tal Leming wrote RoboFab an extension package that uses FontLab. Again, RoboFab was written in Python. Large parts of the Adobe SDK for OpenType (ASDKO, f.k.a. Adobe OTFDK) are written in Python.
5
273
274
275
276
9* ;331<-"0-#3
9* ;331<-"0-#3
H I >JJ "5./! H 4 I 67'00% 894":6 "5./! 4 &4K.*! I @BJA =JA <JD "5./! &4K.*! "5./! &4K.*!@JD "5./! &4K.*!@>D "5./! &4K.*!@BD
"5./! B=
H I B= "5./! H
10
277
278
11
12
279
280
9)))* =&-'>431&Go through the macros that come with FontLab and read over them to see how they work. The Python website has some great tutorials for learning basic Python: http://www.python.org The documentation of the FontLab/Python API is available at: http://dev.fontlab.net/flpydoc/ There is a mailing list dedicated to Python in FontLab: http://mail.letterror.com/mailman/listinfo/fontlab-scripting Almost any introductory book on Python will be helpful Write macros in an external editor (UltraEdit, BBEdit)
13
281
282
Blending
Takes two fonts and creates an intermediate version.
Blending
Open two fonts Tools -> Blend Fonts
283
284
Blending
Specify fonts Blend vs. Build MM Destination Glyphs Blend amount Uniform? Interpolate
Blending
Building a single-axis Multiple Master font
285
286
287
288
289
290
10
11
291
292
Tools->MultipleMaster->Assign Master
12
13
293
294
14
15
295
296
16
17
297
298
Button in Axis panel Choose axis Position ends of dynamic range RMB+LMB(<cmd><opt>) on the line to add a point Drag point to new position
18
19
299
300
20
21