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
|
<HTML>
<HEAD>
<!-- Created with AOLpress/2.0 -->
<!-- AP: Created on: 23-Jun-2001 -->
<!-- AP: Last modified: 21-Sep-2008 -->
<TITLE>Stylistic Transformations on Fonts</TITLE>
<LINK REL="icon" href="ffanvil16.png">
<LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
</HEAD>
<BODY>
<DIV id="in">
<H1 ALIGN=Center>
Stylistic Transformations on Fonts
</H1>
<UL>
<LI>
<A HREF="#Embolden">Change Weight dialog</A>
<LI>
<A HREF="#Italic">Italic dialog</A>
<LI>
<A HREF="#Condense">Condense/Extend dialog</A>
<LI>
<A HREF="Styles.html#xheight">Change X-Height</A>
<LI>
<A HREF="Styles.html#changeglyph">Change Glyphs</A>
<LI>
<A HREF="#Smallcaps">Small Caps dialog</A>
<LI>
<A HREF="#SubSuper">Subscripts/superscripts dialog</A>
</UL>
<P>
<P>
The Style sub-menu provides a series of dialogs which allow you to create
some common stylistic variations of latin fonts.
<UL>
<LI>
Stems and their widths<BR>
Modification of a Stem's width makes the font appear Bolder or Lighter
<LI>
Counters and their widths (a counter is the white space between stems)<BR>
Modification of a Counter's width makes the font appear Expanded or Condensed
<LI>
Left and Right Side Bearings<BR>
Behavior similar to Counter's
</UL>
<P>
The results will probably always need to be examined and fixed up by the
human eye, but they may provide a help in changing a font's attributes.
<P>
It "works" best on sans serif, non-Oblique fonts.
<HR>
<H3>
Bold
</H3>
<P>
Bold fonts have thicker stems and are slightly more extended than normal
fonts. In Knuth's Computers & Typesetting, the bold fonts have a stem
width that is approximately 1.6 (1.68(at 12pt)-1.5(at 5pt)) times the stem
width of the normal font. This is very similar to the 1.75 suggested by
Microsoft's ratio of 700/400 (700 being the numeric weight of a bold font,
and 400 being the numeric weight of a normal font).
<P>
In Knuth's Computer Modern Bold Extended Roman, the "m" glyph is extended
to 1.15 times the width of the "m" in Computer Modern Roman, and the x-height
is 1.03 times higher.
<P>
<TABLE BORDER CELLPADDING="2">
<TR>
<TD>Font</TD>
<TD>Ratio of Bold/Regular Stems</TD>
<TD>Ratio of DemiBold/Regular</TD>
<TD>Expansion</TD>
<TD>Bold serif height/Regular serif</TD>
<TD>Bold serif width/regular</TD>
</TR>
<TR>
<TD>Arial</TD>
<TD>1.5</TD>
<TD></TD>
<TD>1</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Times New Roman</TD>
<TD>1.7</TD>
<TD></TD>
<TD>1</TD>
<TD>1</TD>
<TD>.98</TD>
</TR>
<TR>
<TD>Computer Modern Roman</TD>
<TD>1.68(at 12pt) - 1.5(at 5pt)</TD>
<TD></TD>
<TD>1.15</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Adobe Helvetica</TD>
<TD>1.6</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Adobe Times</TD>
<TD>1.56</TD>
<TD></TD>
<TD>1.17</TD>
<TD>1.10</TD>
<TD>.97</TD>
</TR>
<TR>
<TD>Garamond Antiqua</TD>
<TD></TD>
<TD>1.5</TD>
<TD></TD>
<TD>1.05</TD>
<TD>.90</TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
<P>
<H3>
Point Size
</H3>
<P>
At first glance this does not seem like much of a transformation, after all
postscript and truetype fonts can be drawn at any pointsize. But traditionally,
as the point-size decreases the boldness (thickness of the stems) increases
slightly, the counters and side bearings also change, and the overshoot
increases. For metal type there were generally three drawings for a glyph
in a given font, one for pointsizes less than 10, one for pointsizes 10,11
and 12, and one for display sizes (above 12). Most computer vector fonts
do not show this change, while Knuth's Computer Modern fonts have a continuum:
<TABLE CELLPADDING="2">
<CAPTION>
Stem width, scaled by point size, made relative to 12pt
</CAPTION>
<TR>
<TD></TD>
<TH>17pt</TH>
<TH>12pt</TH>
<TH>10pt</TH>
<TH>9pt</TH>
<TH>8pt</TH>
<TH>7pt</TH>
<TH>6pt</TH>
<TH>5pt</TH>
<TD></TD>
<TH>(12pt compared to cmr 12pt)</TH>
</TR>
<TR>
<TH>cmr</TH>
<TD>83%</TD>
<TD>100%</TD>
<TD>109%</TD>
<TD>116%</TD>
<TD>120%</TD>
<TD>124%</TD>
<TD>130%</TD>
<TD>139%</TD>
<TD>Computer Modern Roman</TD>
<TD>100%</TD>
</TR>
<TR>
<TH>cmti</TH>
<TD></TD>
<TD>100%</TD>
<TD>106%</TD>
<TD>112%</TD>
<TD>115%</TD>
<TD>122%</TD>
<TD></TD>
<TD></TD>
<TD>Computer Modern Text Italic</TD>
<TD>94%</TD>
</TR>
<TR>
<TH>cmbx</TH>
<TD></TD>
<TD>100%</TD>
<TD>105%</TD>
<TD>108%</TD>
<TD>112%</TD>
<TD>117%</TD>
<TD>120%</TD>
<TD>123%</TD>
<TD>Computer Modern Bold Extended</TD>
<TD>170%</TD>
</TR>
<TR>
<TH>cmtt</TH>
<TD></TD>
<TD>100%</TD>
<TD>109%</TD>
<TD>116%</TD>
<TD>120%</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD>Computer Modern Typewriter</TD>
<TD>100%</TD>
</TR>
<TR>
<TH>cmss</TH>
<TD>99%</TD>
<TD>100%</TD>
<TD>102%</TD>
<TD>109%</TD>
<TD>113%</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD>Computer Modern Sans Serif</TD>
<TD>120%</TD>
</TR>
</TABLE>
<!--<TABLE CELLPADDING="2">
<CAPTION>
Stem width, scaled by point size
</CAPTION>
<TR>
<TD></TD>
<TH>17pt</TH>
<TH>12pt</TH>
<TH>10pt</TH>
<TH>9pt</TH>
<TH>8pt</TH>
<TH>7pt</TH>
<TH>6pt</TH>
<TH>5pt</TH>
</TR>
<TR>
<TH>cmr</TH>
<TD>1.9</TD>
<TD>2.3</TD>
<TD>2.5</TD>
<TD>2.67</TD>
<TD>2.75</TD>
<TD>2.85</TD>
<TD>3</TD>
<TD>3.2</TD>
<TD>Computer Modern Roman</TD>
</TR>
<TR>
<TH>cmti</TH>
<TD></TD>
<TD>2.17</TD>
<TD>2.3</TD>
<TD>2.44</TD>
<TD>2.5</TD>
<TD>2.64</TD>
<TD></TD>
<TD></TD>
<TD>Computer Modern Text Italic</TD>
</TR>
<TR>
<TH>cmbx</TH>
<TD></TD>
<TD>3.9</TD>
<TD>4.1</TD>
<TD>4.2</TD>
<TD>4.37</TD>
<TD>4.57</TD>
<TD>4.67</TD>
<TD>4.8</TD>
<TD>Computer Modern Bold Extended</TD>
</TR>
<TR>
<TH>cmtt</TH>
<TD></TD>
<TD>2.3</TD>
<TD>2.5</TD>
<TD>2.67</TD>
<TD>2.75</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD>Computer Modern Typewriter</TD>
</TR>
<TR>
<TH>cmss</TH>
<TD>2.71</TD>
<TD>2.75</TD>
<TD>2.8</TD>
<TD>3</TD>
<TD>3.12</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD>Computer Modern Sans
Serif
<TR>
<TH>cmssi</TH>
<TD></TD>
<TD></TD>
<TD>2.8</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD>Computer Modern Slanted Sans Serif</TD>
</TR></TD>
</TR>
</TABLE>-->
<P>
<IMG SRC="CaslonOriginality.png" WIDTH="435" HEIGHT="300" ALIGN="Right">
<P>
To the left is an example of the same word (taken from a font specimen sheet)
printed at 3 different point sizes (8,12 and 24) and then scaled up to the
same size. The most obvious difference is that the glyphs are proportionally
wider at the smaller pointsizes. It is less apparent that the stems of the
letters are different:
<TABLE CELLPADDING="2">
<TR>
<TD></TD>
<TH>24pt</TH>
<TH>12pt</TH>
<TH>8pt</TH>
</TR>
<TR>
<TD>stem of the "n" (compared to 12pt)</TD>
<TD>89%</TD>
<TD>100%</TD>
<TD>117%</TD>
</TR>
<TR>
<TD>counter of the "n" (compared to 12pt)</TD>
<TD>104%</TD>
<TD>100%</TD>
<TD>89%</TD>
</TR>
<TR>
<TD>width of "originality" (compared to 12pt) </TD>
<TD>93%</TD>
<TD>100%</TD>
<TD>104%</TD>
</TR>
</TABLE>
<P>
<BR Clear=All>
<H3>
SmallCaps
</H3>
<P>
A SmallCaps font is made by <A HREF="transform.html">scaling</A> the capital
letters approximately to the x-height (so that they are the same height as
lower case letters without ascenders) and then adjusting the stem widths
(emboldening) so that they too will match stem widths of the lower case.
<H3>
Italic
</H3>
<P>
The Italic transformation contains at least five parts: A change in the
letterforms of the lowercase letters, a slight decrease in x-height, a
<A HREF="transform.html">skew</A>, and a condensation and a narrowing of
the vertical stems..
<TABLE BORDER CELLPADDING="2">
<TR>
<TD></TD>
<TD>Italic Angle</TD>
<TD>Condensation</TD>
<TD>Stem width change</TD>
<TD>X-Height change</TD>
</TR>
<TR>
<TD>Computer Modern Text Italic</TD>
<TD>14º</TD>
<TD>91%</TD>
<TD>94%</TD>
<TD>100%</TD>
</TR>
<TR>
<TD>Times New Roman</TD>
<TD>16º</TD>
<TD>100%</TD>
<TD>91%</TD>
<TD>96%</TD>
</TR>
<TR>
<TD>Adobe Times</TD>
<TD>15</TD>
<TD>100%</TD>
<TD>92%</TD>
<TD>95%</TD>
</TR>
</TABLE>
<P>
Letterform changes in Galliard:
<IMG SRC="ItalicCompGalliard.png" WIDTH="328" HEIGHT="33">
<P>
Letterform changes in
Caslon:<IMG WIDTH="368" HEIGHT="48" SRC="ItalicCompCaslon.png"> <BR>
<SMALL>(These glyphs have been deskewed to display the shape transformation
better.)</SMALL>
<P>
Cyrillic Letterform
changes:<IMG WIDTH="272" HEIGHT="45" SRC="CyrilItalicComp.png"> <BR>
<SMALL>(These glyphs are also deskewed.)</SMALL>
<P>
This is not a complete list, but it shows most of the salient features of
such a transformation.
<H3>
Oblique
</H3>
<P>
The Oblique transformation is a simple <A HREF="transform.html">skew</A>,
<TABLE BORDER CELLPADDING="2">
<TR>
<TD>Computer Modern Slanted Sans Serif</TD>
<TD>9.5º</TD>
</TR>
<TR>
<TD>Arial Italic (actually an oblique)</TD>
<TD>12º</TD>
</TR>
<TR>
<TD>Adobe Helvetica Oblique</TD>
<TD>12º</TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
<H3>
Extended/Condensed
</H3>
<P>
In these two transformations the stem width is held constant but the horizontal
counter sizes and side bearings are increased (or decreased for condensed).
<H3>
The <A NAME="Embolden">Change</A> Weight
dialog<IMG SRC="ChangeWeight.png" WIDTH="332" HEIGHT="281" ALIGN="Right">
</H3>
<P>
The Change Weight dialog starts out by stroking the glyph (Element->Expand
Stroke) and removing the internal contour. This means that each stem in the
glyph will now be wider by the number of em units specified at the top of
the dialog. Of course, this number may be negative, in which case you will
be making a lighter, rather than a bolder variant of the glyph.
<P>
You may find that in some cases the <A HREF="Styles.html#changeglyph">Change
Glyph </A>dialog will do a better job of emboldening or thinning a font.
Instead of increasing all stems by the same fixed amount it will increase
the thickness of each stem proportionate to its current thickness.
<P>
<IMG SRC="BoldHiraDA.png" WIDTH="270" HEIGHT="270" ALIGN="Left">For CJK fonts,
with complex shapes but without the constraint of the latin baseline and
cap height, this expansion is probably enough. The image at right shows the
Hiragana DA syllable -- the original glyph shape is in the background, and
the expanded shape is in the foreground.<BR Clear=All>
<P>
However if we do that to a latin (or Greek, or Cyrillic) glyph the result
is rather odd because the glyph no longer rests on the baseline, and also
extends above the cap-height (or x-height, or whatever line bounds this
particular glyph).
<TABLE BORDER CELLPADDING="2">
<TR>
<TD><P ALIGN=Center>
<IMG SRC="BexpandCJK.png" WIDTH="125" HEIGHT="217"></TD>
<TD><P ALIGN=Center>
<IMG SRC="BexpandLCGsquish.png" WIDTH="154" HEIGHT="218"></TD>
<TD><P ALIGN=Center>
<IMG SRC="BexpandLCG.png" WIDTH="176" HEIGHT="218"></TD>
<TD><IMG SRC="BexpandBigSerifs.png" WIDTH="213" HEIGHT="236"></TD>
</TR>
<TR VALIGN="Top">
<TD>Here the glyph has been expanded as if it were a CJK glyph. Note that
it now extends below the baseline and above the cap height. That is not good.</TD>
<TD>Here the glyph has been expanded as before, but the bottom stem has been
moved up just enough so that it now rides on the base line, and the top stem
has been moved down so it sits on the cap height.
<P>
But the counters are now much narrower than they were in the original glyph,
and the left and right side bearings have become squeezed.</TD>
<TD>In the final example, the glyph is expanded, the top and bottom stems
moved appropriately, the side bearings restored to their original size, and
the internal counters expanded to be closer to their original size.</TD>
<TD>Now consider the case of a serifed font. The serifs on the B above have
become huge, disproportionally bigger than they were in the original glyph.</TD>
</TR>
</TABLE>
<P>
<IMG SRC="ChangeWeight.png" WIDTH="332" HEIGHT="281" ALIGN="Left">Going back
to the original dialog. The first field specifies the amount by which each
stem should get bigger.
<P>
The radio buttons let you choose which method to use. CJK simply expands
the glyph and leaves it at that. LCG expands the glyph and then forces it
between the baseline and caps/x-height. Auto will chose which of those methods
to apply. Custom will basically use the LCG method but allows you to specify,
manually, what the interesting regions are in this particular glyph.
<P>
Any point above or on "Top Hint" will be moved down. Or if a point is on
a hint which surrounds "Top Hint" it will also be moved down. (Points on
the top stem of "B")
<P>
Any point below or on "Bottom Hint" will be moved up. Or if a point is on
a hint which surrounds "Bottom Hint" it will also be moved up. (Points on
the bottom stem of "B")
<P>
Any point which is on a hint which falls somewhere between Top Zone and Bottom
Zone will be fixed where it is. (Points on the middle stem of "B").
<P>
Any point which is Serif Height above the "Bottom Hint" (or Serif Height
below Top Hint) will remain where it is, meaning that some simple serifs
will not be expanded to an inappropriate size.
<P>
Any other points will be interpolated between the points which move (rather
like the TrueType IUP instruction -- indeed, the process of making a glyph
bolder is very like instructing a glyph).
<P>
[] Cleanup Self Intersect has the same meaning as the same field in the Expand
Stroke dialog.
<P>
And for the counters, <> Squish will result in the small counters that
come from expanding the glyph without doing anything to the counters,
<>Retain will attempt to retain the counters, and <>Auto will
Squish CJK glyphs and Retain LCG glyphs.
<H2>
<A NAME="Italic">Italic</A> dialog
</H2>
<P>
Let me reiterate that the italic transformation is quite different and much
more complex than the oblique transformation. Oblique fonts are made by the
same simple mathematical operation applied to the entire font. The italic
transformation can be different for each glyph.
<P>
Let me further add that FontForge will never be able to do everything that
should be done to make a good italic font from an upright font. It may provide
a helpful starting point. Some of my friends who know more about typography
than I have urged me not to write this dialog, saying that each italic font
should be made by hand, and there is much truth to their view. I made the
dialog anyway because I found it interesting to do so. Be warned: It isn't
complete. You need to examine what it has done and be prepared to redo many
characters (especially lower case letters) which it has not been able to
adapt.
<P>
The complexities of italic design stem from its origin. The Latin alphabet
as we now know it evolved over time. The upper case letters come from the
style the Romans used when carving inscriptions on their monuments. The lower
case letters come from a monastic script style, uncials, which were later
paired with the monumental capitals. The italic hand was another script,
initially monocase. Just as the lower case letters come from a different
stylistic tradition than the upper case (and hence look markedly dissimilar)
so the italic lower case comes from yet another tradition and looks different
from upright forms. Italic upper case were a much later addition and are
also based on the monumental capitals.
<P>
The italic lower case is
<UL>
<LI>
slanted -- this is extremely obvious (so obvious that when I compare upright
and italic glyphs I always deslant the italic to make other differences more
visible)
<LI>
condensed -- less obvious. Generally it will be condensed by about 90% which
isn't noticeable unless you look hard. Stems may be condensed at a different
percentage than counters (indeed, different stems may be condensed differently,
but fontforge doesn't support that because I don't find any consistency in
behavior to emulate).
<LI>
smaller x-height -- because a slanted line that reaches from baseline to
a given height is longer than the corresponding vertical line, it will also
appear (to the eye) to be slightly higher. To correct for this optical illusion,
the x-height of an italic font will generally be a little lower than the
xheight of its companion roman font. Note -- if the xheight changes, you
should adjust the BlueValues (and perhaps the FamilyBlues) with the
<A HREF="fontinfo.html#Private">Font Info dialog</A>.
<LI>
more flowing -- This may be extremely
obvious<IMG SRC="wItalic.png" WIDTH="68" HEIGHT="24">or more subtle -- in
some fonts even the apparently straight sides of "l" will have a slight curve
to them.
<LI>
different serifs -- The baseline serifs for the last stem on a glyph change
<IMG SRC="BottomSerif.png" WIDTH="68" HEIGHT="24">, while those of intermediate
stems become degenerate<IMG SRC="FlatSerif.png" WIDTH="49" HEIGHT="24">
<LI>
different letterforms -- Some letters simply have different shapes in italic:
<IMG SRC="fItalic.png" WIDTH="68" HEIGHT="26"><IMG SRC="aItalic.png" WIDTH="68"
HEIGHT="24"><IMG SRC="u433Italic.png" WIDTH="68" HEIGHT="24"><IMG SRC="u432Italic.png"
WIDTH="68" HEIGHT="24">
</UL>
<P>
The italic upper case is also slanted (and by the same angle), generally
condensed (but often less so than the lower case), and usually its serifs
and letter forms do not change significantly (though there can be exceptions:
<IMG SRC="ucEItalic.png" WIDTH="68" HEIGHT="24">)
<P>
In typographic tradition serifed fonts have a paired italic font, while
sans-serif fonts have an oblique font.
<P>
<IMG SRC="ItalicDlg.png" WIDTH="406" HEIGHT="715" ALIGN="Right">The italic
dialog attempts to give you control over as much of this as fontforge thinks
it can do. The dialog displays the steps mentioned above, but backwards.
<P>
First there are a series of check boxes for gross letterform changes. The
"a" glyph generally turns into a something that looks like the "d" glyph
without the ascender. The "f" glyph has (at least) two variants -- in one
the curved top is duplicated at the bottom, and in the other the main stem
is extended below the baseline but the serif is removed.
<P>
In actual practice these changes are more complex. If examined closely the
bottom part of the f doesn't look precisely like the top. FontForge isn't
up to such subtleties however.
<P>
The [] f checkboxes control additional characters which are similar to "f",
"long-s" for example, also the "fi", "fl", "ff", "ffi", "ffl", "longs_longs",
"longs_t", etc. ligatures. FontForge determines what glyphs it applies to
by examining the glyph name and unicode encoding; it does NOT do a sophisticated
analysis of the glyph's shape.
<P>
This does not exhaust the list of changes that could or should be done --
Merely the list of what FontForge thinks it can do. There should also be
checkboxes for:
<IMG SRC="eItalic.png" WIDTH="68" HEIGHT="24"><IMG SRC="vItalic.png" WIDTH="68"
HEIGHT="24"><IMG SRC="wItalic.png" WIDTH="68" HEIGHT="24"><IMG SRC="u432Italic.png"
WIDTH="68" HEIGHT="24"><IMG SRC="u433Italic.png" WIDTH="68" HEIGHT="24">
and many more.
<P>
FontForge will change serifs in various places.
<UL>
<LI>
baseline serifs -- The final stem of a glyph almost always undergoes a serif
transformation at the baseline. Previous stems generally have their serifs
become degenerate (flat lines)<IMG SRC="mItalic.png" WIDTH="108" HEIGHT="31">.
This transformation almost always happens.
<LI>
xheight serifs -- This transformation frequently happens.
<LI>
ascender serifs -- This transformation happens occasionally. Sometimes the
serif becomes very swash, somethings nothing changes.
<LI>
descender serifs -- Usually serifs on descenders degenerate into flat lines.
<LI>
diagonal serifs -- This transformation usually happens
<IMG SRC="xItalic.png" WIDTH="68" HEIGHT="24">
</UL>
<P>
When a serif becomes degenerate (as the first two do in the "m" above) they
often become flat with the baseline, but sometimes they will have a slant
to them.
<P>
Next is a matrix of compression factors (expressed as percentages). You can
control left and right side bearings, as well as stem and counter widths.
You may specify different values for lower case, upper case and symbols.
<P>
Finally we come to the italic angle. This will generally be between -10 and
-15 degrees.<BR CLEAR=ALL>
<H2>
<A NAME="Condense">Condense</A>/Extend
dialog<IMG SRC="CondenseExtend.png" WIDTH="321" HEIGHT="193" ALIGN="Right">
</H2>
<P>
This dialog allows you to change counter sizes without changing stem sizes
(in theory. It doesn't work too well with diagonal stems). You can make counters
bigger or smaller by a percentage, or by adding a fixed amount to them.
<P>
If the font has and Italic Angle specified in Font Info, then fontforge will
first unskew the glyph in the hopes of getting some vertical stems, then
Condense it, and the reskew it.<BR CLEAR=ALL>
<H2>
<A NAME="xheight">Change X-Height</A>
dialog<IMG SRC="ChangeXHeightDlg.png" ALIGN="Right" WIDTH="258" HEIGHT="188">
</H2>
<P>
This changes the x-height of a font. The dialog shows the current x-height
(or what it thinks is the current x-height), and you can chose an new value
for it. If the font has serifs and you don't want the serifs to change in
height then specify the current serif height. If you do want the serifs to
change, then set this field to 0.<BR Clear=ALL>
<H2>
<A NAME="changeglyph">Change Glyphs</A>
dialog<IMG SRC="ChangeGlyph1Dlg.png" ALIGN="Right" WIDTH="472" HEIGHT="242">
</H2>
<P>
The change glyphs dialog allows you to do a number of changes to all the
currently selected glyphs. It can
<UL>
<LI>
Increase or decrease the stem size (making the font bolder or less bold)
<LI>
Change the size of horizontal counters (Condense/Extend)
<LI>
Manipulate alignment zones with respect to one another (Change the x-height)
</UL>
<P>
The dialog has three pains, each controls one of these funtions.
<P>
The first dialog affects the stem width (or height, as the case may be).
In most cases you will want to scale horizontal and vertical stems by the
same proportion, so there is a check box to fix them together.
<P>
Generally you will also want to control diagonal stems to, but there are
still times when the algorithm is less than perfect.
<P>
Generally a proportional scale is more appropriate than adding a fixed amount
to each stem -- at least for Latin glyphs. But there may be cases where you
do what to add a fixed amount.
<P>
There are a few restrictions if you specify an additive amount here (again
due to imperfections of the algorithm). The additive amounts must have the
same sign for both horizontal and vertical stems (both negative, both zero,
or both positive). And the ratio of the two can't be more than 4.
<HR>
<P>
<IMG SRC="ChangeGlyph2Dlg.png" WIDTH="472" HEIGHT="292" ALIGN="Right">You
have various options for controlling horizontal contours. For monospace fonts
(or CJK fonts) you probably want to select the first option. For proportional
Latin fonts, select one of the other two.
<HR Clear="ALL">
<P>
<IMG SRC="ChangeGlyph3Dlg.png" WIDTH="472" HEIGHT="407" ALIGN="Right">Latin
glyphs are asymetric in their behavior along the horizontal and vertical
axes. Vertically glyphs are aligned at certain fixed heights (baseline, x-height,
cap-height, etc.), while horizontally there are no corresponding alignment
zones. So the vertical part of this dialog looks quite different from the
horizontal.
<P>
In CJK glyphs it may make sense to control vertical glyphs.
<P>
But in latin it makes more sense to map alignment zones. Here there is a
overall (default) scaling factor. If you don't adjust the zones yourself
then changing the scale factor will change the "Resultant Y Position" by
the obvious amount.<BR CLEAR=ALL>
<H2>
<A NAME="Smallcaps">Small Capitals</A>
dialog<IMG SRC="SmallcapsDlg.png" ALIGN="Right" WIDTH="471" HEIGHT="318">
</H2>
<P>
This dialog allows you to create a series of small caps glyphs. As the dialog
says, it is unlike most commands in that it does not change the selected
glyphs, instead it uses them to decide what glyphs to create (or if the glyphs
already exist, what glyphs to change).
<P>
So if you select "A" FontForge will create a glyph named "a.sc" copy the
outlines of "A" into that glyph, and then modify them. If you select lower
case "a", FontForge will again create "a.sc" and will copy the outlines of
upper case "A".
<P>
FontForge will also create two lookups, one which maps upper case letters
to small caps variants, and the other which maps lower case letters to the
small caps glyph. These will be bound to the "c2sc" and "smcp" features
respectively.
<P>
OpenType supports two different variants of small caps, the normal small
caps, and something called petite caps. Petite caps should be smaller than
small caps (the example given in the opentype docs is for a font with a small
x-height, small caps will be bigger than the x-height and petite caps will
be at the x-height). Like small caps, there are two features for petite caps:
"c2pc" and "pcap" (capital to petite caps and lowercase to petite caps).
<P>
If you turn on the <CODE>[] Create small caps variants for symbols</CODE>
checkbox, then any selected symbols will also be converted. However most
symbols don't have upper and lower case variants (one could argue that digits
do, but I shall ignore that complication here), so each selected symbol glyph
will get both feature mappings attached to it. Furthermore, symbols seem
to use a different glyph extension so the created glyphs will be
"nine.taboldstyle" rather than "nine.sc".
<P>
The default behavior is to transform the outlines by scaling the upper case
outlines so that the cap height becomes the small cap height, and scaling
the stems so that the upper case stem width becomes the lower case stem width.
Often the small cap height will be a little taller than the x-height -- though
the exact value will change from font to font -- the x-height is as good
a default as any. If you do not like the default behavior you have all the
options of the <A HREF="#changeglyph">Change Glyphs </A>dialog to play with.
<P>
<FONT COLOR="Red"><STRONG>Note: </STRONG></FONT>The default sizes are the
same for both small caps and petite caps. If you want both features you will
need to change settings for at least one of them!<BR CLEAR=ALL>
<H2>
<A NAME="SubSuper">Subscipt</A>/Superscript
dialog<IMG SRC="SubSuperDlg.png" WIDTH="526" HEIGHT="307" ALIGN="Right">
</H2>
<P>
There are several OpenType features which produce small variants of standard
glyphs. Often the stems are scaled differently (made bolder) from the remainder
of glyph.
<P>
As with the previous dialog this one does not modify the selected glyphs.
Instead it uses their outlines to create new glyphs (with the indicated glyph
extension) and creates a lookup mapping the original glyph to the new glyph.
<P>
So in the example at right, if you selected all the digits, then FontForge
would create a new set of glyphs named "zero.superior", "one.superior" ...
"nine.superior". It would create a new lookup bound to the feature "sups"
which would map "zero" to "zero.superior", etc. By default each new glyph
will be scaled down to be 2/3<SUP>rd</SUP>s the original size, but the stems
would only be scaled by 3/4 (so the glyph will look proportionately darker).
Finally each new glyph will be moved up by 450 em-units. Again if you don't
like these defaults you have all the options of the
<A HREF="#changeglyph">Change Glyphs</A> dialog to play with.<BR CLEAR=ALL>
<H3>
<A NAME="Caveat">Caveat</A>
</H3>
<BLOCKQUOTE ID="lit">
Then the bowsprit got mixed with the rudder sometimes,<BR>
A thing as the Bellman remarked<BR>
That frequently happens in tropical climes,<BR>
When a vessel is, so to speak, "Snarked".
<P align=right>
<EM>The Hunting of the Snark</EM>, Lewis Carroll
</BLOCKQUOTE>
<P>
<IMG SRC="ka-change.png" WIDTH="247" HEIGHT="139" ALIGN="Right">These commands
are not perfect. If there just isn't room in the glyph for the desired
transformation contours may overlap. Do look at your results and be prepared
to fix them up.
</DIV>
</BODY></HTML>
|