summaryrefslogtreecommitdiff
path: root/freetype2/docs/index.html
blob: 5c3e3d636b47c2f0c71cec0ba6c87f5087580c1d (plain)
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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">

<head>
  <meta http-equiv="Content-Type"
        content="text/html; charset=utf-8">
  <meta http-equiv="Content-Style-Type"
        content="text/css">
  <meta http-equiv="Content-Script-Type"
        content="text/javascript">
  <meta name="description"
        content="FreeType Overview">

  <link rel="icon"
        href="../../image/favicon_-60.ico">
  <link rel="shortcut icon"
        href="../../image/favicon_-60.ico">
  <link rel="stylesheet"
        type="text/css"
        href="../../css/freetype2_-60.css">

  <script type="text/javascript"
          src="../../js/jquery-1.11.0.min.js">
  </script>
  <script type="text/javascript"
          src="../../js/jquery.ba-resize.min.js">
  </script>
  <script type="text/javascript"
          src="../../js/freetype2.js">
  </script>

  <title>FreeType Overview</title>
</head>


<body>

<div id="top"
     class="bar">
  <h1><a href="../../index.html">FreeType</a> Overview</h1>
</div>


<div id="wrapper">

<div class="colmask leftmenu">
  <div class="colright">
    <div class="col1wrap">
      <div class="col1">


        <!-- ************************************************** -->

        <div id="what-is-freetype">
          <h2>What is FreeType?</h2>

          <p>FreeType is a software font engine that is designed to
            be small, efficient, highly customizable, and portable
            while capable of producing high-quality output (glyph
            images).  It can be used in graphics libraries, display
            servers, font conversion tools, text image generation
            tools, and many other products as well.</p>

          <p>Note that FreeType is a <em>font service</em> and doesn't
            provide APIs to perform higher-level features like text
            layout or graphics processing (e.g., colored text
            rendering, &lsquo;hollowing&rsquo;, etc.).  However, it
            greatly simplifies these tasks by providing a simple, easy
            to use, and uniform interface to access the content of
            font files.</p>

          <p>FreeType is released under two open-source licenses: our
            own
            BSD-like <a href="http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT">FreeType
              License</a> and
            the <a href="http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/GPLv2.TXT">GNU
              Public License, Version&nbsp;2</a>.  It can thus be used
            by any kind of projects, be they proprietary or not.</p>

          <p>Please note that &lsquo;FreeType&rsquo; is also called
            &lsquo;FreeType&nbsp;2&rsquo;, to distinguish it from the
            old, deprecated &lsquo;FreeType&nbsp;1&rsquo; library, a
            predecessor no longer maintained and supported.</p>
        </div>


        <!-- ************************************************** -->

        <div id="features">
          <h2>Features</h2>

          <p>The following is a non-exhaustive list of features
            provided by FreeType.</p>

          <ul>
            <li>
              <p>FreeType provides a simple and easy-to-use API to
                access font content in a uniform way, independently of
                the file format.  Additionally, some format-specific
                APIs can be used to access special data in the font
                file.</p>
            </li>
            <li>
              <p>The design of FreeType is based on modules that can
                be either linked statically to the library at compile
                time, or loaded on demand at runtime.  Modules are
                used to support specific font formats, or even new
                glyph image formats!</p>
            </li>
            <li>
              <p>FreeType was written with embedded systems in mind.
                This means that it doesn't use static writable data
                (i.e., it can be run from ROM directly), and that
                client applications can provide their own memory
                manager and I/O stream implementation.  The latter
                allows you to easily read from ROM-based, compressed
                or remote font files with the same API.  Several
                stream implementations can be used concurrently with a
                single FreeType instance.</p>

              <p>You can also reduce the size of the FreeType code by
                only compiling the modules you need for your embedded
                project or environment.</p>
            </li>
            <li>
              <p>By default, FreeType supports the following font
                formats.</p>

              <ul>
                <li>TrueType fonts (TTF) and TrueType collections
                  (TTC)</li>
                <li>CFF fonts</li>
                <li>WOFF fonts</li>
                <li>OpenType fonts (OTF, both TrueType and CFF
                  variants) and OpenType collections (OTC)</li>
                <li>Type&nbsp;1 fonts (PFA and PFB)</li>
                <li>CID-keyed Type&nbsp;1 fonts</li>
                <li>SFNT-based bitmap fonts, including color Emoji</li>
                <li>X11 PCF fonts</li>
                <li>Windows FNT fonts</li>
                <li>BDF fonts (including anti-aliased ones)</li>
                <li>PFR fonts</li>
                <li>Type&nbsp;42 fonts (limited support)</li>
              </ul>
            </li>
            <li>
              <p>From a given glyph outline, FreeType is capable of
                producing a high-quality monochrome bitmap, or
                anti-aliased pixmap, using 256 levels of
                &lsquo;gray&rsquo;.</p>
            </li>
            <li>
              <p>FreeType supports all the character mappings defined
                by the TrueType and OpenType specifications.  It is
                also capable of automatically synthetizing a Unicode
                charmap from Type&nbsp;1 fonts, avoiding painful
                &lsquo;encoding translation&rsquo; problems common
                with this format (of course, original encodings are
                also available if necessary).</p>
            </li>
            <li>
              <p>The FreeType core API provides simple functions to
                access advanced information like glyph names or basic
                kerning data.</p>
            </li>
            <li>
              <p>A full-featured and efficient TrueType bytecode
                interpreter, trying to match the results of the
                Windows bytecode engine.  There is also the
                possibility to activate subpixel hinting
                (a.k.a. <em>ClearType</em>, still under
                development).</p>
            </li>
            <li>
              <p>For those who don't need or want to use the bytecode
                interpreter for TrueType fonts, we developed our
                own <em>automatic hinter</em> module.  It is also used
                by other scalable formats.</p>
            </li>
            <li>
              <p>Due to its modular design, it is easy to enhance the
                library, providing additional format-specific
                information through optional APIs (as an example, an
                optional API is provided to retrieve SFNT tables from
                TrueType and OpenType fonts).</p>
            </li>
            <li>
              <p>FreeType provides its own caching subsystem.  It can
                be used to cache either face instances or glyph images
                efficiently.</p>
            </li>
            <li>
              <p>A bundle of demo programs demonstrate the usage of
                FreeType; look for the
                &lsquo;ft2demos-<i>x.x.x</i>&rsquo; archive (or
                &lsquo;ftdmo<i>xxx</i>&rsquo; in case you are on a
                Windows platform) at the locations
                given <a href="../../download.html">here</a>.
                &lsquo;<i>x.x.x</i>&rsquo; (or
                &lsquo;<i>xxx</i>&rsquo;) gives the version number,
                for example &lsquo;2.4.10&rsquo; or
                &lsquo;2410&rsquo;.</p>
            </li>
          </ul>
        </div>


        <!-- ************************************************** -->

        <div id="requirements">
          <h2>Requirements</h2>

          <p>FreeType is written in industry-standard ANSI&nbsp;C and
            should compile easily with any compliant C&nbsp;or C++
            compiler.  We have even taken great care to
            eliminate <em>all warnings</em> when compiling with
            popular compilers like gcc, Visual C++, and Borland
            C++.</p>

          <p>Apart from a standard ANSI&nbsp;C library, FreeType
            doesn't have any external dependencies and can be compiled
            and installed on its own on any kind of system.  Some
            modules <em>need</em> external libraries (e.g., for
            handling fonts compressed with gzip or bz2), however, they
            are optional and can be disabled.</p>
        </div>


        <!-- ************************************************** -->

        <div id="patents">
          <h2>Patent Issues</h2>

          <p>All patents related to the TrueType bytecode interpreter
            expired in May 2010.  All patents related to the ClearType
            color filtering model expired in August 2019.</p>

          <p>More information regarding this topic is available at
            our <a href="../../patents.html">patents page</a>.</p>
        </div>


        <!-- ************************************************** -->

        <div class="updated">
          <p>Last update: 17-Aug-2020</p>
        </div>
      </div>
    </div>


    <!-- ************************************************** -->

    <div class="col2">
    </div>
  </div>
</div>


<!-- ************************************************** -->

<div id="TOC">
  <ul>
    <li class="funding">
      <form action="https://www.paypal.com/cgi-bin/webscr"
            method="post"
            target="_top">
        <input type="hidden"
               name="cmd"
               value="_s-xclick">
        <input type="hidden"
               name="hosted_button_id"
               value="SK827YKEALMT4">
        <input type="image"
               src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif"
               name="submit"
               alt="PayPal - The safer, easier way to pay online!">
        <img alt=""
             border="0"
             src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif"
             width="1"
             height="1">
      </form>
    </li>
    <li class="primary">
      <a href="../../index.html">Home</a>
    </li>
    <li class="primary">
      <a href="../../index.html#news">News</a>
    </li>
    <li class="primary">
      <a href="index.html" class="current">Overview</a>
    </li>
    <li class="primary">
      <a href="documentation.html">Documentation</a>
    </li>
    <li class="primary">
      <a href="../../developer.html">Development</a>
    </li>
    <li class="primary">
      <a href="../../contact.html"
         class="emphasis">Contact</a>
    </li>

    <li>
      &nbsp; <!-- separate primary from secondary entries -->
    </li>

    <li class="secondary">
      <a href="#what-is-freetype">What is FreeType?</a>
    </li>
    <li class="secondary">
      <a href="#features">Features</a>
    </li>
    <li class="secondary">
      <a href="#requirements">Requirements</a>
    </li>
    <li class="secondary">
      <a href="#patents">Patents</a>
    </li>
  </ul>
</div>

</div> <!-- id="wrapper" -->

<div id="TOC-bottom">
</div>

</body>
</html>