]> git.tdb.fi Git - ttf2png.git/blob - Readme
Add support for generating distance field textures
[ttf2png.git] / Readme
1 ttf2png - True Type Font to PNG converter
2 Copyright (c) 2004-2018  Mikko Rasa, Mikkosoft Productions
3
4
5 Software requirements
6
7 FreeType 2
8 libpng 1.6
9 C compiler (preferably GCC)
10
11
12 Command-line options
13
14   -r <low>,<high>
15     Range of code points to convert, specified as unicode code points.  The
16     default is 0,255, matching the ISO-8859-1 (Latin-1) character set.  Code
17     points can be specified as plain numbers, unicode code points (U+xxxx) or
18     UTF-8 characters.  This option can be specified multiple times to add
19     more ranges to be converted.
20
21   -s <pixels>
22     Font size to use.  The default is 10 pixels.
23
24   -l <num>
25     Number of glyphs to put in one line.  Defaults to autodetect.  Ignored
26     if -p is used.
27
28   -c <pixels>[x<pixels>]
29     Character cell size.  If only a single number is given, a square cell is
30     used.  The special values auto and autorect may be used to choose an
31     autodetected square or rectangle cell, respectively.  The default is auto.
32     Ignored if -p is used.
33
34   -o <filename>
35     Output file name.  Use - for stdout; the output is a png image, so it's
36     best to pipe it somewhere.  The default is font.png.
37
38   -a
39     Force autohinter.  By default native hinting is used if present in the
40     font.
41
42   -t
43     Render glyphs to alpha channel, with grey channel filled with white.  By
44     default only the grey channel is used.
45
46   -i
47     Invert colors of the glyphs.  When rendering to alpha channel, only the
48     alpha channel is inverted.  The default is to render black glyphs on a
49     white background.
50
51   -v
52     Increase the level of verbosity.
53
54   -e
55     Use cells in sequence, without leaving gaps.  By default the position of
56     each glyph is determined by its code point.  Ignored if -p is used.
57
58   -p
59     Pack the glyphs tightly in the image.  Small gaps are left between glyphs,
60     controlled by the -n option.  By default glyphs are rendered in a regular
61     grid.  Creating a definition file is recommended, as the resulting image
62     can seem rather messy.
63
64   -m <pixels>
65     Leave a margin around the edges of the generated image.  By default glyphs
66     can touch the edges.  Only used with -p.
67
68   -n <pixels>
69     Control the amount of padding between glyphs.  The default is 1 pixel.
70     Only used with -p.
71
72   -g
73     Allow the resulting image to have a non-power-of-two size.  By default the
74     image size is rounded up to a power of two for maximum compatibility.
75
76   -f <num>
77     Generate a distance field texture.  The argument controls the amount of
78     oversampling when calculating distances.  Larger values may produce more
79     accurate results but take longer to process.  Distance fields are always
80     stored without alpha and with large/positive values indicating the inside
81     of glyphs; the -t and -i options are ignored.
82
83   -d
84     File name to write glyph definitions.  See the section below for details.
85
86   -h
87     Print a help message with option summary.
88
89
90 Glyph definition files
91
92 Rendering a proportional font correctly requires some positioning and spacing
93 information, called font metrics.  To that end, ttf2png can write a definition
94 file alongside the image.
95
96 The basic format is line-based.  Empty lines, or those starting with a hash
97 sign (#), should be ignored.  Data lines consist of a keyword followed by
98 space-separated fields.
99
100 The keyword "font" is followed by five fields with overall information about
101 the image and the font:
102
103   Fields 1-2: width and height of the image
104   Field 3: nominal size of the font
105   Fields 4-5: ascent and descent of the font
106
107 The keyword "glyph" is followed by eight fields describing a single glyph:
108
109   Field 1: the code point of the glyph
110   Fields 2-3: x and y position of the glyph in the image
111   Fields 4-5: width and height of the glyph
112   Fields 6-7: x and y offset of the glyph from its base point
113   Field 8: advance from this glyph to the next
114
115 The keyword "kern" is followed by three fields describing kerning between two
116 glyphs:
117
118   Field 1: the code point of the left-hand glyph
119   Field 2: the code point of the right-hand glyph
120   Field 3: kerning distance between the glyphs
121
122 The following ASCII art image illustrates most of these metrics.  Note that in
123 some fonts, not all of the glyphs fit completely inside the character box.
124
125                 - - - - - - - -     ^
126                | character box |    |
127                                     |
128                |               |    |
129                    o-------o        | ascent
130                |   |       |   |    |
131                    | glyph |        |
132                |   |       |   |    |
133     base point     |       |        |
134              \ |   |       |   |    |
135               \    |       |        |
136            _ __x___|_______|___|____|__ baseline
137   y_offset |       |       |        |
138            v   |   o-------o   |    | descent
139                 - - - - - - - -     v
140            
141                |--->
142                x_offset
143
144                |--------------->
145                advance
146
147
148 Changelog
149
150 next
151 - Alternate ways of specifying code point ranges
152 - Multiple code point ranges can be specified
153 - Option to generate non-power-of-two images
154 - Support for distance field generation
155
156 1.1
157 - Controllable margin and padding in packed mode
158 - Do not generate overly large images in sequential grid mode
159
160 1.0
161 - Improve the packing algorithm
162 - Non-square cells for grid mode
163 - Option to invert colors
164 - Include kerning information in definition file
165
166 0.3
167 - Restructure the code
168 - Add tight packing mode
169 - Autodetect cell size and chars-per-line in grid mode
170
171 0.2.2
172 - Write both X and Y offsets of glyphs to the definition file
173 - Output font ascent and descent to definition file
174
175 0.2.1
176 - Don't create too large image with sequential mode if the range is sparse
177
178 0.2
179 - Added output to stdout
180 - Clean up code a bit
181 - Added sequential mode
182 - Added definition file writing
183
184 0.1.1
185 - Added more verbosity
186 - Added transparency mode
187
188 0.1
189 - Initial release
190
191
192 License
193
194 This program is free software; you can redistribute it and/or
195 modify it under the terms of the GNU General Public License
196 as published by the Free Software Foundation; either version 2
197 of the License, or (at your option) any later version.
198
199 This program is distributed in the hope that it will be useful,
200 but WITHOUT ANY WARRANTY; without even the implied warranty of
201 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
202 GNU General Public License for more details.
203
204 You should have received a copy of the GNU General Public License
205 along with this program; if not, write to the Free Software
206 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.