summaryrefslogtreecommitdiff
path: root/ttfautohint/index.html
blob: 18f987949412cd73eaf681784a39e62287264a65 (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
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
<!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="ttfautohint: a free auto-hinter for TrueType fonts">
  <meta name="keywords"
        content="FreeType TrueType digital font TTF engine autohint hint">

  <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>ttfautohint</title>
</head>

<body>

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


<div id="wrapper">

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


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

        <div id="goal">
          <p>ttfautohint provides a 99% automated hinting process and
            a platform for finely hand-hinting the last 1%.  It is
            ideal for web fonts and supports many scripts: Latin,
            Greek, Arabic, Devanagari, Hebrew, Khmer, Myanmar, Thai,
            and many more.</p>
        </div>

        <div id="video"
             align="center">
          <object width="640"
                  height="390"
                  data="https://www.youtube.com/embed/1ivGU9W822k?hd=1"
                  type="text/html">
            <param name="movie"
                   value="https://www.youtube.com/embed/1ivGU9W822k?hd=1">
            <param name="allowFullScreen"
                   value="true">
          </object>
        </div>


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

        <div id="news">
          <h4>1st January 2018</h4>

          <p>The new year starts with a new ttfautohint release,
            version 1.8.1!  (Version 1.8 was not released due to a
            serious configuration bug found after publicly tagging the
            git repository.)  Its main new feature is a third stem
            width and positioning mode, &lsquo;natural&rsquo;: No
            adjustments to stem widths, discrete blue zone
            positioning.  This is what FreeType uses for its
            &lsquo;light&rsquo; (auto-)hinting mode.</p>

          <p>Another important improvement is the possibility to
            manually override stem widths for the hinting process.
            This is especially useful for extra-bold fonts, where the
            algorithmically derived values are often too large,
            causing the filling of &lsquo;eyes&rsquo; in glyphs like
            &lsquo;e&rsquo; or &lsquo;a&rsquo; at small sizes.</p>

          <p>Finally, ttfautohint gets now installed as a library also
            (if you use the Unix toolchain for building and
            installation).</p>

          <p>The complete list of changes can be found in
            the <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.8.1/">release
            notes</a>.</p>

          <h4>26th August 2017</h4>

          <p>This release mainly brings support for a bunch of new
            scripts: Adlam, Avestan, Bamum, Buhid, Unified Canadian
            Syllabics, Carian, Chakma, Coptic, Cypriot, Deseret,
            Glagolitic, Gothic, Kayah Li, Lisu, N'Ko, Ol Chiki, Old
            Turkic, Osage, Osmanya, Saurashtra, Shavian, Sundanese,
            Tai Viet, Tifinagh, Vai – many thanks to Sascha Brawer who
            contributed most of the code!</p>

          <p>Other, minor changes are described in
            the <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.7/">release
              notes</a>.</p>

          <h4>27th November 2016</h4>

          <p>The long overdue version 1.6 is finally out!  Its main
            new feature is the support of a reference file from which
            all blue zone values are taken.  Besides that, a large
            bunch of new scripts has been added: Armenian, Cherokee,
            Ethiopic, Georgian, Gujarati, Gurmukhi, Kannada,
            Malayalam, Sinhala, and Tamil.</p>

          <p>A more detailed list of changes can be found in
            the <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.6/">release
              notes</a>.</p>

          <div style="text-align: center;
                      margin-top: 2ex">
            <a title="ttfautohint 1.6 on Windows 8.1">
              <img src="image/ttfautohint-1.6-win81.png"
                   alt="A screen snapshot of the ttfautohint binary
                        version 1.6 on Windows 8.1"
                   width="670"
                   height="650">
            </a>
          </div>

          <h4>24th January 2016</h4>

          <p>I've just released version 1.5, which mainly brings
            support for some new scripts: Khmer, Mynamar, and Bengali
            (and more Indic scripts to come in the next release).
            Information on other changes and bugfixes can be found in
            the <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.5/">release
            notes</a>.</p>


          <h4>18th October 2015</h4>

          <p>Due to a serious bug in applying control instructions to
            accent-like glyphs, it was necessary to release version
            1.4.1 (containing no other noteworthy changes).  All users
            should upgrade.


          <h4>5th October 2015</h4>

          <p>Version 1.4 is out!  It now supports hinting for fonts
            providing glyphs for Lao, Thai, and Arabic, among other
            things.  It also fixes an annoying buglet for the
            &lsquo;touch&rsquo; keyword as used in control
            instructions files.</p>

          <p>As usual, you can find more information in
            the <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.4/">release
            notes</a>.</p>


          <h4>7th January 2015</h4>

          <p>I've released version 1.3.  Besides support for Telugu,
            there is a new facility for testing parameters of
            ttfautohint in parallel.</p>

          <p>Please read
            the <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.3/">release
            notes</a> for more.</p>


          <h4>7th October 2014</h4>

          <p>Since yesterday, version 1.2 is available for download.
            The most important change is a new possibility to
            fine-tune the hinting process at a low level.</p>

          <p>Other improvements are covered
            <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.2/">here</a>
            as usual.</p>


          <h4>7th May 2014</h4>

          <p>Version 1.1 is now available.  The main new feature is
            support for the Devanagari script &ndash; please test!</p>

          <p>In case you need hinting for GDI ClearType, you should
            upgrade to this version, since some bugs related to stem
            width computation were identified and fixed.  As usual,
            the complete list of important changes can be
            found <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.1/">here</a>.</p>

          <h4>27th March 2014</h4>

          <p>The Windows binary of ttfautohintGUI version 1.00 didn't
            work standalone, as intended.  Please download it again
            (the new <tt>.7z</tt> archive has 26-Mar-2014 as the date
            and a size of 3278316 bytes).</p>

          <h3>Version 1.0 has been released</h3>
          <div class="date">22nd March 2014</div>

          <p>Finally, the long-awaited version 1.0 is here!  Compared
            to the 1.00rc1 release, the memory management has been
            improved to avoid excessive allocation under certain
            circumstances.  Support for symbol fonts has been fixed
            also.</p>

          <p>As mentioned earlier, GDI ClearType hinting is now much
            better.  However, I missed to show comparison images,
            which I now do.  The top and bottom images (showing Ubuntu
            regular processed with ttfautohint) are the output of an
            older and the current version of ttfautohint,
            respectively.</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <img src="image/ttfa-gdi-old-C.png"
                 alt="A magnified screen snapshot of GDI hinting
                      created with an older version of ttfautohint"
                 width="92"
                 height="112"
                 style="padding-right: 1em">
            <img src="image/ttfa-gdi-new-C.png"
                 alt="A magnified screen snapshot of GDI hinting
                      created with version 1.0 of ttfautohint"
                 width="92"
                 height="112"
                 style="padding-left: 1em">
          </div>

          <p>The ugly flat tops and bottoms of round shapes are
            gone.</p>

          <h4><a href="history.html">older news</a></h4>
        </div>


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

        <div id="introduction">
          <h2>Introduction</h2>

          <p><a href="mailto:wl@gnu.org">Werner Lemberg</a> is making
            it easy for type designers to create web fonts that look
            great on Windows, with <tt>ttfautohint</tt>.</p>

          <p>Hinting TrueType fonts can be a slow and expensive
            process, and many fonts lack good hinting totally because
            they are converted to TrueType from another font
            format.</p>

          <p><tt>ttfautohint</tt> solves this, by building on
            <a href="http://www.freetype.org">FreeType</a>'s
            auto-hinting system.  It brings the excellent quality of
            FreeType rendering to platforms which don't use FreeType,
            yet require hinting for text to look good &ndash; like
            Microsoft Windows.</p>

          <p>Across Windows rendering environments today,
            <tt>ttfautohint</tt> fonts look best with DirectWrite
            ClearType enabled. This is the default for Windows&nbsp;7
            and newer.  Good visual results are also seen in recent
            MacOS X versions and GNU/Linux systems that do use
            FreeType for rendering.</p>

          <p>The main part of the project is a code
            library, <tt>libttfautohint</tt>, which is described in
            detail in the source code header file
            <a href="http://repo.or.cz/w/ttfautohint.git/blob/HEAD:/lib/ttfautohint.h"><tt>src/ttfautohint.h</tt></a>.
            There are utility programs with both command-line and GUI
            interfaces, <a href="#download">ready to use
            today</a>.</p>

          <p>The goal of the project is to generate a &lsquo;first
            pass&rsquo; of hinting that font developers can refine
            further for ultimate quality.</p>

          <div style="text-align: center;
                      margin-top: 2ex">
            <img src="image/LiberationSerif-Regular-TA-dollar-19px.gif"
                 alt="animated dollar glyph of LiberationSerif-Regular"
                 width="407"
                 height="444">
          </div>

          <p>The animation above shows how the hints created
            by <tt>ttfautohint</tt> get applied to the dollar glyph of
            <a href="https://fedorahosted.org/liberation-fonts/">Liberation
              Serif Regular</a> at 19&nbsp;pixels per em, using
            <a href="http://fontforge.sourceforge.net/">FontForge</a>'s
            TrueType hinting bytecode debugger.  (You can view the
            image <a href="image/LiberationSerif-Regular-TA-dollar-19px.gif">directly</a>
            to see it in original size.)</p>
        </div>


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

        <div id="roadmap">
          <h2>Roadmap</h2>

          <p>The project started in 2010
            when <a href="http://understandingfonts.com/">Dave
              Crossland</a> suggested the idea of the program.  Werner was
            able to start development thanks to financial support from the
            <a href="http://www.google.com/webfonts/">Google Web
            Fonts</a> team.</p>

          <p>He soon produced results that received
            <a href="http://typophile.com/node/83829">some warm
              attention from professional type designers</a>.</p>

          <p>Hinting TrueType fonts is a very time consuming and
            expensive process for type designers.  Producing high
            quality hinting for most glyphs in a font, and allowing
            them to fine-tune the results by hand will simplify the
            lives of all type designers.  This little program is set
            to improve the quality of web typography!</p>

          <p>The <a href="http://repo.or.cz/w/ttfautohint.git/blob/HEAD:/TODO"><tt>TODO</tt></a>
            file in the source code repository provides an extensive
            list of things which will be eventually handled in one or
            another way.  Here is a short list of essential items:</p>

          <ul style="list-style: circle">
            <li>
              <p><strong>Improve the way you can fine-tune the
                  results</strong> &ndash; you can already control
                blue zones and stem widths together with delta
                instructions and other details of the hinting
                process, but there are certainly aspects that could
                be improved further.  If you have feedback for this
                feature, please send an e-mail
                to <a href="mailto:wl@gnu.org">Werner
                  Lemberg</a>.</p>
            </li>
            <li>
              <p><strong>Add hooks for other tools</strong> &ndash; to
                allow smooth integration with various font editors.
                Some of them already support a direct call of
                ttfautohint, but more has to be done, especially for
                fine-tuning blue-zones and the like.</p>
            </li>
            <li>
              <p><strong>Emit the actions in the high-level hinting
                  command languages</strong> &ndash; those used in other
                tools, such as
                <a href="http://www.microsoft.com/typography/tools/vtt.aspx">Visual
                  TrueType (VTT)</a> or
                <a href="http://www.fontlab.com/">FontLab</a>, instead
                of only emitting final low-level bytecode.  This will
                allow designers to fine tune the results by hand
                &ndash; essential for those tricky glyphs that require
                intelligent decisions by a human</p>
            </li>
          </ul>
        </div>


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

        <div id="samples">
          <h2>Visual Samples</h2>

          <p>The late <a href="http://sansoxygen.com">Vernon Adams</a>
            helped in providing comparison images, testing the output
            of various browsers on different platforms.  For this
            purpose, he used his
            excellent <a href="http://vernnobile.github.io/webfont-testing/">framework
              for testing browser fonts</a>.  Some of them are shown
            below.</p>

          <p class="warning">You should look at the images without any
            zoom so that your browser doesn't rescale them.</p>

          <p>Ubuntu Regular, Windows DirectWrite ClearType (as
            rendered by Firefox on Windows&nbsp;7).  Left the
            original, manual hinting, right the hinting applied by
            <tt>ttfautohint</tt>:</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <img src="image/ubuntu-original-firefox-win7.png"
                 alt="Ubuntu Regular, Windows DirectWrite ClearType,
                      original hinting"
                 width="360"
                 height="910">
            <img src="image/ubuntu-ttfa-firefox-win7.png"
                 alt="Ubuntu Regular, Windows DirectWrite ClearType,
                      ttfautohint hinting"
                 width="360"
                 height="910">
          </div>

          <p>Ubuntu regular, GDI ClearType (as rendered by Chrome on
            Windows&nbsp;7).  Left the original, manual hinting, right
            the hinting applied by <tt>ttfautohint</tt>:</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <img src="image/ubuntu-original-chrome-win7.png"
                 alt="Ubuntu Regular, Windows GDI ClearType,
                      original hinting"
                 width="360"
                 height="954">
            <img src="image/ubuntu-ttfa-chrome-win7.png"
                 alt="Ubuntu Regular, Windows GDI ClearType,
                      ttfautohint hinting"
                 width="360"
                 height="954">
          </div>

          <p>Bitstream Vera Sans, Windows DirectWrite ClearType (as
            rendered by Firefox on Windows&nbsp;7).  Left the
            original, manual hinting, right the hinting applied by
            <tt>ttfautohint</tt>:</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <img src="image/vera-original-firefox-win7.png"
                 alt="Bitstream Vera Sans, Windows DirectWrite
                      ClearType, original hinting"
                 width="360"
                 height="910">
            <img src="image/vera-ttfa-firefox-win7.png"
                 alt="Bitstream Vera Sans, Windows DirectWrite
                      ClearType, ttfautohint hinting"
                 width="360"
                 height="910">
          </div>

          <p>Bitstream Vera Sans, GDI ClearType (as rendered by Chrome
            on Windows&nbsp;7).  Left the original, manual hinting,
            right the hinting applied by <tt>ttfautohint</tt>:</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <img src="image/vera-original-chrome-win7.png"
                 alt="Bitstream Vera Sans, Windows GDI ClearType,
                      original hinting"
                 width="360"
                 height="954">
            <img src="image/vera-ttfa-chrome-win7.png"
                 alt="Bitstream Vera Sans, Windows GDI ClearType,
                      ttfautohint hinting"
                 width="360"
                 height="954">
          </div>

          <p>DroidSerif Regular, Windows DirectWrite ClearType (as
            rendered by Firefox on Windows&nbsp;7).  Left the
            original, manual hinting, right the hinting applied by
            <tt>ttfautohint</tt>:</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <img src="image/droidserif-original-firefox-win7.png"
                 alt="DroidSerif Regular, Windows DirectWrite
                      ClearType, original hinting"
                 width="360"
                 height="910">
            <img src="image/droidserif-ttfa-firefox-win7.png"
                 alt="DroidSerif Regular, Windows DirectWrite
                      ClearType, ttfautohint hinting"
                 width="360"
                 height="910">
          </div>

          <p>DroidSerif Regular, GDI ClearType (as rendered by Chrome
            on Windows&nbsp;7).  Left the original, manual hinting,
            right the hinting applied by <tt>ttfautohint</tt>:</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <img src="image/droidserif-original-chrome-win7.png"
                 alt="DroidSerif Regular, Windows GDI ClearType,
                      original hinting"
                 width="360"
                 height="954">
            <img src="image/droidserif-ttfa-chrome-win7.png"
                 alt="DroidSerif Regular, Windows GDI ClearType,
                      ttfautohint hinting"
                 width="360"
                 height="954">
          </div>

          <p>Finally, here the font files used in the samples above so
            that you can compare the hinting results by yourself.</p>

          <div class="quote">
            <p><a href="Ubuntu-R.ttf"><tt>Ubuntu-R.ttf</tt></a>
              (<a href="http://font.ubuntu.com/">Ubuntu Regular</a>,
              version 0.80)<br>
              <a href="Ubuntu-TTFautohint-R.ttf"><tt>Ubuntu-TTFautohint-R.ttf</tt></a></p>

            <p><a href="DroidSerif-Regular.ttf"><tt>DroidSerif-Regular.ttf</tt></a>
              (<a href="http://www.google.com/fonts/specimen/Droid+Serif#pairings">DroidSerif
                Regular</a>, version 1.00)<br>
              <a href="DroidSerif-TTFautohint-Regular.ttf"><tt>DroidSerif-TTFautohint-Regular.ttf</tt></a></p>

            <p><a href="Vera.ttf"><tt>Vera.ttf</tt></a>
              (<a href="http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/">Bitstream
                Vera Sans</a>, version 1.10)<br>
              <a href="Vera-TTFautohint.ttf"><tt>Vera-TTFautohint.ttf</tt></a></p>
          </div>

          <p>Note that the fonts were generated with
            version&nbsp;1.00rc1 of <tt>ttfautohint</tt> (using
            default settings); they were also manually edited
            with <a href="http://sourceforge.net/projects/fonttools/">ttx</a>
            to change the font names so that it is possible to use the
            original versions and the versions processed
            with <tt>ttfautohint</tt> in parallel.</p>

          <p>Recently, Jasper de Waard completed
            his <a href="https://fonts.google.com/specimen/Proza+Libre">Proza
              Libre</a> font family, using ttfautohint for hinting,
            which he documented both in a
            <a href="http://ilovetypography.com/2016/07/14/making-fonts-proza-libre/">blog</a>
            and a video.</p>

          <div style="text-align: center;
                      margin-top: 1ex;
                      margin-bottom: 1ex;">
            <iframe src="https://player.vimeo.com/video/140530738"
                    width="640"
                    height="360"
                    frameborder="0"
                    webkitallowfullscreen
                    mozallowfullscreen
                    allowfullscreen></iframe>
          </div>

          <p>Matt Wiebe has tested the
            font <a href="http://en.wikipedia.org/wiki/VAG_Rounded"><em>VAG
            Rounded</em></a> with a very early version
            of <tt>ttfautohint</tt>; he presents the results on
            his <a href="http://somadesign.ca/2011/improve-windows-type-rendering-with-ttfautohint/">blog</a>.</p>
        </div>


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

        <div id="works">
          <h2 class="section">How It Works</h2>

          <p>A detailed description of the auto-hinter inside FreeType
            can be found
            <a href="../autohinting/hinter.html">here</a>.  Although
            these web pages are in need of an update, the basic
            principles of the auto-hinting process haven't changed.
            There is one exception: The auto-hinter no longer tries to
            provide good hinting for monochrome rasterization.
            Instead, it expects anti-aliasing with 256 gray levels,
            which became standard with Windows&nbsp;98.</p>

          <p>A scholarly paper published in the EuroTeX 2003 proceedings,
            titled
            <a href="http://www.tug.org/TUGboat/tb24-3/lemberg.pdf"><em>Real-Time
                Grid Fitting of Typographic Outlines</em></a>, gives
            further insight into the auto-hinting system's inner
            workings.</p>

          <p>In the above links, one aspect of the auto-hinting
            process is missing: The various steps performed by the
            auto-hinter (called <em>actions</em>) can be described as
            high-level operations, for example &ldquo;aligning a given
            edge to a given blue zone,&rdquo; or &ldquo;linking this
            edge to another one within a given distance.&rdquo;
            The <tt>ttfautohint</tt> library hooks into these actions
            and transforms them into bytecode routines.</p>

          <p>Similar to most TrueType hints, the autohint actions
            depend on the device resolution.
            Consequently, <tt>ttfautohint</tt> walks over a large
            range of ppem values (8&nbsp;to 50&nbsp;ppem by default)
            and collects the actions as sets.  A typical glyph outline
            needs three to four sets (covering the whole range), but
            sometimes more than ten are necessary.</p>

          <p>Intentionally, <tt>ttfautohint</tt> adds hints only along
            the y-axis.
            The <a href="http://www.antigrain.com/research/font_rasterization/">Anti-Grain
            research</a> describes some of the reasons behind this
            decision.  While the article is quite old, the mentioned
            ideas are still valid.</p>

          <p>The <tt>ttfautohint</tt> library contains a copy of
            FreeType's &lsquo;autofit&rsquo; module, reformatted and
            using a different function prefix, and with slight
            extensions for hooks into hinting actions.  It therefore
            inherits the same dual-licensing as FreeType; you can
            choose between the GNU Public License (GPL) Version&nbsp;2
            and the FreeType License (FTL).</p>
        </div>


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

        <div id="contact">
          <h2>Contact</h2>

          <p>Werner Lemberg
            (<a href="mailto:wl@gnu.org">wl@gnu.org</a>) is Technical
            Lead, and does all the programming.  He is a professional
            classical musician and lives in Vienna, Austria.</p>

          <p>Dave Crossland
            (<a href="mailto:dave@understandingfonts.com">dave@understandingfonts.com</a>)
            is the Project Manager, and wrote and art directed the
            promotional video at the top of this page.  He is a
            professional type designer and lives in London,
            England.</p>

          <p>Andy Ellis
            (<a href="mailto:hello@fadeinfadeout.co.uk">hello@fadeinfadeout.co.uk</a>)
            designed and produced the promotion video.  He is a
            professional motion graphic designer and lives in London,
            England.</p>
        </div>


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

        <div id="download">
          <h2>Download</h2>

          <p>Current version: 1.8.1 (1st January 2018)</p>


          <h3>Binaries</h3>

          <p>These stand-alone versions of ttfautohint and
            ttfautohintGUI don't have any dependencies and can be run
            directly after uncompressing the archive.</p>

          <p><strong>
              <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.8.1/ttfautohint-1.8.1-win32.7z/download">Windows</a>
            </strong><br>
            <tt>ttfautohint 1.8.1</tt> &ndash; both command line and
            GUI.</p>

          <p><strong>
              <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/1.8.1/ttfautohint-1.8.1-tty-osx.tar.gz/download">Apple</a>
            </strong><br>
            <tt>ttfautohint 1.8</tt> &ndash; currently command line
            only; thanks to Karsten L&uuml;cke for creating this!
            This universal binary (functionally equivalent to version
            1.8.1) for the i386 and x86_64 architectures has been
            compiled under OS&nbsp;X 10.5.8 and should run with newer
            versions also.  Read <a href="osx.html">this page</a> how
            to get the GUI version.</p>


          <h3>Source Code and Documentation</h3>

          <p>The latest source package of <tt>ttfautohint</tt>,
            including documentation in HTML, PDF, and text format, can
            be downloaded either
            from <a href="http://download.savannah.gnu.org/releases/freetype/">Savannah</a>
            or
            from <a href="http://sourceforge.net/projects/freetype/files/ttfautohint/">SourceForge</a>.</p>

          <p>The documentation is available
            <a href="doc/ttfautohint.html">online</a> also.

          <p>All development takes places within a public git repository;
            see the
            <a href="http://repo.or.cz/w/ttfautohint.git">repo.or.cz</a>
            repository homepage for details.</p>

          <p>Note: Prerequisites for compiling the library is FreeType
            version 2.4.5 or newer and HarfBuzz version 1.3.0 or
            newer; see <a href="../download.html">FreeType's download
              page</a>
            and <a href="http://www.freedesktop.org/software/harfbuzz/release/">HarfBuzz's
              download page</a> for more information.</p>

          <p><a href="osx.html">Compile
              <tt>ttfautohint</tt> for Mac OS X</a>, including the
              GUI.</p>

        </div>


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

        <div class="webmaintainer">
          <p>This page is maintained by
            <a href="mailto:wl@gnu.org">Werner Lemberg.</a></p>
        </div>
      </div>
    </div>


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

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


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

<div id="TOC">
  <ul>
    <li class="primary">
      <a href="index.html" class="current">Home</a>
    </li>
    <li class="primary">
      <a href="#goal">Goal</a>
    </li>
    <li class="primary">
      <a href="#video">Watch The Video</a>
    </li>
    <li class="primary">
      <a href="#news">News</a>
    </li>
    <li class="primary">
      <a href="#introduction">Introduction</a>
    </li>
    <li class="primary">
      <a href="doc/ttfautohint.html">Documentation</a>
    </li>
    <li class="primary">
      <a href="#roadmap">Roadmap</a>
    </li>
    <li class="primary">
      <a href="#samples">Visual Samples</a>
    </li>
    <li class="primary">
      <a href="#works">How It Works</a>
    </li>
    <li class="primary">
      <a href="#contact"
         class="emphasis">Contact</a>
    </li>
    <li>
      <a href="#download">Download</a>
    </li>
  </ul>
</div>

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

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

</body>
</html>