|
|
1.1 root 1: {\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}{\f3\fnil Times;}{\f4\fnil Helvetica;}{\f5\fmodern Courier;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
2: \red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;
3: \red127\green127\blue0;\red127\green127\blue127;\red192\green192\blue192;}{\stylesheet{\s242\fi-1886\li360\sb60\keep\keepn\brdrb\brdrs\brdrw30\brsp20\brdrcf2 \tx1440\tx2340\tqc\tx4320\tqr\tx8640 \b\f5\fs20\up6 \sbasedon0\snext242 footer;}{
4: \s243\tqc\tx4320\tqr\tx8640 \f3\fs12\lang1033 \sbasedon0\snext243 header;}{\s244\fi-1886\li360\sb60\keep\keepn\brdrb\brdrs\brdrw30\brsp20\brdrcf2 \tx1440\tx2340\tqc\tx4320\tqr\tx8640 \b\f5\fs16\up6 \sbasedon0\snext0 footnote reference;}{
5: \s245\fi-1886\li360\sb60\keep\keepn\brdrb\brdrs\brdrw30\brsp20\brdrcf2 \tx1440\tx2340\tqc\tx4320\tqr\tx8640 \b\f5\fs20\up6 \sbasedon0\snext245 footnote text;}{\s246\li720 \i\f3\fs20\lang1033 \sbasedon0\snext255 heading 9;}{\s247\li720 \i\f3\fs20
6: \sbasedon0\snext255 heading 8;}{\s248\li720 \i\f3\fs20\lang1033 \sbasedon0\snext255 heading 7;}{\s249\li720 \f3\fs20\ul\lang1033 \sbasedon0\snext255 heading 6;}{\s250\li720 \b\f3\fs20\lang1033 \sbasedon0\snext255 heading 5;}{\s251\li360 \f3\ul\lang10
7: \sbasedon0\snext255 heading 4;}{\s252\li360 \b\f3\lang1033 \sbasedon0\snext255 heading 3;}{\s253\sb120 \b\f4\lang1033 \sbasedon0\snext0 heading 2;}{\s254\sb240 \b\f4\ul\lang1033 \sbasedon0\snext0 heading 1;}{\s255\li720 \f3\fs12\lang1033
8: \sbasedon0\snext255 Normal Indent;}{\f3\fs12\lang1033 \snext0 Normal;}{\s2 \b\f4\fs28\lang1033 \sbasedon0\snext2 Title;}{\s3\li720 \b\f4\fs28\lang1033 \sbasedon0\snext3 Body;}{\s4\li270\sb60\tx1440\tx2340 \b\f4\fs28\lang1033 \sbasedon0\snext4 List;}{
9: \s5\li270\sb60\tx1440\tx2340 \b\f4\fs20\lang1033 \sbasedon3\snext5 JumpBody;}{\s6\li270\sb60\brdrb\brdrs\brdrw30\brsp20\brdrcf2 \tx1440\tx2340 \b\f4\fs28\lang1033 \sbasedon0\snext6 PopUpTitle;}{\s7\li180\sb60\keep\brdrb\brdrs\brdrw30\brsp20\brdrcf2
10: \tx1440\tx2340 \b\f4\fs20\lang1033 \sbasedon5\snext7 PopUpBody;}{\s8\fi-1886\li2160\sb60\brdrb\brdrs\brdrw30\brsp20\brdrcf2 \tx1440\tx2340 \b\f4\fs20\lang1033 \sbasedon4\snext8 GlossaryEntry;}{\s9\fi-1886\li360\sb60\keep\brdrb
11: \brdrs\brdrw30\brsp20\brdrcf2 \tx1440\tx2340 \b\f5\fs8 \snext0 FixedText;}{\s10\fi-1886\li360\sb60\keep\brdrb\brdrs\brdrw30\brsp20\brdrcf2 \tx1440\tx2340 \b\f5\fs20\up6 \snext0 ControlCodes;}}{\info{\author Steve Firebaugh}{\operator Steve Firebaugh}
12: {\creatim\yr1992\mo10\dy9\hr15\min50}{\revtim\yr1992\mo10\dy9\hr15\min50}{\version2}{\edmins40}{\nofpages0}{\nofwords65536}{\nofchars65536}{\vern16433}}\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0 \sectd \linex0 \pard\plain
13: \qc\keepn \f3\fs12\lang1033 {\plain \b\f5\fs36\up6 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \f3\lang1033 # Contents}}}{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ }in ttfonts Online Help Contents}}{\b\fs36 K
14: {\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 K TTF}{\plain \f3 onts Online Help Contents}}}{\b\fs36 }{\b\fs36 TTFonts Online Help Contents}{\b\fs36\up6
15: \par }\pard {\plain \f3\ul\lang1033
16: \par }{\plain \f3\ul\lang1033 QuickStart:}{\plain \f3\lang1033
17: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 1. Push the "EnumFonts" button.}{\plain \f3\lang1033
18: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 2. Mouse click on one of the fonts displayed.}{\plain \f3\lang1033
19: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 3. Modify the values in the LOGFONT dialog.}{\plain \f3\lang1033
20: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 4. Push the "CreateFont" button.}{\plain \f3\lang1033
21: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 5. Observe the results in the "Display" window.}{\plain \f3\lang1033
22: \par }{\plain \f3\lang1033
23: \par }{\plain \f3\ul\lang1033 More Information:}{\plain \f3\ul\lang1033
24: \par }{\plain \f3\lang1033
25: \par }{\plain \f3\uldb\lang1033 Overview}{\plain \v\f3\lang1033 Overview}{\plain \f3\lang1033 \tab \tab \tab \tab }{\plain \f3\uldb\lang1033 Advanced Features}{\plain \v\f3\lang1033 Advanced}{\plain \f3\lang1033
26: \par }{\plain \f3\uldb\lang1033 Printing}{\plain \v\f3\lang1033 Printing}{\plain \f3\lang1033 \tab \tab \tab \tab \tab }{\plain \f3\uldb\lang1033 True Type Information}{\plain \v\f3\lang1033 TrueType}
27: \par {\plain \f3\uldb\lang1033 Display Window}{\plain \v\f3\lang1033 Display}{\plain \f3\lang1033 \tab \tab \tab }{\plain \f3\uldb\lang1033 EnumFonts Window}{\plain \v\f3\lang1033 Enum}{\plain \f3\lang1033
28: \par }{\plain \f3\uldb\lang1033 References}{\plain \v\f3\lang1033 References}{\plain \f3\lang1033
29: \par }{\plain \f3\lang1033
30: \par }\pard \keepn {\b \page }{\b\fs36 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 # Overview}}}{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ Overview}}}{\b\fs36 K{\footnote \pard\plain \f3\fs12\lang1033
31: {\plain \b\f3\lang1033 K Overview}}}{\b\fs36 Overview}{\b\fs36\up6
32: \par }\pard {\plain \f3\lang1033
33: The TTFonts program is designed to provide the user an easy interface to the API calls related to the font system. It will not protect against meaningless values, nor will it hide system oddities. Most of the buttons on the toolbar are self explanatory
34: }{\plain \f3\lang1033 and represent a single system API.}{\plain \f3\lang1033
35: \par }{\plain \f3\lang1033
36: \par }{\plain \f3\lang1033 Pressing the EnumFonts button will show all of the face names listed horizontally, and each of the }{\plain \f3\lang1033 fonts within that face name listed vertically below it, see }{\plain \f3\uldb\lang1033 EnumFonts}in {\v Enum}
37: {\plain \f3\lang1033 . TrueType fonts will be marked with a }{\plain \f3\lang1033 \{}{\plain \f3\lang1033 bmc bmtt.bmp}{\plain \f3\lang1033 \}}{\plain \f3\lang1033
38: bitmap. Fonts that have the DEVICE_FONTTYPE bit on will be marked with a small bitmap image of a printer }{\plain \f3\lang1033 \{}{\plain \f3\lang1033 bmc bmdevice.bmp}{\plain \f3\lang1033 \}}{\plain \f3\lang1033
39: . When the enumeration windows are showing the user can click the left mouse button to copy the information about a selected font into the LOGFONT and TEXTME}{\plain \f3\lang1033
40: TRIC dialogs. The user can dismiss this window without changing the dialog boxes by clicking with the right mouse button or typing any character.}{\plain \f3\lang1033
41: \par }{\plain \f3\lang1033
42: \par }{\plain \f3\lang1033 The }{\plain \f3\uldb\lang1033 Display Window}{\plain \v\f3\lang1033 Display}{\plain \f3\lang1033
43: is able to operate in any one of three modes. These are listed in the "Display" menu. The first just writes "Hello" in the middle of the screen, and it grids the background. This is useful when utilizing the lfEscapement and lfOrientation fields of th
44: }{\plain \f3\lang1033 e LOGFONT structure. The second mode writes all of the glyphs between the tmFirst}{\plain \f3\lang1033
45: Char and tmLastChar values stored in the TEXTMETRIC structure. The final mode is used only for true type fonts. It calls GetFontData, finds the 'cmap' table, and displays glyphs from the different ranges in this table. Use the horizontal scroll bar in
46: }{\plain \f3\lang1033 the display window to step through the ranges.}{\plain \f3\lang1033
47: \par }{\plain \f3\lang1033
48: \par }\pard \keepn {\b \page }{\b\fs36 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 # Advanced}}}{\b\fs36 }{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ Advanced}}}{\b\fs36 K{\footnote \pard\plain
49: \f3\fs12\lang1033 {\plain \b\f3\lang1033 K Advanced}}}{\b\fs36 Advanced Features}{\b\fs36\up6
50: \par }\pard {\plain \f3\lang1033
51: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Shows all of the fonts installed on the display in their own type face. (See }{\plain \f3\uldb\lang1033 EnumFonts}{\plain \v\f3\lang1033 Enum}{\plain \f3\lang1033 ).}{\plain \f3\lang1033
52: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Lists the fonts available to the default printer.}{\plain \f3\lang1033
53: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Provides user friendly, structured access to GetFontData().}{\plain \f3\lang1033
54: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Reads the 'cmap' table and shows all of the glyphs in a true type font. (See }{\plain \f3\uldb\lang1033 Display Window}{\plain \v\f3\uldb\lang1033 Display}{\plain \f3\lang1033 ).}{\plain \f3\lang1033
55:
56: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Able to print to the default printer. (See }{\plain \f3\uldb\lang1033 Printing}{\plain \v\f3\uldb\lang1033 Printing}{\plain \f3\lang1033 ).}{\plain \f3\lang1033
57: \par }{\plain \f3\lang1033
58: \par }\pard \keepn {\plain \b\f3\lang1033 \page }{\b\fs36 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1 # }{\plain \f3 Display}}}{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ }{\plain \f3 DisplayWindow}}}{\b\fs36 K
59: {\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 K }{\plain \b\f3 DisplayWindow}}}{\b\fs36 Display Window}{\b\fs36\up6
60: \par }\pard {\plain \f3\lang1033 The "Display" Window operates in one of three modes. This may be controlled by using the "Display" menu. The modes are:}{\plain \f3\lang1033
61: \par }{\plain \f3\lang1033
62: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 "Hello"}{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 \tab \tab \tab \tab }{\plain \f3\lang1033 (single string written in the center)}{\plain \f3\lang1033
63: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 tmFirstChar, tmLastChar}{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 (range from TEXTMETRIC structure)}{\plain \f3\lang1033
64: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 All Glyphs}{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 \tab \tab \tab }{\plain \f3\lang1033 (for true type fonts, show all glyphs from all ranges)}{\plain \f3\lang1033
65: \par }{\plain \f3\lang1033
66: \par }{\plain \f3\lang1033 For the later two modes, if there are more characters than will fit in the window, the vertical scroll bar may be used to scroll through them.}{\plain \f3\lang1033
67: \par }{\plain \f3\lang1033
68: \par }{\plain \f3\lang1033 The third mode works by calling GetFontData(), finding the 'cmap' table, and then using the code point ranges from this table. The horizontal scroll bar will appear when in this mode, and may b}{\plain \f3\lang1033
69: e used to step through the different ranges. The current code point range that is being displayed is shown in the title bar of this window.}{\plain \f3\lang1033
70: \par }{\plain \f3\lang1033
71: \par }\pard \keepn {\b \page }{\b\fs36 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 # }{\plain \f3 Enum}}}{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ }{\plain \f3 EnumFonts Window}}}{\b\fs36 K{\footnote
72: \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 K }{\plain \f3 EnumFontsWindow}}}{\b\fs36 EnumFonts Window}{\b\fs36\up6
73: \par }\pard {\plain \f3\lang1033
74: There are two "EnumFonts" windows. One lists all of the fonts available to the display; the other lists all of the fonts available to the default printer. Both windows show the results of calling the EnumFonts() API. The typeface names are listed horiz
75: }{\plain \f3\lang1033 ontally. The different variations for each }{\plain \f3\lang1033 type face are listed vertically. TrueType fonts will be marked with a }{\plain \f3\lang1033 \{}{\plain \f3\lang1033 bmc bmtt.bmp}{\plain \f3\lang1033 \}}{\plain
76: \f3\lang1033 bitmap. Fonts that have the DEVICE_FONTTYPE bit on will be marked with a small bitmap image of a printer }{\plain \f3\lang1033 \{}{\plain \f3\lang1033 bmc bmdevice.bmp}{\plain \f3\lang1033 \}}{\plain \f3\lang1033 .}{\plain \f3\lang1033
77:
78: \par }{\plain \f3\lang1033
79: \par }{\plain \f3\lang1033
80: These two windows are maximized as a result of selecting "EnumFonts" in the "Control" menu, or as a result of hitting the "EnumFonts" buttons on the toolbar. When one the windows is maximized, clicking the left mouse button will cause the LOGFONT and T}
81: {\plain \f3\lang1033
82: EXTMETRIC information to be copied into their respective dialogs, and the EnumFonts window will be minimized. Notice that this information is stored from the call to EnumFonts(). It is necessary to hit the "CreateFont" button to see the resulting logica
83: }{\plain \f3\lang1033 l font in the display window.}{\plain \f3\lang1033
84: \par }{\plain \f3\lang1033
85: \par }\pard \keepn {\b \page }{\b\fs36 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 # }{\plain \f3 TrueType}}}{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ }{\plain \f3 TrueType}}}{\b\fs36 K{\footnote
86: \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 K }{\plain \f3 TrueType}}}{\b\fs36 TrueType Information}{\b\fs36\up6
87: \par }\pard {\plain \f3\lang1033 TrueType fonts are marked with a }{\plain \f3\lang1033 \{}{\plain \f3\lang1033 bmc bmtt.bmp}{\plain \f3\lang1033 \}}{\plain \f3\lang1033 bitmap in the }{\plain \f3\uldb\lang1033 EnumFonts}{\plain \v\f3\uldb\lang1033 Enum }
88: {\plain \f3\lang1033 windows.}{\plain \f3\lang1033
89: \par }{\plain \f3\lang1033
90: \par }{\plain \f3\lang1033 Use "Display" menu to check "All Glyphs from FontData" in order to see all}{\plain \f3\lang1033 of the different ranges of codepoints in the }{\plain \f3\uldb\lang1033 Display Window}{\plain \v\f3\uldb\lang1033 Display}{\plain
91: \f3\lang1033
92: . Notice that the list of codepoints covered is not well handled by the existing API since it will only specify contiguous ranges in the TEXTMETRIC structure. In order to get this information, the program uses GetFontData() and the 'cmap' table. The fo
93: }{\plain \f3\lang1033 rmat of the 'cmap' table is documented in the TrueType font Specification, see}{\plain \f3\uldb\lang1033 References}{\plain \v\f3\lang1033 References}{\plain \f3\lang1033 .}{\plain \f3\lang1033
94: \par }{\plain \f3\lang1033
95: \par }\pard \keepn {\plain \b\f3\lang1033 \page }{\b\fs36 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1 # }{\plain \f3 Printing}}}{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ }{\plain \f3 Printing}}}{\b K
96: {\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 K }{\plain \f3 Printing}}}{\b\fs36 Printing}{\b\fs36\up6
97: \par }\pard {\plain \f3\lang1033
98: The "Control" menu contains an item labeled "Print." Selecting this will send a job to the default printer, the same printer used for EnumFonts (Printer). First the program will print a small header. If the font returns information with GetOutlineTextM
99: }{\plain \f3\lang1033 etrics() then the otmpFullName field is written. After that, the contents of this print job are dependent upon the mode of the }{\plain \f3\uldb\lang1033 Display Window}{\plain \v\f3\uldb\lang1033 Display}{\plain \f3\lang1033
100: . In the first two modes the output to the printer should be very similar to the contents of the display wi}{\plain \f3\lang1033
101: ndow. In the "All Glyphs" mode, the output will print each code point range one after the other. Each range is labeled and separated from the previous range by a horizontal line.}{\plain \f3\lang1033
102: \par }{\plain \f3\lang1033
103: \par }{\plain \f3\lang1033
104: NOTICE: The logical font created in the print job results from the same LOGFONT parameters as were used to create the font in the display window. Since the resolution of the printer is probably much greater, and since the size is in "pels," fonts will a
105: }{\plain \f3\lang1033 ppear much smaller on the printer. There is no attempt at WYSIWYG output}{\plain \f3\lang1033
106: . To make decent sized output on the printer, increase the lfHeight parameter so that the font in the display window looks quite large, then print. For a 300dpi printer, setting lfHeight to 100 will print characters that are 1/3 inch high.}{\plain
107: \f3\lang1033
108: \par }\pard \keepn {\b \page }{\b\fs36 #{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 # }{\plain \f3 References}}}{\b\fs36 ${\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 $ }{\plain \f3 References/more information}}}{\b\fs36
109: K{\footnote \pard\plain \f3\fs12\lang1033 {\plain \b\f3\lang1033 K }{\plain \f3 References/more information}}}{\b\fs36 References}{\b\fs36\up6
110: \par }\pard {\plain \f3\lang1033 TTFonts was written by Steve Firebaugh in Microsoft's Developer Support. Look for us in the MSWIN32}{\plain \f3\lang1033 forum of Compuserve. Questions or bug reports related to this program should be posted there.}{\plain
111: \f3\lang1033
112: \par }{\plain \f3\lang1033
113: \par }{\plain \f3\lang1033
114: \par }{\plain \f3\lang1033 Understanding the 'cmap' table is most easily possible with a specification for TrueType font files. This is available from many sources including the following:}{\plain \f3\lang1033
115: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Microsoft Software Library. (Available on Compuserve by "GO MDKB" then search for keyword }{\plain \f3 TTSPEC1}{\plain \f3\lang1033 .)}{\plain \f3\lang1033
116: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Anonymous ftp on ftp.uu.net in vendor/microsoft/TrueType-Info.}{\plain \f3\lang1033
117: \par }{\plain \f3\lang1033
118: \par }{\plain \f3\lang1033
119: \par }{\plain \f3\lang1033 To learn all about unicode, including the names given to the different}{\plain \f3\lang1033 code point ranges, the best reference is the following two volume book available from Addison-Wesley:}
120: \par {\plain \f3\lang1033 \tab }{\plain \f3\lang1033 The Unicode Standard}{\plain \f3\lang1033
121: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 World-wide character encoding}{\plain \f3\lang1033
122: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Version 1.0}{\plain \f3\lang1033
123: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Vol 1: ISBN 0-201-56788-1}{\plain \f3\lang1033
124: \par }{\plain \f3\lang1033 \tab }{\plain \f3\lang1033 Vol 2: ISBN 0-201-60845-6}{\plain \f3\lang1033
125: \par }{\plain \f3\lang1033 \page }{\plain \f3\lang1033
126: \par }}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.