6 # Copyright 1996, 1997, 1998, 1999 Computing Research Labs,
7 # New Mexico State University
9 # Permission is hereby granted, free of charge, to any person obtaining a
10 # copy of this software and associated documentation files (the "Software"),
11 # to deal in the Software without restriction, including without limitation
12 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 # and/or sell copies of the Software, and to permit persons to whom the
14 # Software is furnished to do so, subject to the following conditions:
16 # The above copyright notice and this permission notice shall be included in
17 # all copies or substantial portions of the Software.
19 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 # THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
23 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
24 # OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
25 # THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 This is version 2.7 of a program to convert TrueType fonts to BDF fonts using
29 the FreeType renderer.
31 BDF fonts can be edited using the XmBDFEditor which is available from (replace
32 the <version> with the most current version number):
35 ftp://crl.nmsu.edu/CLR/multiling/General/xmbdfed.tar.gz
37 [Binaries: Linux/Pentium, Solaris, SunOS]
38 ftp://crl.nmsu.edu/CLR/multiling/General/xmbdfed-<version>-ELF.tar.gz
39 ftp://crl.nmsu.edu/CLR/multiling/General/xmbdfed-<version>-SOLARIS.tar.gz
44 1. Pick up the latest FreeType distribution from:
46 ftp://ftp.physiol.med.tu-muenchen.de/pub/freetype/devel/freetype-current.tar.gz
48 2. Unpack FreeType and build it.
50 3. Go into the "contrib/ttf2bdf/" directory and type "make" to build "ttf2bdf".
55 Type the following to get a list of command line options:
62 Thanks go to the following people:
64 Robert Wilhelm <robert@physiol.med.tu-muenchen.de> for pointing out a
65 crucial problem with the pre-1.0 code.
67 Lho Li-Da <ollie@ms1.hinet.net> for pointing out a problem with Big5 and
68 GB2312 encoding ids being documented incorrectly in the TT docs and a
69 problem with glyphs that are height 1 or width 1, and a font name problem.
71 Adrian Havill <havill@threeweb.ad.jp> for unintentionally pointing out a
74 Richard Verhoeven <rcb5@win.tue.nl> for pointing out a font names problem,
75 problem with bitmaps missing their last byte in each row, and an invalid
76 FONT_DESCENT property value.
78 Choi Jun Ho <junker@jazz.snu.ac.kr> for his inspiration from his
79 implementation that changed some character set names, and added a
80 number of new command line parameters.
82 Pavel Kankovsky <peak@kerberos.troja.mff.cuni.cz> for providing some
83 critical grid fitting and metrics fixes when generating the bitmaps,
84 adding the code to "auto-detect" bold and italic fonts, removing the
85 dependency on ttobjs.h, finding some remapping bugs, and other fixes.
87 Matti Koskinen <mjkoskin@sci.fi> for pointing out a problem with using
90 Eugene Bobin <gene@ftim.ustu.ru> for contributing the Cyrillic mapping
91 tables (iso8859.5, koi8.r, windows.1251) and the sample shell scripts for
92 generating sets of BDF fonts.
94 Oleg N. Yakovlev <yashka@optima.dnepropetrovsk.ua> for alerting me to the
95 problem of certain codes not being loaded correctly in the mapping tables.
97 Bertrand Petit <elrond@phoe.frmug.org> for providing additional command line
98 parameters to allow more control over the XLFD name generated.
100 Roman Czyborra <czyborra@cs.tu-berlin.de> for pointing out the need for a
101 change from UNICODE-2.0 to ISO10646-1 in the font XLFD name.
103 Mike Blazer <blazer@mail.nevalink.ru> for pointing out the include changes
104 needed to compile on Windows.
106 Solofo Ramangalahy <solofo@mpi-sb.mpg.de> for contributing the ISO8859.1 and
107 ISO8859.3 mapping tables.
109 Antoine Leca <Antoine.Leca@renault.fr> for suggesting the exchange of
110 columns in the mapping table to better fit the mapping table format used by
113 Robert Brady <rwb197@ecs.soton.ac.uk> for pointing out a problem with the
114 length of _XFREE86_GLYPH_RANGES properties and an Exceed font compiler.
120 1. Swapped all the columns in the mapping files.
122 2. Changed the mapping table loader to index on the second column instead of
125 3. Reduced the line length of _XFREE86_GLYPH_RANGES properties to 256
130 1. Changed the includes to deal with compilation on Windows.
132 2. Added some new mapping tables.
136 1. Updated the copyright dates.
138 2. Fixed an incorrect parameter for Traditional C compilers.
140 3. Added generation of the _XFREE86_GLYPH_RANGES properties.
144 1. Change all CRLF's, CR's, or LF's in copyright strings to double spaces.
146 2. Changed it so gcc 2.8.1 likes the return type of main() again.
150 1. Changed Makefile.in a bit to make installation more consistent.
152 2. Changed the lower limit for the vertical and horizontal resolutions to be
153 10dpi instead of 50dpi.
157 1. Added missing documentation in the manual page.
159 2. Added the `-u' parameter to allow setting the character used to replace
160 dashes or spaces in the font name.
162 3. Changed the CHARSET_REGISTRY and CHARSET_ENCODING to be "ISO10646-1"
163 instead of "Unicode-2.0".
165 4. The numGlyphs property comes back incorrect for some fonts, so the loop
166 cycles through all 65536 possibilities every time now.
170 1. Added patches provided by Bertrand Petit.
172 2. Insured compatibility with FreeType 1.1.
176 1. Created two new subdirectories. One for mapping tables and one for any
177 other contributed code, scripts, or data.
179 2. Updated Cyrillic mapping files sent by Eugene Bobin.
181 3. Minor fixes to make compatible with the latest version of FreeType.
185 1. Fixed a problem with the first code of a mapping table being lost.
189 1. Added the Unicode->Cyrillic mapping tables provided by Eugene Bobin.
191 2. Created a shell script based on Eugene Bobin's scripts to generate sets
192 of BDF fonts at one time.
196 1. If a remapping table is provided, code ranges are now expected to be
197 specified in terms of the codes in the mapping table.
199 2. The glyph generation loop is improved a bit.
203 1. Added two expected keywords REGISTRY and ENCODING in the remap files.
204 These values are used when the font's XLFD name is generated.
206 2. Added TTF2BDF_VERSION macro used for adding the "Converted by" comment.
208 3. Handle the case of no glyphs being generated. No BDF font is produced.
210 4. Updated for new API with TT_Engine.
214 1. Fixed a problem with updating the average width field of the XLFD
217 2. Changed things so bitmaps are generated to a temporay file so an
218 accurate count and metrics can be calculated.
220 3. Changed things so the font header is not generated until the bitmaps
221 have been generated. This allows accurate calculations of the various
224 4. Added the '-l' command line parameter that allows specification of a
225 subrange of glyphs to generate. The syntax is the same as that used in
226 X11 for subranges. See the X11 XLFD documentation, page 9 for more
231 % ttf2bdf -l '60 70 80_90' font.ttf -o font.bdf
233 The command above will only generate the glyphs for codes 60, 70,
234 and 80 through 90 inclusive.
236 5. Added the ability to load a mapping table that will remap a font to
237 another character set. The mapping table should have two columns.
239 The first column should be the hexadecimal code of the glyph in the
240 "cmap" table ttf2bdf is using. The second column should have the
241 code which should be used in the BDF font. An example mapping file
242 is provided which will map fonts from Unicode (default cmap table) to
245 6. Fixed grid fitting to avoid dropout in some cases.
247 7. Removed dependency on ttobjs.h by using the new API function for
250 8. Removed warning about getpid() on Solaris.
252 9. Rearranged the man page a bit to be more useful. Minor
253 improvements also done.
255 10. Changed the loop so it does not include 0xffff as a code because
256 it causes crashes when converting some fonts.
258 Version 1.4 [Never released as binaries]
260 1. Changed the names of two MS encodings (Wansung and Johab) to
261 KSC5601.1987 and KSC5601.1992.
263 2. Added the '-n' command line flag to turn hinting off.
265 3. Added the '-c' command line flag to set the font spacing.
267 4. Added the '-t', '-w', and '-s' command line options to override the
268 default typeface, weight and slant names.
272 1. Converted to use the new FreeType API.
274 2. Added the '-rh' and '-rv' command line parameters to allow both the
275 horizontal and vertical resolutions to be set individually.
277 3. Fixed a problem with ignoring undefined glyphs. All undefined were
278 being rendered which caused missing glyphs on the end.
280 4. Fixed a problem with offset calculations needed to render glyph
285 1. Fixed a problem with dashes that appear in the font family name causing
286 parse problems with the XLFD font names.
288 2. Fixed a problem with certain bitmaps missing their final byte on each
291 3. Fixed an incorrect FONT_DESCENT value.
293 4. Changed things around so names can be retrieved in a more general way.
295 5. Fixed a problem with bitmaps not being generated after a certain point.
299 1. Fixed the actual glyph count for the CHARS line.
301 2. Swapped the Big5 and GB2312 XLFD encoding strings because of incorrect TT
304 3. Fixed a problem with bitmap generation for glyphs that are width 1 or
307 4. Added command line parameters to set the font and render pool memory
308 sizes in Kilobytes from the command line.
314 mleisher@crl.nmsu.edu (Mark Leisher)