forked from fontforge/fontforge.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
elementmenu.html
1291 lines (1291 loc) · 49.6 KB
/
elementmenu.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: 11-Dec-2000 -->
<!-- AP: Last modified: 5-Apr-2010 -->
<TITLE>The Element Menu</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>
<LI>
<A href="metricsview.html" >Metrics</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>
The Element Menu
</H1>
<P>
<UL>
<LI>
<A HREF="#Font">Font Info</A>...
<LI>
<A HREF="#CharInfo">Glyph Info</A>...
<LI>
Other Info
<UL>
<LI>
<A HREF="#MATH">MATH Info...</A>
<LI>
<A HREF="elementmenu.html#BDF-Info">BDF Info...</A>
<LI>
<A HREF="#HBase">Horizontal Baselines...</A>
<LI>
<A HREF="#VBase">Vertical Baselines...</A>
<LI>
<A HREF="#Justify">Justification Information...</A>
<LI>
Show Dependencies
<UL>
<LI>
<A HREF="elementmenu.html#Dependencies">References</A>
<LI>
<A HREF="#DepSubs">Substitutions</A>
</UL>
<LI>
<A HREF="#MassRename">Mass Glyph Rename...</A>
</UL>
<LI>
<A HREF="#Info">Get Info</A>...
<LI>
<A HREF="#Problems">Find Problems...</A>
<LI>
<A HREF="#Validate">Validate...</A>
<LI>
<A HREF="#Bitmaps">Bitmap Strikes Available...</A>
<LI>
<A HREF="#Regenerate">Regenerate Bitmap Glyphs...</A>
<LI>
<A HREF="#RemoveBitmaps">Remove Bitmap Glyphs...</A>
<LI>
<A NAME="Style">Style</A>
<UL>
<LI>
<A HREF="#Embolden">Change Weight...</A>
<LI>
<A HREF="#Italic">Italic</A>
<LI>
<A HREF="#Oblique">Oblique</A>
<LI>
<A HREF="#Condense">Condense/Extend</A>...
<LI>
<A HREF="#xheight">Change X-Height...</A>
<LI>
<A HREF="#changeglyph">Change Glyph...</A>
<LI>
<A HREF="#SmallCaps">Add Small Caps</A>
<LI>
<A HREF="#SubSuper">Add Subscripts/Superscripts</A>
<LI>
<A HREF="#Outline">Outline</A>
<LI>
<A HREF="#Inline">Inline</A>
<LI>
<A HREF="#Shadow">Shadow</A>
<LI>
<A HREF="#Wireframe">Wireframe</A>
</UL>
<LI>
Transformations
<UL>
<LI>
<A HREF="#Transform">Transform</A>...
<LI>
<A HREF="#PoV">Point of View Projection</A>...
<LI>
<A HREF="elementmenu.html#Non-Linear">Non-Linear Transform</A>...<BR>
<LI>
<A HREF="#Flip">Flip Horizontally</A>
<LI>
<A HREF="#FlipV">Flip Vertically</A>
<LI>
<A HREF="#Rotate">Rotate 90° CW</A>
<LI>
<A HREF="#Rotate90CCW">Rotate 90° CCW</A>
<LI>
<A HREF="#Rotate180">Rotate 180°</A>
<LI>
<A HREF="#Skew">Skew</A>
</UL>
<LI>
<A HREF="#Expand">Expand Stroke...</A>
<LI>
<A HREF="elementmenu.html#TilePath">Tile Path...</A>
<LI>
<A HREF="#TilePattern">Tile Pattern...</A>
<LI>
Overlap
<UL>
<LI>
<A HREF="#Remove">Remove Overlap</A>
<LI>
<A HREF="#Intersect">Intersect</A>
<LI>
<A HREF="#Exclude">Exclude</A>
<LI>
<A HREF="#FindInter">Find Intersections</A>
</UL>
<LI>
Simplify
<UL>
<LI>
<A HREF="#Simplify">Simplify</A>
<LI>
<A HREF="elementmenu.html#SimplifyMore">Simplify More</A>
<LI>
<A HREF="#Cleanup">Cleanup Glyphs</A>
<LI>
<A HREF="#CanonicalSP">Canonical Start Points</A>
<LI>
<A HREF="#CanonicalContours">Canonical Contour Order</A>
</UL>
<LI>
<A HREF="elementmenu.html#Add-Extrema">Add Extrema</A>
<LI>
<A HREF="#AutoTrace">AutoTrace</A>
<LI>
<A HREF="#Align">Align</A>
<UL>
<LI>
<A HREF="elementmenu.html#Average">Average Points</A>
<LI>
<A HREF="elementmenu.html#Space-Pts">Space Points</A>
<LI>
<A HREF="elementmenu.html#Space-Regions">Space Regions</A>
<LI>
<A HREF="#Parallel">Make Parallel</A>
</UL>
<LI>
Round
<UL>
<LI>
<A HREF="#Round">To Int</A>
<LI>
<A HREF="#Hundredths">To Hundredths</A>
<LI>
<A HREF="#Cluster">Cluster</A>
</UL>
<LI>
<A HREF="#Order">Order</A>
<UL>
<LI>
First
<LI>
Earlier
<LI>
Later
<LI>
Last
</UL>
<LI>
<A HREF="#Clockwise">Clockwise</A>
<LI>
<A HREF="#Counter">Counter-Clockwise</A>
<LI>
<A HREF="#Correct">Correct Direction</A>
<LI>
<A HREF="#Insert-Text">Insert Text Outlines...</A>
<LI>
Build
<UL>
<LI>
<A HREF="#Accented">Build Accented Glyph</A>
<LI>
<A HREF="#Accented">Build Composite Glyph</A>
<LI>
<A HREF="#BuildDuplicate">Build Duplicate</A>
</UL>
<LI>
<A HREF="#Merge">Merge Fonts...</A>
<LI>
<A HREF="#Interpolate">Interpolate Fonts...</A>
<LI>
<A HREF="#CompareFonts">Compare Fonts...</A>
<LI>
<A HREF="#CompareL2L">Compare Layer To Layer...</A>
</UL>
<P>
There are also two menu entries which are not part of the default build but
which may be configured by modifying <CODE>configure-fontforge.h</CODE> before
compiling FontForge.
<UL>
<LI>
<A HREF="#TilePath">Tile Path</A>
<LI>
<A HREF="#NonLinear">Non Linear Transform...</A>
</UL>
<P>
<DL>
<DT>
<A NAME="Font">Font</A> Info
<DD>
In all views this brings up the <A HREF="fontinfo.html">Font Info
dialog</A>.<BR>
CID keyed fonts can set information on the CID font as a whole (rather than
just the current sub-font, which is what this command does) from
<A HREF="cidmenu.html#FontInfo">CID->CID Font Info</A>.
<DT>
Glyph <A NAME="CharInfo">Info</A>
<DD>
In the all views this brings up the <A HREF="charinfo.html#Character">Glyph
Info dialog</A>.
<DT>
<A NAME="MATH">MATH</A> Info...
<DD>
Brings up the <A HREF="math.html">MATH Info dialog</A>.
<DT>
<A NAME="BDF-Info">BDF</A> Info
<DD>
If you have bitmaps in your font, then in the font view or bitmap view this
command will bring up the <A HREF="bdfinfo.html">BDF Info dialog.</A>
<DT>
<A NAME="HBase">Horizontal Baselines...</A>
<DD>
This <A HREF="baseline.html">dialog</A> gives you control over the OpenType
'BASE' table which allows you to specify different baselines for different
scripts, and how to align those baselines with each other. It also provides
fine control over the inter-baseline spacing (the line height).
<DT>
<A NAME="VBase">Vertical Baselines...</A>
<DD>
This <A HREF="baseline.html">dialog</A> gives you control over the OpenType
'BASE' table which allows you to specify different baselines for different
scripts, and how to align those baselines with each other. It also provides
fine control over the inter-baseline spacing (the column width).
<DT>
<A NAME="Justify">Justification</A> Information...
<DD>
This <A HREF="justify.html">dialog</A> allows you to examine and provide
the information needed for the OpenType JSTF table -- information which helps
layout engines do text justification.
<DT>
Get <A NAME="Info">Info</A>
<DD>
In the outline view this brings up <A HREF="getinfo.html">one of four different
dialogs</A> (Point Info, Image Info, Reference Info, Anchor Point Info) depending
on what is selected.
<DT>
Show Dependencies
<DL>
<DT>
<A NAME="Dependencies">References</A>...
<DD>
This dialog is not available in the bitmap view. It shows you what glyphs
contain a reference to the current glyph. You can open a window looking at
any of the dependent glyphs by selecting that glyph and pressing the [Show]
button.
<DT>
<A NAME="DepSubs">Substitutions</A>...
<DD>
Show any glyphs that have substitutions (ligatures, multiple subs, etc.)
which depend on the current glyph. So if you select "i", you might see that
"fi" depended on it as a ligature, and if you select "A.swash" you might
see that "A" depended on it as a 'swsh' alternate subs.
</DL>
<DT>
<A NAME="MassRename">Mass Glyph Rename...</A>
<DD>
<IMG SRC="/assets/img/old/MassRename.png" WIDTH="429" HEIGHT="288" ALIGN="Right">This allows
you to rename a bunch of selected glyphs. It can be used in two ways, either:
<UL>
<LI>
You want to rename all the selected glyphs by adding a suffix to their names
(this might be useful if you are working with a small caps Type1 font that
you wanted to convert to an otf font, where the old convention was just to
name the glyphs as "a", "b" and so forth rather than "a.sc", "b.sc", etc.).
<LI>
Or you can select a block of glyphs, and specify another glyph somewhere
in the encoding, then the selected glyphs would get be named by appending
the suffix to the sequence of glyphs starting with the one identified in
the dialog. (This might be useful if you wanted to add a small caps collection
to an existing font). In this case you may also specify a lookup subtable
so that the base glyphs would get substituted by the appropriate renamed
glyphs when that subtable was activated (this can't be done in the previous
case, because there are no longer any base glyphs)
</UL>
<DT>
Find <A NAME="Problems">Problems</A>...
<DD>
This command is not present in the bitmap view. It will search for several
common problems. In the glyph view it will select anything that needs to
be fixed, in the font view it will check all selected glyphs and if any have
problems will open them and select the problems. It will post a message telling
you of each problem found. It brings up the <A HREF="problems.html">Find
Problem</A> dialog to let you choose what problems to look for.
<DT>
<A NAME="Validate">Validate</A>...
<DD>
Rather similar to Find Problems, but works with a much smaller set of things
which are definitely errors, and provides an overview of the problems found
in all glyphs of the font. See the <A HREF="validation.html">validation
page</A> for more info.
<DT>
<A NAME="Bitmaps">Bitmap Strikes</A> Available...
<DD>
This brings up a list of pixel sizes for bitmap fonts.<BR>
<IMG SRC="/assets/img/old/bitmapsavail.png" WIDTH="317" HEIGHT="365" ALIGN="Right"> If you
have bitmap fonts this will show their pixel sizes. If you remove a size
that is in the list then that font will be deleted from the sfd file. If
you add a size then that size font will be created and stored in the sfd
file.
<P>
FontForge deals in pixel sizes, not point sizes. The conversion between pixels
and points differs on different systems and indeed on different screens.
A point is (approximately) 1/72 of an inch, a pixel is however big a pixel
happens to be on your screen. Usually pixels range from about 1/72 of an
inch to about 1/144 of an inch. Different systems support different screen
resolutions as "standard", and FontForge tries to know about these standards.
<TABLE BORDER CELLPADDING="2" ALIGN=Center>
<CAPTION>
Some conversions between points and pixels
</CAPTION>
<TR>
<TH><P ALIGN=Left>
<U>Screen Resolution</U><BR>
Point Size</TH>
<TH>72dpi<BR>
Mac</TH>
<TH>75dpi<BR>
X</TH>
<TH>96dpi<BR>
Win</TH>
<TH>100dpi<BR>
X</TH>
<TH>120dpi<BR>
Win</TH>
</TR>
<TR>
<TH>10pt</TH>
<TD>10</TD>
<TD>10</TD>
<TD>13</TD>
<TD>14</TD>
<TD>17</TD>
</TR>
<TR>
<TH>12pt</TH>
<TD>12</TD>
<TD>12~13</TD>
<TD>16</TD>
<TD>17</TD>
<TD>20</TD>
</TR>
<TR>
<TH>18pt</TH>
<TD>18</TD>
<TD>19</TD>
<TD>24</TD>
<TD>25</TD>
<TD>30</TD>
</TR>
<TR>
<TH>24pt</TH>
<TD>24</TD>
<TD>25</TD>
<TD>32</TD>
<TD>33</TD>
<TD>40</TD>
</TR>
</TABLE>
<P>
Sadly your screen will probably not match one of the standard screens precisely.
On X the standard resolutions are 75 and 100dpi, on MS Windows 96 and 120dpi,
and on the Mac 72dpi. This dialog provides the conversion between pixel size
and point sizes at these resolutions.
<P>
Normally the new glyphs are created by rasterizing the outline font. If your
system has the freetype2 library installed (and you checked the "Use FreeType"
box) then FontForge will use the FreeType rasterizer to generate bitmaps,
otherwise it will use FontForge's built-in rasterizer (which isn't as good,
but involves a little less overhead).
<P>
Finally, if you have no outline font then the new glyphs will be created
by scaling the (bitmap) font displayed in the font view.
<P>
If you want to generate a blank strike (one containing no glyphs) then turn
off the <CODE>[] Create Rasterized Strikes</CODE> checkbox.
<P>
In CID keyed fonts there will not be a set of bitmaps for each sub font,
instead the entire complex of sub-fonts share bitmaps. <BR Clear=Right>
<P>
<IMG SRC="/assets/img/old/greymapsavail.png" WIDTH="263" HEIGHT="366" ALIGN="Right">FontForge
also supports anti-aliased bitmap fonts, and you can use this dialog to generate
them. If you want to generate a 12 point anti-aliased font with 8 bits per
pixel you would type 12@8 into the dialog above. FontForge supports 1, 2,
4 and 8 bit per pixel fonts (a 1 bit per pixel font is a standard bitmap,
the others are greymaps).<BR>
(New greymaps can not be created by scaling old greymaps, if you wish to
generate a greymap font, you must have an outline font).
<DT>
<A NAME="Regenerate">Regenerate</A> Bitmap Glyphs...
<DD>
If you have changed the outline that a bitmap is based one then you should
(at some point) look into changing the bitmap too. This command allows you
to regenerate a subset of the glyphs in a given bitmap font. In the font
view you can regenerate all selected glyphs, while in the bitmap and outline
views you can regenerate the current glyph. You can pick what pixel sizes
should be regenerated too (unlike the above command, removing a bitmap size
from the regenerate list will not delete it).<BR>
As before, if you wish to change a greymap you should refer to it by
<pixel-size>@<bits-per-pixel>.
<DT>
<A NAME="RemoveBitmaps">Remove</A> Bitmap Glyphs...
<DD>
This command will remove one or several bitmap glyphs from a strike (while
leaving the strike otherwise intact). The dialog is similar to the above
two. Any indicated glyphs will be removed from the specified strikes.
<DT>
Styles
<DD>
There are many <A HREF="Styles.html">standard variations</A> on Latin (Greek,
Cyrillic) fonts. Some of them apply to other scripts -- making a font darker
(bolder) is common to many scripts, though the actual mechanics differ from
script to script) Others -- such as Italic -- are more specialized.
<DL>
<DT>
<A NAME="Embolden">Change Weight</A>...
<DD>
This is a simplistic command to make the stems of glyphs darker or lighter.
It sometimes works.
<P>
For CJK glyphs it simply expands the strokes of the font outward.
<P>
For LCG (Latin, Cyrillic, Greek) glyphs it expands the stroke outward and
then moves everything below a certain point up, and everything above another
point down. This is based on heuristics and will fail if a glyph is even
the slightest bit unexpected.<BR>
For other writing systems FontForge will do something, currently it will
fall into one of the two cases above.<BR>
See the <A HREF="Styles.html#Embolden">Change Weight dialog</A>.
<DT>
<A NAME="Italic">Italic</A>
<DD>
An italic font is different from and more complex than an oblique font.
Traditionally fonts with serifs are made italic and fonts without serifs
are made oblique. This will change some letterforms, change the serifs, condense
the font and slant things. See the <A HREF="Styles.html#Italic">Italic
dialog.</A>
<DT>
<A NAME="Oblique">Oblique</A>
<DD>
An oblique font is different from and simpler than an italic font. Traditionally
fonts with serifs are made italic and fonts without serifs are made oblique.
This will slant the letters.
<DT>
<A NAME="Condense">Condense</A>/Extend
<DD>
Allows you to change the width of the counters and side bearings of a glyph.
The algorithm only works on simple latin glyphs, and it has problems with
diagonal stems. See the <A HREF="Styles.html#Condense">Condense/Extend
dialog</A>.
<DT>
Change <A NAME="xheight">X-Height</A>
<DD>
Allows you to change the x-height of a font
<DT>
<A NAME="changeglyph">Change Glyph.</A>..
<DD>
Allows you to make very general changes to a glyph's shape.
<DT>
Add <A NAME="SmallCaps">Small</A> Caps
<DD>
This is a little different from the previous menu items as it does not change
the selected characters themselves. Instead it creates a new glyph (or reuses
an old one) with the appropriate name. So if you selected "A", "B", and "C"
it would create glyphs "a.sc", "b.sc" and "c.sc". It will create two lookups
one bound to 'c2sc' which maps capital letters to small caps, and the other
bound to 'smcp' which maps lower case letters to small caps. It will build
the appropriate small caps glyphs in the new glyph slots. This only applies
to upper and lower case letters in the latin, greek and cyrillic scripts.
<A HREF="Styles.html#Smallcaps">See the Small Caps dialog</A>.
<DT>
<A NAME="SubSuper">Add Subscripts/Superscripts</A>
<DD>
Like the previous command this creates new glyphs based on the selected ones.
The outlines of the selected glyphs will be scaled (with stems potentially
being scaled differently from the glyph as a whole), and moved vertically.
Then a new lookup will be created mapping the original glyph to the newly
created one under control of the appropriate feature.
<A HREF="Styles.html#SubSuper">See the Subscript/Superscript dialog</A>.
<DT>
<A NAME="Outline">Outline</A>
<DD>
<IMG SRC="/assets/img/old/OutlineInline.png" WIDTH="146" HEIGHT="70" ALIGN="Right">Changes
the selected glyphs so that instead of being a solid block, only the outline
of the glyph is visible. The glyphs' bounding boxes will not change.
<DT>
<A NAME="Inline">Inline</A>
<DD>
Changes the selected glyphs so that the glyph is surrounded by an outline.
The glyphs' bounding boxes will not change.
<DT>
<A NAME="Shadow">Shadow</A>
<DD>
Changes the selected glyphs to give them each a
shadow.<IMG SRC="/assets/img/old/ShadowWireframe.png" WIDTH="171" HEIGHT="69" ALIGN="Right">
The user has control over the shadow size and angle.
<DT>
<A NAME="Wireframe">Wireframe</A>
<DD>
Changes the selected glyphs to give them a 3D wireframe look.
</DL>
<DT>
Transformations
<DD>
This sub-menu has rather different choices in the bitmap view from the other
views. (Because bitmaps are discrete and the continuous transformations of
splines are not meaningful).
<DL>
<DT>
<A NAME="Transform">Transform</A>...
<DD>
<A HREF="transform.html">In the Font and Outline Views this brings up the
transform dialog</A>. This provides the standard linear transformations you
expect to have available (rotation, scaling, translation, skewing).
<DT>
<A NAME="PoV">Point of View </A>Projection
<DD>
<A HREF="transform.html#PoV">This dialog </A>allows you to perform a perspective
transformation on your glyphs. (This is a non-linear transformation)
<DT>
<A NAME="Non-Linear">Non-Linear</A> Transform...
<DD>
<A HREF="transform.html#Non-Linear">This dialog</A> allows you to perform
a general transformation (which could be linear or which can be non-linear).
Essentially you provide two equations for how x and y should be mapped.<BR>
<DT>
<A NAME="Flip">Flip</A> Horizontally
<DD>
Flips the bitmap horizontally. (Only in bitmap view)
<DT>
<A NAME="FlipV">Flip</A> Vertically
<DD>
Flips the bitmap vertically. (Only in bitmap view)
<DT>
<A NAME="Rotate">Rotate</A> 90° CW
<DD>
Rotates the bitmap 90° clockwise. (Only in bitmap view)
<DT>
<A NAME="Rotate90CCW">Rotate</A> 90° CCW
<DD>
Rotates the bitmap 90° counter-clockwise. (Only in bitmap view)
<DT>
<A NAME="Rotate180">Rotate</A> 180°
<DD>
Rotates the bitmap 180° (Only in bitmap view)
<DT>
<A NAME="Skew">Skew</A>
<DD>
Allows you to specify a ratio by which to skew the bitmap 1:3 means for every
3 pixel rise in y, skew the bitmap one pixel horizontally. (Only in bitmap
view)
</DL>
<DT>
<A NAME="NonLinear">Non Linear </A>Transform...
<DD>
This command is not available in the default build, you must modify the file
<CODE>configure-fontforge.h</CODE> and then rebuild FontForge. This command
allows the user to specify a non-linear transformation as a pair of expressions
(the first specifies the transformation for the x coordinate, the second
for the y coordinate). These expressions may be fairly general functions
of x and y. See the <A HREF="scripting-alpha.html#NonLinearTransform">scripting
page</A> for a description of the syntax.
<DT>
<A NAME="Expand">Expand</A> Stroke...
<DD>
Not in the bitmap view. In the font view it applies to all foreground splines
in all selected glyphs. In the outline view it applies to all paths that
have at least one point selected (or if no points are selected then it applies
to all paths).<BR>
<IMG SRC="/assets/img/old/twolines.png" WIDTH="247" HEIGHT="247">
<IMG SRC="/assets/img/old/expandedlines.png" WIDTH="247" HEIGHT="247"><BR>
Above is a simple example of what expand stroke can do. It takes the two
open paths above left and turns them into the two closed paths right.<BR>
<IMG SRC="/assets/img/old/expandstroke.png" WIDTH="358" HEIGHT="663" ALIGN="Left"><BR>
The Expand Stroke dialog gives you control over various aspects of the expansion
process. First you can specify three types of pen nibs:
<UL>
<LI>
A round pen, which is circular by default but may be transformed into an
ellipse
<LI>
A rectangular pen, which is square by default but may be transformed into
more traditional caligraphic nib shapes
<LI>
A polygonal pen -- you can draw almost any convex polygon.
</UL>
<P>
For circular and caligraphic pens you can chose a stroke width, how the ends
of an open path should be drawn, and how the path should look when two splines
(or lines) join which do not have the same slope (ie. at a corner point).
<P>
For closed contours you may also choose to remove either the generated contour
which is inside the original, or that which is outside (Note: Make sure your
glyph is oriented correctly with
<A HREF="elementmenu.html#Correct">Edit->Correct Direction </A>before
removing a contour (if misoriented the wrong contour may be removed)).
<P>
<A HREF="pfaeditmath.html#Stroke">How is this done?</A><BR CLEAR=ALL>
<DT>
<A NAME="TilePath">Tile Path</A>
<DD>
This command is not available in the default build, you must reconfigure
$ <CODE>configure --with-tilepath</CODE> and then rebuild FontForge. Not
available in quadratic (truetype) fonts. This command brings up a
<A HREF="tilepath.html">dialog</A> which allows you to specify a tile to
be applied to any selected contours.
<DT>
<A NAME="TilePattern">Tile Pattern...</A>
<DD>
Also not available in the default build, also controled by $ <CODE>configure
--with-tilepath</CODE>. <A HREF="tilepath.html#Pattern">This command</A>
allows you to design a pattern which will be layed down on the current layer
m*n times (where m is the number of horizontal repeats and n the number of
vertical repeats.
<DT>
Overlap
<DD>
None of these is available in the bitmap view.
<DL>
<DT>
<A NAME="Remove">Remove</A> Overlap
<DD>
Not in the bitmap view, <EM>not available when the font has quadratic
splines</EM><SUP><A HREF="#overlap-footnote">1</A></SUP>. If two closed paths
intersect then there will be overlap. This will get rid of it, leaving one
closed path behind.
<P>
Make sure paths have the correct orientation. Consider the letter "O" with
two contours. If both contours run in the same direction then the inner path
will be removed (because the outer path overlaps it everywhere), but if the
contours run in opposite orientations then the inner path will be retained.
Things get very strange if you have intersecting paths with different
orientations.
<P>
<IMG SRC="/assets/img/old/expandedlines.png" WIDTH="247" HEIGHT="247">
<IMG SRC="/assets/img/old/overlappedlines.png" WIDTH="247" HEIGHT="247"><BR>
This command is probably the buggiest in FontForge. So before FontForge invokes
the command it will save the state to the error recovery file.<BR>
Warning: Splines which are tangent (or nearly so) cause problems. Points
which are close together can cause problems.
<DT>
<A NAME="Intersect">Intersect</A>
<DD>
<TABLE CELLPADDING="2">
<TR>
<TD><IMG SRC="/assets/img/old/exclude-pre.png" WIDTH="174" HEIGHT="174"></TD>
<TD><IMG SRC="/assets/img/old/intersect-post.png" WIDTH="174" HEIGHT="174"></TD>
</TR>
</TABLE>
<P>
This will remove everything not in the intersection of two regions.
<DT>
<A NAME="Exclude">Exclude</A>
<DD>
<TABLE CELLPADDING="2">
<TR>
<TD><IMG SRC="/assets/img/old/exclude-pre.png" WIDTH="174" HEIGHT="174"></TD>
<TD><IMG SRC="/assets/img/old/exclude-post.png" WIDTH="174" HEIGHT="174"></TD>
</TR>
</TABLE>
<P>
This will remove the selected contours from the unselected ones. Only available
in the outline glyph view.
<DT>
Find Intersections
<DD>
This finds the places where overlapping contours intersect and inserts points
at those locations.
</DL>
<DT>
Simplify
<DD>
<DL>
<DT>
<A NAME="Simplify">Simplify</A>
<DD>
Not in the bitmap view. If you have lots of points on a path, some of which
do not materially add to the path's shape, then this command will remove
the extraneous points. (It will not remove points where the slope at the
point is horizontal or vertical as postscript likes to have these points
present).
<P>
<A HREF="pfaeditmath.html#Approximating">How is this done?</A>
<DT>
<A NAME="SimplifyMore">Simplify More</A>
<DD>
This is a variant of the simplify command. It brings up a dialog which gives
you control over what sorts of errors this simplification is allowed to induce.
You can control:
<UL>
<LI>
How far the simplified contour is allowed to stray from the original
<LI>
Whether to allow removal of extreme points
<LI>
Whether to allow the slope to change at points.
<LI>
Whether to make corner points into curve points (by adjusting the control
points)
<LI>
Whether to flatten small bumps off of lines
<LI>
Whether to try to simplify straight lines at all
</UL>
<P>
Finally, you may specify whether this set of values should become the default
value for future Simplify commands
<DT>
<A NAME="Cleanup">Cleanup Glyph</A>
<DD>
This is a special case of the simplify command. In this case if there is
a spline which actually traces out a line but none the less has control points,
then this command will remove the control points. It will also cleanup zero
length splines.
<DT>
<A NAME="CanonicalSP">Canonical Start Points</A>
<DD>
This will change the start point of the contour (or of all selected contours)
to be the leftmost point on the contour. If there are several points with
the same horizontal coordinate it will pick the one closest to the baseline.
There are two reasons for doing this:
<UL>
<LI>
In a PostScript Type1 or Type2 font it will (usually) reduce the size of
the code expressing the glyph slightly. (I don't think it can increase the
code, but there are certainly cases where the optimization will have no effect).
<LI>
It will enable FontForge to find more reusable bits of code which it can
put in subroutines
</UL>
<DT>
<A NAME="CanonicalContours">Canonical Contour Order</A>
<DD>
Order the contours so that the contour with the leftmost point comes first,
then the contour whose leftmost point is a little further right and so forth.
Again, this should decrease the code size slightly in a Type1 font.
</DL>
<DT>
<A NAME="Add-Extrema">Add Extrema</A>
<DD>
Not in the bitmap view. Both TrueType and Type1 say that there should be
points on the contour where it reaches its extreme horizontal and vertical
values. In the outline view, if any points are selected, this will add points
at all extrema on splines between selected points. In the font view, metrics
view (or if nothing is selected in the outline view) it will add extrema
to a spline if: 1) The spline is longer than the em-size/32, or 2) the entire
contour (rather than just the current spline) attains its maximum/minimum
value at this point. If the added extrema is extremely close to an already
existing point, fontforge may remove that point to avoid creating tiny splines.
<DT>
<A NAME="AutoTrace">AutoTrace</A>
<DD>
This command is only available if you have downloaded Martin Weber's
<A HREF="http://sourceforge.net/projects/autotrace/">autotrace program</A>,
or Peter Selinger's <A HREF="http://potrace.sf.net/">potrace</A>. If you
have a background image in a glyph then autotrace will automagically trace
the outlines of that image. See <A HREF="autotrace.html">the section on
autotracing</A> for more information.
<DT>
<A NAME="Align">Align</A> menu
<DD>
This submenu is only present in the outline view, it allows you to align
points or to space them out along an axis.
<DL>
<DT>
<A NAME="Average">Average</A> Points
<DD>
This will look at all the selected points and find the coordinate with the
least change. Then it will average find the median point on that axis and
set all the selected points to have that value for the appropriate
coordinate.<BR>
So if you have a line which is almost horizontal, and select its endpoints
and apply this command it will be horizontal.<BR>
<IMG SRC="/assets/img/old/Constrain2_1.png" WIDTH="122" HEIGHT="90">
<IMG SRC="/assets/img/old/Constrain2_2.png" WIDTH="122" HEIGHT="90"><BR>
(if you select exactly two points, and they lie close to a 45 diagonal, then
they will be forced to the diagonal rather than to horizontal/vertical)
<DT>
<A NAME="Space-Pts">Space Points</A>
<DD>
If you have three or more points selected then FontForge will figure out
the coordinate that has the greatest change and will space the points out
regularly along that axis.<BR>