forked from fontforge/fontforge.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fontinfo.html
1149 lines (1149 loc) · 48.9 KB
/
fontinfo.html
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
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<HTML>
<HEAD>
<!-- Created with AOLpress/2.0 -->
<!-- AP: Created on: 14-Dec-2000 -->
<!-- AP: Last modified: 3-Feb-2010 -->
<TITLE>Font Info</TITLE>
<LINK REL="icon" href="fftype16.png">
<LINK REL="stylesheet" TYPE="text/css" HREF="/assets/css/old/FontForge.css">
</HEAD>
<BODY id="menued">
<div style="margin:0; height: 4 em; padding: 0.5em; background: red; color:yellow; text-align:center; font-size:1em; font-family: sans-serif;">
<p><a href="http://fontforge.github.io" style="padding: 0.5em; color: yellow; font-weight: bold; text-decoration: none;" onmouseover="this.style.background='black';" onmouseout="this.style.background='red';" >This is part of the old website. New website begins at fontforge.github.io</a></p>
<p><a href="https://github.com/fontforge/fontforge.github.io" style="padding: 0.5em; color: yellow; font-weight: bold; text-decoration: none;" onmouseover="this.style.background='black';" onmouseout="this.style.background='red';" >Are you a web developer? Help us migrate this page on Github</a></p>
</div>
<P ALIGN=CENTER>
<IMG SRC="/assets/img/old/fontforge-banner-420.jpeg" WIDTH=420 HEIGHT=80>
<DIV class="menucontainer">
<UL class="menubar">
<LI class="menu">
<A href="http://sourceforge.net/projects/fontforge/files/">Download</A>
<UL>
<LI>
<A href="http://sourceforge.net/projects/fontforge/files/fontforge-docs/"
>Documentation</A>
<LI>
<A href="http://sourceforge.net/projects/fontforge/files/fontforge-source/"
>Source</A>
</UL>
<LI>
<A HREF="overview.html#TOC">Introduction</A>
<LI>
<A href="editexample.html">Tutorial</A>
<LI class="menu">
<A href="fontview.html">Windows</A>
<UL>
<LI>
<A href="fontview.html" >Font</A>
<LI>
<A href="charview.html" >Outline Glyph</A>
<LI>
<SMALL><A href="charview.html#Debugging" > Debugging
TrueType</A></SMALL>
<LI>
<SMALL><A href="multilayer.html" > Type3 Glyphs</A></SMALL>
<LI>
<A href="bitmapview.html" >Bitmap Glyph</A>
</UL>
<LI class="menu">
<A href="fontinfo.html">Dialogs 1</A>
<UL>
<LI>
<A href="fontinfo.html" >Font Information</A>
<LI>
<SMALL><A href="histogram.html" > Histogram Dialog</A></SMALL>
<LI>
<A href="charinfo.html" >Glyph Information</A>
<LI>
<A href="getinfo.html" >Point, Reference Information</A>
<LI>
<A href="multilayer.html#Layer" >Type3 Layer Information</A>
<LI>
<A href="bdfinfo.html" >Bitmap Properties</A>
<LI>
<A href="baseline.html" >Baseline Information</A>
<LI>
<A HREF="justify.html">Justification Information</A>
<LI>
<A href="math.html" >Math Information</A>
<LI>
<A href="multiplemaster.html" >Multiple Master Information</A>
<LI>
<HR>
<LI>
<A href="lookups.html" >Lookups & subtables</A>
<LI>
<A href="metricsview.html#kernpair" >Kerning glyph pairs 1</A>
<LI>
<A href="kernpairs.html" >Kerning glyph pairs 2</A>
<LI>
<A href="metricsview.html#kernclass" >Kerning by classes</A>
<LI>
<A href="anchorcontrol.html" >Anchor Control</A>
<LI>
<A href="contextchain.html" >Contextual lookup dialog</A>
<LI>
<A href="statemachine.html" >Apple State Machine dialog</A>
<LI>
<A href="showatt.html" >Show Advanced Typography</A>
<LI>
<HR>
<LI>
<A href="problems.html" >Potential Problems dialog</A>
<LI>
<A href="validation.html" >Font Validation dialog</A>
</UL>
<LI class="menu">
<A href="generate.html">Dialogs 2</A>
<UL>
<LI>
<A href="filemenu.html#Open" >Open Fonts dialog</A>
<LI>
<A href="oflib.html" >Browsing OFLib dialog</A>
<LI>
<A href="generate.html" >Generate Fonts dialog</A>
<LI>
<A href="generate.html#Mac" >Generate Mac Family dialog</A>
<LI>
<HR>
<LI>
<A href="display.html" >Print & Display dialog</A>
<LI>
<A href="prefs.html" >Preferences dialog</A>
<LI>
<A href="groups.html" >Groups dialog</A>
<LI>
<HR>
<LI>
<A href="elementmenu.html#Bitmaps">Manage Bitmap Strikes</A>
<LI>
<A href="elementmenu.html#Regenerate">Re-Rasterize Bitmap Strikes</A>
<LI>
<HR>
<LI>
<A href="search.html" >Search & Replace dialog</A>
<LI>
<A href="Styles.html" >Style Transformation dialogs</A>
<LI>
<A href="transform.html" >Transformation dialog</A>
<LI>
<A href="elementmenu.html#Expand" >Expand Stroke dialog</A>
<LI>
<A href="tilepath.html" >Tile Path dialog</A>
<LI>
<A href="InsertTextDlg.html" >Insert Text dialog</A>
<LI>
<HR>
<LI>
<A href="metricsmenu.html#Width">Set width dialogs</A>
<LI>
<A href="metricsmenu.html#Width">Set left/right bearings</A>
<LI>
<A href="autowidth.html" >Auto Width & Kern dialogs</A>
<LI>
<HR>
<LI>
<A href="hintsmenu.html#Review" >Review PS Hints dialog</A>
<LI>
<A href="ttfinstrs.html" >TrueType Instruction Editor</A>
<LI>
<A href="ttfinstrs.html#cvt" >TrueType 'cvt ' Editor</A>
<LI>
<HR>
<LI>
<A href="selectbyatt.html" >Select by feature dialog</A>
<LI>
<A href="elementmenu.html#MassRename" >Rename Glyphs dialog</A>
<LI>
<A href="elementmenu.html#CompareFonts" >Compare Fonts dialog</A>
</UL>
<LI class="menu">
<A href="filemenu.html">Menus</A>
<UL>
<LI>
<A href="filemenu.html" >File</A>
<LI>
<A href="editmenu.html" >Edit</A>
<LI>
<A href="pointmenu.html" >Point</A>
<LI>
<A href="elementmenu.html">Element</A>
<LI>
<A href="toolsmenu.html">Tools</A>
<LI>
<A href="hintsmenu.html" >Hints</A>
<LI>
<A href="encodingmenu.html" >Encoding</A>
<LI>
<A href="viewmenu.html" >View</A>
<LI>
<A href="metricsmenu.html" >Metrics</A>
<LI>
<A href="cidmenu.html" >CID</A>
<LI>
<A href="mmmenu.html" >Multi Master</A>
<LI>
<A href="windowmenu.html" >Window</A>
<LI>
<A href="helpmenu.html" >Help</A>
</UL>
<LI>
<A href="faqFS.html">FAQ</A>
<LI>
<A href="IndexFS.html">Index</A>
<LI>
<A href="GlossaryFS.html">Glossary</A>
</UL>
</DIV>
<DIV id="in">
<H1 ALIGN=Center>
Font Info
</H1>
<P>
<IMG SRC="/assets/img/old/fontinfo.png" WIDTH="614" HEIGHT="548" ALIGN="Right">
<P>
The Font Info dialog is available from all views. It allows you to name your
font and various other useful bits of information. In a
<A HREF="fontview.html#CID">CID keyed font</A>, things are more complex.
Each CID keyed font is composed of man sub-fonts; this command works on the
current sub-font while there is a <A HREF="cidmenu.html#FontInfo">separate
command</A> to access the information for the font as a whole -- that dialog
looks the same. The dialog is composed of many different sub dialogs.
<UL>
<LI>
<A HREF="fontinfo.html#Names">Names</A>
<LI>
<A HREF="fontinfo.html#PS-General">General</A>
<LI>
<A HREF="#Layers">Layers</A>
<LI>
<A HREF="#PSUID">PostScript Unique IDs</A>
<LI>
<A HREF="fontinfo.html#Private">PostScript Private Dictionary</A>
<LI>
<A HREF="fontinfo.html#TTF-Values">OS/2</A>
<UL>
<LI>
<A HREF="fontinfo.html#TTF-Values">OS/2 Misc</A>
<LI>
<A HREF="fontinfo.html#TTF-Metrics">OS/2 Metrics</A>
<LI>
<A HREF="#SubSuper">OS/2 Sub/Superscripts</A>
<LI>
<A HREF="fontinfo.html#Panose">OS/2 Panose</A>
<LI>
<A HREF="#Charsets">OS/2 Charsets</A>
</UL>
<LI>
<A HREF="fontinfo.html#TTF-Names">TTF Names</A>
<LI>
<A HREF="#SSNames">StyleSet Names</A>
<LI>
<A HREF="#gasp">Grid Fit</A>
<LI>
<A HREF="fontinfo.html#TeX">TeX</A>
<LI>
<A HREF="#Size">Size</A>
<LI>
<A HREF="fontinfo.html#Comment">Comment</A>
<LI>
<A HREF="#FontLog">FONTLOG</A>
<LI>
<A HREF="#MarkClass">Mark Classes</A>
<UL>
<LI>
<A HREF="#MarkSets">Mark Sets</A>
</UL>
<LI>
<A HREF="#Lookups">Lookups</A>
<LI>
<A HREF="#WOFF">WOFF</A>
<LI>
<A HREF="#Mac-Style">Mac Style</A>
<LI>
<A HREF="#Mac-Features">Mac Features</A>
<LI>
<A HREF="#Dates">Dates</A>
<LI>
<A HREF="#Unicode">Unicode Ranges</A>
</UL>
<H2>
<A NAME="Names">Names</A>
</H2>
<P>
PostScript fonts have several different names, but basically there are two
important ones: the family name (like Times) and the fontname (which is the
family name with a bunch of modifiers like Bold Italic Condensed tacked on
to the end. The FullName is designed to be read by humans, while the others
are for machines, this name can contain spaces (like "New Century Schoolbook-Bold
Condensed"). Finally there is the weight name. All of these names should
be in ASCII. If you wish to enter names with characters outside this range
look at the <A HREF="#TTF-Names">TTF Names</A> Section.
<P>
The copyright field can contain whatever you want to put there, but it's
a good place to put a copyright.
<P>
In most fonts the version field is a string (and so has minimal constraints
on it), but in CID keyed fonts it must be a floating point number.
<P>
You may also specify a separate version number to be used in any sfnt generated
from this database; this should be a floating point number. Or you may leave
this field blank. If you leave it blank FontForge will generate a default
value based on other version information specified elsewhere.
<P>
Normally when <A HREF="generate.html">generating a font,</A> FontForge will
use the fontname as the base for the default filename of the font file (the
base to which the extension is added). But that is not always what you want.
You may wish to attach a version string to the fontname, or abbreviate it,
etc. The <CODE>Base Filename</CODE> field allows you to specify this to
fontforge.
<P>
Many of these names are similar to the english names of the
<A HREF="fontinfo.html#TTF-Names">TTF Names</A> section. If nothing is specified
in that section then the names specified here will be used by default in
ttf files.
<H2>
<IMG SRC="/assets/img/old/fontinfo-general.png" WIDTH="614" HEIGHT="546" ALIGN="Right"><A
NAME="PS-General">General</A>
</H2>
<P>
This sub dialog contains a rather random collection of settings.
<P>
The Ascent and Descent are (in this current definition) Macintosh concepts
rather than PostScript, their sum, however, provides the size of the em-square
and that is very much a postscript concept. For postscript fonts this number
is set by strong convention to be 1000, while in most TrueType fonts it will
be 2048 (also a convention, but TrueType claims rasterization is faster if
the sum is a power of 2). Since both TrueType and Type1 (postscript) fonts
represent numbers as 16-bit integers ascent and descent must be less than
32767. TrueType is more restrictive and requires their sum to be less than
16384.
<P>
If you change the size of the Em you may choose to have all the outlines
(and kerning info) scaled to have the same proportion to the new value that
they had to the old. Warning: <FONT COLOR="Red"><STRONG>If your font has
truetype instructions scaling may break the font as entries in the <CODE>'cvt
'</CODE> table will not be scaled.</STRONG></FONT>
<P>
The Italic Angle indicates the slant of the font. FontForge can attempt to
guess a good value for you by looking at the stems of certain letters ("I"
for instance).
<P>
The underline position and height provide a program using this font a hint
as to where it should place a line if it wants to underline text printed
in this font.
<P>
If you want your font to have <A NAME="vertical">vertical</A> metrics (generally
this means you are working on a CJK font) then check the <CODE>[*] Has Vertical
Metrics</CODE> checkbox. This will enable the Vertical Origin field, and
will mean that when you generate a truetype or opentype font a vertical metrics
table will be added. The Vertical Origin is the vertical offset from the
origin of the design coordinate system to the origin for the purposes of
vertical metrics.
<P>
<A NAME="Interpretation">Sadly</A> the encoding is not always sufficient
for understanding the font's behavior. For example a unicode font designed
for a chinese system will look very different from a unicode font for a japanese
system (The same unicode character may map to very different chinese or japanese
glyphs). To handle this FontForge has the concept of "Interpretation".
<P>
When you create a new glyph in a font, fontforge will assign it a name based
on the current
<A HREF="encodingmenu.html#namelist">namelist</A>.<BR CLEAR=ALL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-layers.png" WIDTH="607" HEIGHT="547" ALIGN="Right"><A
NAME="Layers">Layers</A>
</H2>
<P>
You may control how many and what types of layers are available in your font.
<P>
Fonts may be either outlined or stroked, or (if you configured FontForge
for <A HREF="multilayer.html">multi-layered editing</A>) type3. You may choose
which kind of font you want.
<P>
You may also decide what kind of splines you want in the font in general,
often all the layers will use the same type of splines (so there are radio
buttons to make that easy), but it isn't required each layer may be in its
own format.
<P>
If you mark a layer as quadratic (or check <CODE>[*] All layers Quadratic)
</CODE>then FontForge will use quadratic
<A HREF="overview.html#spline">Bézier</A> splines for this layer rather
than cubic Béziers, this means that FontForge will be using the native
spline format of truetype rather than postscript (or opentype). When FontForge
generates a font it will convert from whatever format is used internally
to whatever format is required for the font, so there will be no problem
if this is set incorrectly, but setting it correctly for your font means
you get a clearer idea of what the outlines will look like. I find quadratic
splines harder to edit with because each spline is less flexible, but the
advantage of actually seeing what your truetype font will look like may outweigh
that.
<P>
You may also mark a layer as a foreground layer or a background layer. Background
layers can hold images. Pasting into an empty glyph in a background layer
will not set the width. Splines in background layers do not make a glyph
worth outputting.<BR Clear=ALL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-psuid.png" WIDTH="376" HEIGHT="608" ALIGN="Right"><A NAME="PSUID">PostScript
Unique ID</A>
</H2>
<P>
<FONT COLOR="Red"><SMALL><STRONG>NOTE:</STRONG></SMALL></FONT>
<A HREF="UniqueID.html">Adobe now says</A> that both XUID and UniqueID are
unnecessary.
<P>
The XUID field is a collection of numbers separated by spaces and enclosed
in brackets. This allows you to specify the extended unique ID of the font.
If you have set the XUID preference entry then FontForge will assign values
to all new fonts (by appending a number unique to this font to the end of
your preference item). Adobe recommends that the XUID be changed every time
the font is changed, so each time you generate a postscript font, that font's
XUID (if present) will be incremented by 1 (This incrementing does not happen
in CID-keyed fonts, where the XUID behavior is too complex for this simple
trick). (The XUID field is only meaningful in PostScript fonts).
<P>
The UniqueID field is an older convention for the same purpose as XUID. If
you do not fill in this field then FontForge will pick a random number for
you in the allowable range. If you want your font to have no unique id then
give this the value of -1. If you have talked to Adobe and been assigned
a real UniqueID then you may use this field, otherwise leave it blank. (The
UniqueID field is only meaningful in PostScript fonts)<BR CLEAR=ALL>
<H2>
<A NAME="Private">Private</A> -- <SMALL>(font-wide postscript hinting)</SMALL>
</H2>
<P>
<IMG SRC="/assets/img/old/fontinfo-private.png" WIDTH="480" HEIGHT="548" ALIGN="Right">This
sub-dialog shows most entries in the font's Private dictionary. The interesting
things in this dictionary are mostly concerned with hints appropriate for
the entire font. I shall not go into detail about the meanings of the various
entries, that is best understood by reading
<A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF">Adobe's
Type1 specification</A>.
<P>
Don't try to change these until you understand what they mean.
<P>
The dialog is shown at right. It consists of a list of dictionary key/value
pairs. The keys are on the left, values on the right. Generally you will
want to use the standard PostScript keys (these are available from a pulldown
list that appears when you press one of the little grey buttons).
<P>
Note: The values must be things which PostScript can parse. This means that
<CODE>ForceBold</CODE> must have a value of "false" or "true", and "False"
or "faux" will not work. Similarly the decimal point in numbers must be "."
(not ","). If you enter a "," by mistake FontForge will convert it for you.
<P>
For example the <CODE>BlueValues</CODE> entry specifies certain key regions
of the font in a vertical direction. For instance it might contain the baseline
serif, the x-height serif, the cap-height serif. It is expressed as an array
of numbers, grouped in pairs. The first number of a pair is the low end of
the region and the second is the high end. So in the example at right, the
value of <CODE>BlueValues</CODE> is <CODE>[-20 0 437 457 583 603 623
643</CODE>.
<P>
When the <CODE>[Guess]</CODE> button is enabled FontForge thinks it can make
a reasonable guess for the value of the currently selected entry.
<P>
The <CODE>[Histogram]</CODE> button is similar, it will bring up a
<A HREF="histogram.html">dialog showing a histogram</A> of the values of
an attribute of the font. The hope is that this will allow you to pick a
good value for the entry.
<P>
You may also delete an entry from the dictionary with the <CODE>[Delete]
</CODE>button. Some entries (such as <CODE>BlueValues</CODE>) must be present
in any type1 font, but you may still delete them. FontForge will simply guess
at a reasonable value when it needs to generate the font.
<P>
Certain keys affect things other than hints. The <CODE>lenIV</CODE> entry
controls how much random padding is placed around the type1 strings when
the font is generated. Normally this will be 4, but if you want to save space
(4 bytes per glyph in pfb format, 8 bytes in pfa) you may choose another
value. The UniqueID key represents the font's Unique postscript ID. If you
provide a value here then FontForge will copy it into the UniqueID field
in the Font Dictionary. (this is different from True Type's UniqueID. They
perform the same function but are formatted differently).
<P>
Some of these entries are only meaningful for PostScript fonts, others will
be used by the truetype autoinstructor.<BR CLEAR=ALL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-ttfvals.png" WIDTH="376" HEIGHT="608" ALIGN="Right"><A
NAME="TTF-Values">OS/2</A>
</H2>
<P>
This sub dialog contains settings important for Windows platforms, most of
these settings live in the 'OS/2' table of a truetype or opentype font. The
pane also includes a few pieces of data that do not live in the 'OS/2' table
but are logically related.
<P>
The weight class provides a numeric value describing the boldness of the
font. A normal face will usually have a boldness of 400, and a bold face
will usually be 700. This must be a number between 100 and 900.
<P>
The width class allows you to provide a numeric value saying how condensed
or expanded this font is.
<P>
The PFM Family is used when generating PFM files and classifies the font
into some rather broad categories (Serif, Sans, Monospace, Script, Decorative).
<P>
You can control whether you want to allow your font to be embedded into other
documents (most commonly pdf). You can restrict it so that it can never be
embedded, it can be embedded into documents that can be printed (but not
edited), it can be embedded into documents that can be edited, or it can
be embedded into an editable document and later extracted and installed on
a different system. You can also control whether the document producer is
allowed to extract the glyphs it needs and make a new font from them (which
saves space) or whether they must include the entire font if they use any
of it. Finally you can restrict the embedding so that only bitmap versions
of the font may be embedded. (meaningful in CID keyed postscript fonts as
well as TTF and OTF).
<P>
The "Vendor ID" is a four character ASCII field used to identify the creator
of the font.
<P>
The IBM Family is another classification scheme for fonts.
<P>
Finally you may order lookups in the GSUB (or morx) table.
<P>
These entries are only meaningful in TrueType and OpenType fonts (though
the Embeddable entry (generally called FSType) will be set on CID keyed fonts
even if they are not in an OpenType wrapper.<BR CLEAR=ALL>
<H3>
<CODE><A NAME="Order"><IMG SRC="/assets/img/old/GSUB-Order.png" WIDTH="185" HEIGHT="294"
ALIGN="Right">GSUB/morx</A></CODE> Ordering
</H3>
<P>
This dialog allows you to control the order features in which are to be executed
by the word processing program. If you have loaded an opentype or truetype
font then the original order will be maintained. As you add more features
they will appear at the bottom of the list (which may not be appropriate).
You may select a feature name and use the buttons to move it up and down
in the list. Things at the top of the list are executed first, things at
the bottom last.
<P>
<FONT COLOR="Red"><STRONG>Caveat: </STRONG></FONT>Although the OpenType spec
claims that the execution of features (actually lookups) will be ordered
by their appearence in the lookup table, MicroSoft claims that they will
apply features in the order that they think best. So the order specified
in the font may be ignored.<BR CLEAR=ALL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-ttfmetrics.png" WIDTH="376" HEIGHT="608" ALIGN="Right"><A
NAME="TTF-Metrics">OS/2 Metrics</A>
</H2>
<P>
The Windows Ascent and Descent fields are badly defined in the OpenType spec,
which says that they should express the maximum range of the Windows "ANSI"
glyphs. If one uses this definition, non-"ANSI" glyphs are cropped. These
should be the maximum range of all glyphs to avoid cropping. But even that
will not always work. If you have a line with marks which are repositioned
with GPOS, then the marks may be cropped, so Windows Ascent should include
the maximum possible height of repositioned marks (or any other GPOS vertical
repositioning feature).
<P>
This is too complex (and too ill defined) for FontForge to figure out, instead
FontForge gives you a couple of options.
<OL>
<LI>
You may set WinAscent and WinDescent directly. Turn off the "[ ] Is Offset"
checkboxes and any value you provide will be used as is.
<LI>
Or you may specify an offset to be added to the maximum ascent and descent
of the font (which FontForge will compute for you when it saves the font).
If you don't have a mark to base feature, then I recommend that you set the
offsets to 0, and check the "[*] Is Offset" checkboxes.
</OL>
<P>
Both WinAscent and WinDescent should be positive numbers.
<P>
The Typographic Ascent and Typographic Descent are <EM>supposed</EM> to represent
the line spacing of the font on the windows platform. Sadly very few applications
actually use them (most applications use the Windows Ascent/Descent described
above).
<P>
In traditional (Latin) typography, the unleaded line spacing should be 1em,
and that is what Adobe recommends for these fields (they should sum to the
Em-Size specified in the <A HREF="fontinfo.html#PS-General">General</A> pane).
The Typographic Ascent should be the same as the font's Ascent, and the
Typographic Descent should be the (negative) of the font's descent.
<P>
The "[*] Is Offset" checkboxes behave much as they do above, except they
specify offsets from the font's ascent and descent rather than its bounding
box.
<P>
The Typographic descent should be a negative number, the ascent a positive
number.
<P>
You can also specify the default line gap, or leading between lines.
<P>
The mac uses a different set of fields for the same concepts, and stores
them in the 'hhea' table rather than the 'OS/2'. The HHead Ascent and Descent
are used to specify clipping (in some applications) and line spacing. They
behave very much the way the Win Ascent & Descent behave (they are based
on bounding box values). And the 'hhea' table has its own line gap field.
<P>
And if your font has vertical metrics enabled (See
<A HREF="fontinfo.html#PS-General">General</A> above) you will be able to
set the default spacing between vertical columns of text. (the equivalent
to LineGap in vertical text).
<P>
<A HREF="faq.html#linespace">See the FAQ </A>for a discussion on the complexities
involved in setting the line spacing. <A HREF="baseline.html">The 'BASE'
table</A> provides a more precise method for setting line
spacing.<BR CLEAR=ALL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-subsup.png" WIDTH="376" HEIGHT="608" ALIGN="Right"><A
NAME="TTF-SubSuper">OS/2 Sub/Superscripts</A>
</H2>
<P>
The OS/2 table also contain information on scaling and positioning subscripts
and superscripts.
<P>
Most fonts don't really need this control. If you leave the [*] Default check
box on, then FontForge will generate some reasonable values on output (if
nothing significant changes, it will use the values shown here). If you want
control of these values, turn off the checkbox and the text fields will be
enabled for you to change.<BR Clear=ALL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-panose.png" WIDTH="376" HEIGHT="608" ALIGN="Right"><A
NAME="Panose">Panose</A>
</H2>
<P>
This sub-dialog allows you to describe your font in 10 different dimensions.
The exact meanings of many of these entries vary from script to script, and
even the Latin ones are not clear to me, I have merely typed them in as specified
in the <A HREF="http://fonts.apple.com/TTRefMan/RM06/Chap6OS2.html">true
type docs</A>. Better information is available from
<A HREF="http://www.panose.com/">HP</A>,
<A HREF="http://www.agfamonotype.com/hardware/pan1.asp">AGFA</A> and
<A HREF="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_48aa.asp">MS</A>,
<A HREF="http://forum.high-logic.com/viewtopic.php?f=4&t=941">discussion</A>.
<P>
If you leave the [*] Default checkbox set then FontForge will generate reasonable
values when the font is output, otherwise you may set these values manually.
<P>
These entries are only meaningful for TrueType, OpenType and SVG
fonts.<BR Clear=All>
<H2>
<IMG SRC="/assets/img/old/fontinfo-charsets.png" ALIGN="Right" WIDTH="614" HEIGHT="546"><A
NAME="Charsets">Charsets</A>
</H2>
<P>
The OS/2 table contains two fields which give some information about the
characters in the font. Windows is very picky about using fonts if the proper
code page bits are not set. If you leave the [*] Default checkboxes set then
FontForge will generate reasonable values when the font is output. Sometimes
you need to override that behavior if you wish Windows to use a font with
an incomplete code page.
<P>
These entries are only meaningful for TrueType, and OpenType
fonts.<BR Clear=All>
<H2>
<IMG SRC="/assets/img/old/fontinfo-ttfname.png" WIDTH="602" HEIGHT="534" ALIGN="Right"><A
NAME="TTF-Names">TTF Names</A>
</H2>
<P>
TrueType (and OpenType) fonts are allowed to have different names in different
languages. So a French user might see CaslonItalic displayed as CaslonItalique
in a font menu, while a German user might see CaslonKursive. There are about
20 different strings which may be customized into various different languages.
Customizing one string does not mean that you must customize the others (indeed,
often only the Style string will be customized).
<P>
The image at right shows the dialog, displaying all the strings set for the
given font. You may order these strings based on type of string (ordered
as below), on language (ordered by unicode), or by a variation of language
which displays strings for the language of the current locale first, then
English strings (because, in general, these will be the most important for
the user) and then ordered by language thereafter.
<P>
Certain strings in English (Copyright, Family, Styles, Fullname, Version)
will always be present. If you do not set them explicitly they will be taken
(possibly with modifications) from the equivalent postscript strings on the
<A HREF="fontinfo.html#Names">Names</A> pane. You may not remove these strings,
and if you wish to modify them you must first detach them from the PostScript.
In the example at right the strings bound to PostScript are shown in red
(Copyright, Family, Styles), while Fullname and Version have been detached
and modified.
<P>
You may change the language of a string by clicking the mouse on the language
field of that string -- a popup menu will appear giving you a choice of all
supported locale/languages. (You may not modify the language of the special
English strings mentioned above).
<P>
You may change the string type in a similar manner, again you may not change
the special English strings.
<P>
If you click with the right button on a string you will bring up a different
popup menu which will allow you to:
<UL>
<LI>
Detach a string from its PostScript equivalent if any (so you can modify
it)
<LI>
Delete a string entirely (except for the special strings bound to PostScript)
<LI>
Edit a string in a larger window.<BR CLEAR=ALL>
</UL>
<P>
If you click with the left button on a string value you may edit that string
in line, if it is small enough,
<IMG SRC="/assets/img/old/fontinfo-ttfname-bigedit.png" WIDTH="343" HEIGHT="341" ALIGN="Right">otherwise
in a larger window.
<P>
If you wish to add a new string, click on the <New> entry at the bottom.
You will be given the standard language popup and it will create a new string
for you.
<P>
The various strings and a brief description of their meanings are:
<DL>
<DT>
Copyright
<DD>
Allows you to specify the copyright message
<DT>
Family
<DD>
The font's family name
<DT>
Styles (SubFamily)
<DD>
This should (in English) have values like "BoldItalicCondensed". This is
the most likely string to change in different languages.
<DT>
Fullname
<DD>
The concatenation of the Family name and the Styles name
<DT>
UniqueID
<DD>
This is a string that uniquely identifies the font in a human readable fashion.
Its format is quite different from postscript's UniqueID and FontForge will
create an appropriate string if you don't specify one (rather than copying
from postscript).
<DT>
Version
<DD>
A string containing the version number of the font.
<DT>
PostScript Name
<DD>
(FontForge will not let you set this directly. It will be set automatically
to the postscript fontname, only one instance of this tag is allowed in the
font and it must be ASCII)
<DT>
Trademark
<DD>
A string containing any trademark information for the font.
<DT>
Manufacturer
<DD>
The name of the company that distributes the font.
<DT>
Designer
<DD>
The name of the person who designed the font.
<DT>
Descriptor
<DD>
A description of the font and its characteristics.
<DT>
VendorURL
<DD>
An URL pointing to the font's vendor.
<DT>
DesignerURL
<DD>
An URL (often an e-mail address) pointing to the font's designer
<DT>
License
<DD>
A string describing the license terms under which the font is marketed.<BR>
If you want to use the <A HREF="http://scripts.sil.org/OFL/">SIL Open Font
License</A>, there is a button at the bottom of the dialog which will add
that directly (so you don't need to type it in).
<!-- The warning below is no longer needed - the stuff got fixed properly
-->
<!--
<P>
MicroSoft recently (2009) released a security patch in which they decided
that font's whose 'name' table was bigger than 5K were insecure. Personally
I cannot fathom their logic, but that's OK, I usually can't. Unfortunately
many licenses <EM>are</EM> bigger than 5K, the OFL is for one, so it is now
"better" to include a link to a license website rather than the full text
of the license -- at least it is if you want your font to work on Windows.
-->
<DT>
License URL
<DD>
An URL pointing to a page describing the terms of the license
<DT>
Preferred Family
<DD>
This is to get around a quirk of windows where only four Style names are
allowed per family, so font families with more than four styles would get
different family names above, but the preferred family name would be the
same. This should only be specified if it differs from the family
<DT>
Preferred Style
<DD>
This is similar to the above, except it applies to the style.
<DT>
Compatible Full
<DD>
This is to get around a quirk on the Mac.
<DT>
Sample Text
<DD>
Whatever.
</DL>
<P>
These are described in the
<A HREF="http://fonts.apple.com/TTRefMan/RM06/Chap6name.html">original true
type docs</A>, but they apply to
<A HREF="http://partners.adobe.com/asn/tech/type/opentype/recom.jsp">open
type</A> as well.
<P>
These settings specify strings for the windows platform with unicode encoding.
<P>
Generally fonts will have a fairly complete set of strings in the American
English entry, with the Style string (and nothing else) translated into different
languages.
<P>
When you create a Style entry for an language, FontForge will attempt to
translate the American English style into something appropriate for that
language. It understands languages in <A HREF="fontstyles.html">the table
on the font styles page</A>, but not others so it won't always work.
<P>
So if your style in American English is "BoldItalic" then after you create
the appropriate strings FontForge will default to "GrasItalique" for French,
"FettKursiv" for German, "NigritaCursiva" for Spanish, etc.
<P>
These names are only meaningful for TrueType and OpenType fonts.
<H2>
<A NAME="SSNames"><IMG SRC="/assets/img/old/fontinfo-ssnames.png" WIDTH="614" HEIGHT="374"
ALIGN="Right">StyleSet Names</A>
</H2>
<P>
The OpenType features 'ss01'-'ss20' are magic, and you are allowed to provide
more interesting names for them than the default "Style Set 01"... This table
allows you to assign names, in various languages to the various features.
It is very similar to, though less complicated than, the previous
pane.<BR CLEAR=ALL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-gasp.png" WIDTH="540" HEIGHT="314" ALIGN="Right"><A NAME="gasp">Grid
Fit ('gasp' table)</A>
</H2>
<P>
The TrueType 'gasp' table gives you control over whether the rasterizer should
do grid-fitting or anti-aliasing at any given pixel size. Note that this
table only applies to <EM>TrueType</EM> fonts, it does not apply to Type2
PostScript (fonts with .otf extension).
<P>
The table consists of a set of pixel sizes with corresponding flags. For
each entry in the table the flags apply to all pixel sizes bigger than the
previous entry but less than or equal to the current entry. The table must
be terminated with a pixel size of 65535.
<P>
Pressing the [Default] button will provide you with a default 'gasp' table.
If your font contains no instructions this will be different than the 'gasp'
table for a font with instructions.
<P>
MS has recently expanded the table. Version 0 of the table had two bits for
each pixel value, version 1 has four bits, two of which control the behavior
of their ClearType rasterizer. They have also added a bit to the 'head' table
called optimized_for_cleartype; if this bit is not set then some fonts will
not be hinted.
<P>
In the table above:
<UL>
<LI>
All pixel sizes less than or equal to 8 will not be grid-fit but will have
anti-alias applied
<LI>
All pixel sizes between 9 and 16 (inclusive) will be grid-fit but not
anti-aliased.
<LI>
All pixel sizes above 16 will be both grid-fit and anti-aliased, and will
have Cleartype Symetric Smoothing done.<BR Clear=All>
</UL>
<H2>
<IMG SRC="/assets/img/old/fontinfo-tex.png" WIDTH="376" HEIGHT="600" ALIGN="Right"><A NAME="TeX">TeX</A>
</H2>
<P>
This allows you to set the TeX font parameters (which are described in Appendix
F, pp 98-100 of the MetaFont Book). There seem to be 3 different types of
font parameters, those for text fonts, those for math fonts and those for
math extension fonts. The later two have additional parameters which are
accessible through the [More Params] button. The default values for the Math
parameters are probably reasonable. <FONT COLOR="Red"><STRONG>The default
values for the Math Extension parameters are probably
unreasonable</STRONG></FONT>.
<P>
These values are stored in tfm files (should you generate a tfm file with
your font).<BR Clear=All>
<H2>
<IMG SRC="/assets/img/old/fontinfo-size.png" ALIGN="Right" WIDTH="453" HEIGHT="548"><A NAME="Size">Size</A>
</H2>
<P>
This allows you to set the design size of a font, the design range, and provide
a style name for this class of font.
<P>
In tradtional typography every point size of a given font would be slightly
different -- generally small point sizes would have proportionally more
white-space around the glyph and wider stems inside the glyph. This made
small point sizes more readable than they would otherwise be. Conversely
large pointsizes would tend to have less white space around them, otherwise
the letters would appear too far apart.
<P>
<A HREF="multiplemaster.html">Multi-master fonts</A> provide one method to
avoid this problem. This dialog provides another. Suppose you have a series
of font-faces designed for different point-sizes.
<TABLE CELLPADDING="2">
<TR>
<TD>Ambrosia-Regular-Small</TD>
<TD><9pt</TD>
</TR>
<TR>
<TD>Ambrosia-Regular-Text</TD>
<TD>9-13pt</TD>
</TR>
<TR>
<TD>Ambrosia-Regular-Heading</TD>
<TD>14-23pt</TD>
</TR>
<TR>
<TD>Ambrosia-Regular-Display</TD>
<TD>>=24pt</TD>
</TR>
</TABLE>
<P>
Then you would fill in this dialog to allow the font system to figure out
which font was appropriate for which point size. The dialog displays the
font's optimal size -- its design size, and the point range within which
it can be used.
<P>
In the example above all the different fonts would have the same "Style-ID"
this is an arbetrary number that links all fonts with this ID together (all
fonts in the same family, that is). However, Ambrosia-Italic-Text would have
a different Style ID. All fonts with the same Style ID should have the same
Style Name. Note that font names are now something like
"Ambrosia-Regular-Heading" -- the user should not be subjected to that
complication, as far as s/he is concerned there is just a font called
"Ambrosia-Regular" and all four of the above fonts are just instances of
it. So the Style Name of all four fonts above should be "Regular".
<P>
Adobe allows two forms of size information. In one, only the design size
field is specified, in the other all the fields must be specified. This
means that if you want to supply a design range you are also required to
provide a style id and name.<BR Clear=All>
<H2>
<IMG SRC="/assets/img/old/fontinfo-comment.png" WIDTH="369" HEIGHT="506" ALIGN="Right"><A
NAME="Comment">Comment</A>
</H2>
<P>
This allows you to keep track of arbitrary comments inside your font database.
It does not correspond to any postscript or truetype entity. It is intended
to store a changelog for the font itself, but could be used for other purposes...
<P>
Various font formats allow a random comment to be placed in the font, but
no format makes use of it. This is primarily to be used inside FontForge.
The comment should be in ASCII.
<H2>
<A NAME="FontLog">FONTLOG</A>
</H2>
<P>
This has the same interface as the Comment above. The FONTLOG is an idea
stolen from the Open Font License. It is description of the font and a log
of changes made to it over time and includes some more information about
the font as well (see the <A HREF="http://scripts.sil.org/OFL-FAQ_web"> OFL
FAQ)</A>. This pane allows you to store this information within the font
itself where it won't get lost.
<P>
<BR Clear=ALL>
<H2>
<A NAME="MarkClass">Mark Classes</A> & <A NAME="MarkSets">Mark Sets</A>
</H2>
<P>
<IMG SRC="/assets/img/old/fontinfo-markclasses.png" WIDTH="614" HEIGHT="475" ALIGN="Right"
ALT="Font Info Mark Classes"> The various marks in your font may be divided
into classes or sets. As I write (spring 2009) there is essentially no support
for mark sets, but that will change (Both Adobe and MicroSoft say their next
releases will support it).
<P>
The idea behind both is similar: In many lookups it is important to be able
to ignore some mark glyphs, but not others. For example when forming an arabic
ligature, the vowel marks are (usually) irrelevant to the ligature and you
would want to ignore all marks. In situations where you are positioning marks
on a base glyph you might in one case, want to ignore all marks that position
on top of the glyph while paying attention to those underneath it. And then
in another lookup, the reverse might be true.
<P>
At any rate, in some cases it is important to be able to categorize marks.
Both classes and sets let you do this. In the example right, latin marks
have been divided into those above the glyph and those below.
<P>
A glyph may appear in at most one class, while it may appear in many sets.
So when implemented, sets will be more versatile. On the other hand classes
can be stored more compactly in the font file (a slight advantage).
<P>
Once you have created your classes (or sets, or both) you may use them in
the <A HREF="lookups.html#Add-Lookup">Add Lookup </A>dialog from the
<A HREF="fontinfo.html#Lookups">Lookup</A> pane.
<P>
The Mark Set pane looks almost exactly like the Mark Class pane, and functions
similarly. From these panes you may add new classes, or edit old
ones.<BR Clear=ALL>
<H2>
<A NAME="Lookups">Lookups</A>
</H2>
<P>
<IMG SRC="/assets/img/old/fontinfo-lookups.png" WIDTH="602" HEIGHT="534" ALIGN="Right" ALT="Font Info Anchors">
This pane is so complex that it merits its <A HREF="lookups.html">own
section</A>.