• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2
3
4
5<!doctype html>
6<html lang="en" class="no-js">
7  <head>
8
9      <meta charset="utf-8">
10      <meta name="viewport" content="width=device-width,initial-scale=1">
11      <meta http-equiv="x-ua-compatible" content="ie=edge">
12
13        <meta name="description" content="API Reference Documentation for FreeType-2.10.4">
14
15
16
17        <meta name="author" content="FreeType Contributors">
18
19
20        <meta name="lang:clipboard.copy" content="Copy to clipboard">
21
22        <meta name="lang:clipboard.copied" content="Copied to clipboard">
23
24        <meta name="lang:search.language" content="en">
25
26        <meta name="lang:search.pipeline.stopwords" content="True">
27
28        <meta name="lang:search.pipeline.trimmer" content="True">
29
30        <meta name="lang:search.result.none" content="No matching documents">
31
32        <meta name="lang:search.result.one" content="1 matching document">
33
34        <meta name="lang:search.result.other" content="# matching documents">
35
36        <meta name="lang:search.tokenizer" content="[\s\-]+">
37
38      <link rel="shortcut icon" href="images/favico.ico">
39      <meta name="generator" content="mkdocs-1.1, mkdocs-material-4.6.3">
40
41
42
43        <title>The TrueType driver - FreeType-2.10.4 API Reference</title>
44
45
46
47      <link rel="stylesheet" href="assets/stylesheets/application.adb8469c.css">
48
49        <link rel="stylesheet" href="assets/stylesheets/application-palette.a8b3c06d.css">
50
51
52
53
54        <meta name="theme-color" content="#4caf50">
55
56
57
58      <script src="assets/javascripts/modernizr.86422ebf.js"></script>
59
60
61
62        <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
63        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback">
64        <style>body,input{font-family:"Noto Serif","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
65
66
67    <link rel="stylesheet" href="assets/fonts/material-icons.css">
68
69
70      <link rel="stylesheet" href="stylesheets/extra.css">
71
72
73
74
75
76  </head>
77
78
79
80    <body dir="ltr" data-md-color-primary="green" data-md-color-accent="green">
81
82    <svg class="md-svg">
83      <defs>
84
85
86      </defs>
87    </svg>
88    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
89    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
90    <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
91
92      <a href="#the-truetype-driver" tabindex="0" class="md-skip">
93        Skip to content
94      </a>
95
96
97      <header class="md-header" data-md-component="header">
98  <nav class="md-header-nav md-grid">
99    <div class="md-flex">
100      <div class="md-flex__cell md-flex__cell--shrink">
101        <a href="." title="FreeType-2.10.4 API Reference" aria-label="FreeType-2.10.4 API Reference" class="md-header-nav__button md-logo">
102
103            <img alt="logo" src="images/favico.ico" width="24" height="24">
104
105        </a>
106      </div>
107      <div class="md-flex__cell md-flex__cell--shrink">
108        <label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
109      </div>
110      <div class="md-flex__cell md-flex__cell--stretch">
111        <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
112
113            <span class="md-header-nav__topic">
114              FreeType-2.10.4 API Reference
115            </span>
116            <span class="md-header-nav__topic">
117
118                The TrueType driver
119
120            </span>
121
122        </div>
123      </div>
124      <div class="md-flex__cell md-flex__cell--shrink">
125
126          <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
127
128<div class="md-search" data-md-component="search" role="dialog">
129  <label class="md-search__overlay" for="__search"></label>
130  <div class="md-search__inner" role="search">
131    <form class="md-search__form" name="search">
132      <input type="text" class="md-search__input" aria-label="search" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
133      <label class="md-icon md-search__icon" for="__search"></label>
134      <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
135        &#xE5CD;
136      </button>
137    </form>
138    <div class="md-search__output">
139      <div class="md-search__scrollwrap" data-md-scrollfix>
140        <div class="md-search-result" data-md-component="result">
141          <div class="md-search-result__meta">
142            Type to start searching
143          </div>
144          <ol class="md-search-result__list"></ol>
145        </div>
146      </div>
147    </div>
148  </div>
149</div>
150
151      </div>
152
153    </div>
154  </nav>
155</header>
156
157    <div class="md-container">
158
159
160
161
162      <main class="md-main" role="main">
163        <div class="md-main__inner md-grid" data-md-component="container">
164
165
166              <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
167                <div class="md-sidebar__scrollwrap">
168                  <div class="md-sidebar__inner">
169                    <nav class="md-nav md-nav--primary" data-md-level="0">
170  <label class="md-nav__title md-nav__title--site" for="__drawer">
171    <a href="." title="FreeType-2.10.4 API Reference" class="md-nav__button md-logo">
172
173        <img alt="logo" src="images/favico.ico" width="48" height="48">
174
175    </a>
176    FreeType-2.10.4 API Reference
177  </label>
178
179  <ul class="md-nav__list" data-md-scrollfix>
180
181
182
183
184
185
186  <li class="md-nav__item">
187    <a href="index.html" title="TOC" class="md-nav__link">
188      TOC
189    </a>
190  </li>
191
192
193
194
195
196
197
198  <li class="md-nav__item">
199    <a href="ft2-index.html" title="Index" class="md-nav__link">
200      Index
201    </a>
202  </li>
203
204
205
206
207
208
209
210  <li class="md-nav__item md-nav__item--nested">
211
212      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
213
214    <label class="md-nav__link" for="nav-3">
215      General Remarks
216    </label>
217    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
218      <label class="md-nav__title" for="nav-3">
219        General Remarks
220      </label>
221      <ul class="md-nav__list" data-md-scrollfix>
222
223
224
225
226
227
228
229  <li class="md-nav__item">
230    <a href="ft2-header_inclusion.html" title="FreeType's header inclusion scheme" class="md-nav__link">
231      FreeType's header inclusion scheme
232    </a>
233  </li>
234
235
236
237
238
239
240
241  <li class="md-nav__item">
242    <a href="ft2-user_allocation.html" title="User allocation" class="md-nav__link">
243      User allocation
244    </a>
245  </li>
246
247
248      </ul>
249    </nav>
250  </li>
251
252
253
254
255
256
257
258  <li class="md-nav__item md-nav__item--nested">
259
260      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
261
262    <label class="md-nav__link" for="nav-4">
263      Core API
264    </label>
265    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
266      <label class="md-nav__title" for="nav-4">
267        Core API
268      </label>
269      <ul class="md-nav__list" data-md-scrollfix>
270
271
272
273
274
275
276
277  <li class="md-nav__item">
278    <a href="ft2-version.html" title="FreeType Version" class="md-nav__link">
279      FreeType Version
280    </a>
281  </li>
282
283
284
285
286
287
288
289  <li class="md-nav__item">
290    <a href="ft2-basic_types.html" title="Basic Data Types" class="md-nav__link">
291      Basic Data Types
292    </a>
293  </li>
294
295
296
297
298
299
300
301  <li class="md-nav__item">
302    <a href="ft2-base_interface.html" title="Base Interface" class="md-nav__link">
303      Base Interface
304    </a>
305  </li>
306
307
308
309
310
311
312
313  <li class="md-nav__item">
314    <a href="ft2-glyph_variants.html" title="Unicode Variation Sequences" class="md-nav__link">
315      Unicode Variation Sequences
316    </a>
317  </li>
318
319
320
321
322
323
324
325  <li class="md-nav__item">
326    <a href="ft2-color_management.html" title="Glyph Color Management" class="md-nav__link">
327      Glyph Color Management
328    </a>
329  </li>
330
331
332
333
334
335
336
337  <li class="md-nav__item">
338    <a href="ft2-layer_management.html" title="Glyph Layer Management" class="md-nav__link">
339      Glyph Layer Management
340    </a>
341  </li>
342
343
344
345
346
347
348
349  <li class="md-nav__item">
350    <a href="ft2-glyph_management.html" title="Glyph Management" class="md-nav__link">
351      Glyph Management
352    </a>
353  </li>
354
355
356
357
358
359
360
361  <li class="md-nav__item">
362    <a href="ft2-mac_specific.html" title="Mac Specific Interface" class="md-nav__link">
363      Mac Specific Interface
364    </a>
365  </li>
366
367
368
369
370
371
372
373  <li class="md-nav__item">
374    <a href="ft2-sizes_management.html" title="Size Management" class="md-nav__link">
375      Size Management
376    </a>
377  </li>
378
379
380
381
382
383
384
385  <li class="md-nav__item">
386    <a href="ft2-header_file_macros.html" title="Header File Macros" class="md-nav__link">
387      Header File Macros
388    </a>
389  </li>
390
391
392      </ul>
393    </nav>
394  </li>
395
396
397
398
399
400
401
402  <li class="md-nav__item md-nav__item--nested">
403
404      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
405
406    <label class="md-nav__link" for="nav-5">
407      Format-Specific API
408    </label>
409    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
410      <label class="md-nav__title" for="nav-5">
411        Format-Specific API
412      </label>
413      <ul class="md-nav__list" data-md-scrollfix>
414
415
416
417
418
419
420
421  <li class="md-nav__item">
422    <a href="ft2-multiple_masters.html" title="Multiple Masters" class="md-nav__link">
423      Multiple Masters
424    </a>
425  </li>
426
427
428
429
430
431
432
433  <li class="md-nav__item">
434    <a href="ft2-truetype_tables.html" title="TrueType Tables" class="md-nav__link">
435      TrueType Tables
436    </a>
437  </li>
438
439
440
441
442
443
444
445  <li class="md-nav__item">
446    <a href="ft2-type1_tables.html" title="Type 1 Tables" class="md-nav__link">
447      Type 1 Tables
448    </a>
449  </li>
450
451
452
453
454
455
456
457  <li class="md-nav__item">
458    <a href="ft2-sfnt_names.html" title="SFNT Names" class="md-nav__link">
459      SFNT Names
460    </a>
461  </li>
462
463
464
465
466
467
468
469  <li class="md-nav__item">
470    <a href="ft2-bdf_fonts.html" title="BDF and PCF Files" class="md-nav__link">
471      BDF and PCF Files
472    </a>
473  </li>
474
475
476
477
478
479
480
481  <li class="md-nav__item">
482    <a href="ft2-cid_fonts.html" title="CID Fonts" class="md-nav__link">
483      CID Fonts
484    </a>
485  </li>
486
487
488
489
490
491
492
493  <li class="md-nav__item">
494    <a href="ft2-pfr_fonts.html" title="PFR Fonts" class="md-nav__link">
495      PFR Fonts
496    </a>
497  </li>
498
499
500
501
502
503
504
505  <li class="md-nav__item">
506    <a href="ft2-winfnt_fonts.html" title="Window FNT Files" class="md-nav__link">
507      Window FNT Files
508    </a>
509  </li>
510
511
512
513
514
515
516
517  <li class="md-nav__item">
518    <a href="ft2-font_formats.html" title="Font Formats" class="md-nav__link">
519      Font Formats
520    </a>
521  </li>
522
523
524
525
526
527
528
529  <li class="md-nav__item">
530    <a href="ft2-gasp_table.html" title="Gasp Table" class="md-nav__link">
531      Gasp Table
532    </a>
533  </li>
534
535
536      </ul>
537    </nav>
538  </li>
539
540
541
542
543
544
545
546
547
548  <li class="md-nav__item md-nav__item--active md-nav__item--nested">
549
550      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" checked>
551
552    <label class="md-nav__link" for="nav-6">
553      Controlling FreeType Modules
554    </label>
555    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
556      <label class="md-nav__title" for="nav-6">
557        Controlling FreeType Modules
558      </label>
559      <ul class="md-nav__list" data-md-scrollfix>
560
561
562
563
564
565
566
567  <li class="md-nav__item">
568    <a href="ft2-auto_hinter.html" title="The auto-hinter" class="md-nav__link">
569      The auto-hinter
570    </a>
571  </li>
572
573
574
575
576
577
578
579  <li class="md-nav__item">
580    <a href="ft2-cff_driver.html" title="The CFF driver" class="md-nav__link">
581      The CFF driver
582    </a>
583  </li>
584
585
586
587
588
589
590
591  <li class="md-nav__item">
592    <a href="ft2-t1_cid_driver.html" title="The Type 1 and CID drivers" class="md-nav__link">
593      The Type 1 and CID drivers
594    </a>
595  </li>
596
597
598
599
600
601
602
603
604
605  <li class="md-nav__item md-nav__item--active">
606
607    <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
608
609
610
611
612      <label class="md-nav__link md-nav__link--active" for="__toc">
613        The TrueType driver
614      </label>
615
616    <a href="ft2-tt_driver.html" title="The TrueType driver" class="md-nav__link md-nav__link--active">
617      The TrueType driver
618    </a>
619
620
621<nav class="md-nav md-nav--secondary">
622
623
624
625
626
627    <label class="md-nav__title" for="__toc">Table of contents</label>
628    <ul class="md-nav__list" data-md-scrollfix>
629
630        <li class="md-nav__item">
631  <a href="#synopsis" class="md-nav__link">
632    Synopsis
633  </a>
634
635</li>
636
637
638
639
640
641    </ul>
642
643</nav>
644
645  </li>
646
647
648
649
650
651
652
653  <li class="md-nav__item">
654    <a href="ft2-pcf_driver.html" title="The PCF driver" class="md-nav__link">
655      The PCF driver
656    </a>
657  </li>
658
659
660
661
662
663
664
665  <li class="md-nav__item">
666    <a href="ft2-properties.html" title="Driver properties" class="md-nav__link">
667      Driver properties
668    </a>
669  </li>
670
671
672
673
674
675
676
677  <li class="md-nav__item">
678    <a href="ft2-parameter_tags.html" title="Parameter Tags" class="md-nav__link">
679      Parameter Tags
680    </a>
681  </li>
682
683
684
685
686
687
688
689  <li class="md-nav__item">
690    <a href="ft2-lcd_rendering.html" title="Subpixel Rendering" class="md-nav__link">
691      Subpixel Rendering
692    </a>
693  </li>
694
695
696      </ul>
697    </nav>
698  </li>
699
700
701
702
703
704
705
706  <li class="md-nav__item md-nav__item--nested">
707
708      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
709
710    <label class="md-nav__link" for="nav-7">
711      Cache Sub-System
712    </label>
713    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
714      <label class="md-nav__title" for="nav-7">
715        Cache Sub-System
716      </label>
717      <ul class="md-nav__list" data-md-scrollfix>
718
719
720
721
722
723
724
725  <li class="md-nav__item">
726    <a href="ft2-cache_subsystem.html" title="Cache Sub-System" class="md-nav__link">
727      Cache Sub-System
728    </a>
729  </li>
730
731
732      </ul>
733    </nav>
734  </li>
735
736
737
738
739
740
741
742  <li class="md-nav__item md-nav__item--nested">
743
744      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
745
746    <label class="md-nav__link" for="nav-8">
747      Support API
748    </label>
749    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
750      <label class="md-nav__title" for="nav-8">
751        Support API
752      </label>
753      <ul class="md-nav__list" data-md-scrollfix>
754
755
756
757
758
759
760
761  <li class="md-nav__item">
762    <a href="ft2-computations.html" title="Computations" class="md-nav__link">
763      Computations
764    </a>
765  </li>
766
767
768
769
770
771
772
773  <li class="md-nav__item">
774    <a href="ft2-list_processing.html" title="List Processing" class="md-nav__link">
775      List Processing
776    </a>
777  </li>
778
779
780
781
782
783
784
785  <li class="md-nav__item">
786    <a href="ft2-outline_processing.html" title="Outline Processing" class="md-nav__link">
787      Outline Processing
788    </a>
789  </li>
790
791
792
793
794
795
796
797  <li class="md-nav__item">
798    <a href="ft2-quick_advance.html" title="Quick retrieval of advance values" class="md-nav__link">
799      Quick retrieval of advance values
800    </a>
801  </li>
802
803
804
805
806
807
808
809  <li class="md-nav__item">
810    <a href="ft2-bitmap_handling.html" title="Bitmap Handling" class="md-nav__link">
811      Bitmap Handling
812    </a>
813  </li>
814
815
816
817
818
819
820
821  <li class="md-nav__item">
822    <a href="ft2-raster.html" title="Scanline Converter" class="md-nav__link">
823      Scanline Converter
824    </a>
825  </li>
826
827
828
829
830
831
832
833  <li class="md-nav__item">
834    <a href="ft2-glyph_stroker.html" title="Glyph Stroker" class="md-nav__link">
835      Glyph Stroker
836    </a>
837  </li>
838
839
840
841
842
843
844
845  <li class="md-nav__item">
846    <a href="ft2-system_interface.html" title="System Interface" class="md-nav__link">
847      System Interface
848    </a>
849  </li>
850
851
852
853
854
855
856
857  <li class="md-nav__item">
858    <a href="ft2-module_management.html" title="Module Management" class="md-nav__link">
859      Module Management
860    </a>
861  </li>
862
863
864
865
866
867
868
869  <li class="md-nav__item">
870    <a href="ft2-gzip.html" title="GZIP Streams" class="md-nav__link">
871      GZIP Streams
872    </a>
873  </li>
874
875
876
877
878
879
880
881  <li class="md-nav__item">
882    <a href="ft2-lzw.html" title="LZW Streams" class="md-nav__link">
883      LZW Streams
884    </a>
885  </li>
886
887
888
889
890
891
892
893  <li class="md-nav__item">
894    <a href="ft2-bzip2.html" title="BZIP2 Streams" class="md-nav__link">
895      BZIP2 Streams
896    </a>
897  </li>
898
899
900      </ul>
901    </nav>
902  </li>
903
904
905
906
907
908
909
910  <li class="md-nav__item md-nav__item--nested">
911
912      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
913
914    <label class="md-nav__link" for="nav-9">
915      Error Codes
916    </label>
917    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
918      <label class="md-nav__title" for="nav-9">
919        Error Codes
920      </label>
921      <ul class="md-nav__list" data-md-scrollfix>
922
923
924
925
926
927
928
929  <li class="md-nav__item">
930    <a href="ft2-error_enumerations.html" title="Error Enumerations" class="md-nav__link">
931      Error Enumerations
932    </a>
933  </li>
934
935
936
937
938
939
940
941  <li class="md-nav__item">
942    <a href="ft2-error_code_values.html" title="Error Code Values" class="md-nav__link">
943      Error Code Values
944    </a>
945  </li>
946
947
948      </ul>
949    </nav>
950  </li>
951
952
953
954
955
956
957
958  <li class="md-nav__item md-nav__item--nested">
959
960      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
961
962    <label class="md-nav__link" for="nav-10">
963      Miscellaneous
964    </label>
965    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
966      <label class="md-nav__title" for="nav-10">
967        Miscellaneous
968      </label>
969      <ul class="md-nav__list" data-md-scrollfix>
970
971
972
973
974
975
976
977  <li class="md-nav__item">
978    <a href="ft2-gx_validation.html" title="TrueTypeGX/AAT Validation" class="md-nav__link">
979      TrueTypeGX/AAT Validation
980    </a>
981  </li>
982
983
984
985
986
987
988
989  <li class="md-nav__item">
990    <a href="ft2-incremental.html" title="Incremental Loading" class="md-nav__link">
991      Incremental Loading
992    </a>
993  </li>
994
995
996
997
998
999
1000
1001  <li class="md-nav__item">
1002    <a href="ft2-truetype_engine.html" title="The TrueType Engine" class="md-nav__link">
1003      The TrueType Engine
1004    </a>
1005  </li>
1006
1007
1008
1009
1010
1011
1012
1013  <li class="md-nav__item">
1014    <a href="ft2-ot_validation.html" title="OpenType Validation" class="md-nav__link">
1015      OpenType Validation
1016    </a>
1017  </li>
1018
1019
1020      </ul>
1021    </nav>
1022  </li>
1023
1024
1025  </ul>
1026</nav>
1027                  </div>
1028                </div>
1029              </div>
1030
1031
1032              <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
1033                <div class="md-sidebar__scrollwrap">
1034                  <div class="md-sidebar__inner">
1035
1036<nav class="md-nav md-nav--secondary">
1037
1038
1039
1040
1041
1042    <label class="md-nav__title" for="__toc">Table of contents</label>
1043    <ul class="md-nav__list" data-md-scrollfix>
1044
1045        <li class="md-nav__item">
1046  <a href="#synopsis" class="md-nav__link">
1047    Synopsis
1048  </a>
1049
1050</li>
1051
1052
1053
1054
1055
1056    </ul>
1057
1058</nav>
1059                  </div>
1060                </div>
1061              </div>
1062
1063
1064          <div class="md-content">
1065            <article class="md-content__inner md-typeset">
1066
1067
1068
1069                <p><a href="https://www.freetype.org">FreeType</a> &raquo; <a href="../">Docs</a> &raquo; <a href="index.html#controlling-freetype-modules">Controlling FreeType Modules</a> &raquo; The TrueType driver</p>
1070<hr />
1071<h1 id="the-truetype-driver">The TrueType driver<a class="headerlink" href="#the-truetype-driver" title="Permanent link">&para;</a></h1>
1072<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1073<p>While FreeType's TrueType driver doesn't expose API functions by itself, it is possible to control its behaviour with <code><a href="ft2-module_management.html#ft_property_set">FT_Property_Set</a></code> and <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code>. The following lists the available properties together with the necessary macros and structures.</p>
1074<p>The TrueType driver's module name is &lsquo;truetype&rsquo;.</p>
1075<p>A single property <code><a href="ft2-properties.html#interpreter-version">interpreter-version</a></code> is available, as documented in the &lsquo;<a href="ft2-properties.html#properties">Driver properties</a>&rsquo; section.</p>
1076<p>We start with a list of definitions, kindly provided by Greg Hitchcock.</p>
1077<p><em>Bi-Level Rendering</em></p>
1078<p>Monochromatic rendering, exclusively used in the early days of TrueType by both Apple and Microsoft. Microsoft's GDI interface supported hinting of the right-side bearing point, such that the advance width could be non-linear. Most often this was done to achieve some level of glyph symmetry. To enable reasonable performance (e.g., not having to run hinting on all glyphs just to get the widths) there was a bit in the head table indicating if the side bearing was hinted, and additional tables, &lsquo;hdmx&rsquo; and &lsquo;LTSH&rsquo;, to cache hinting widths across multiple sizes and device aspect ratios.</p>
1079<p><em>Font Smoothing</em></p>
1080<p>Microsoft's GDI implementation of anti-aliasing. Not traditional anti-aliasing as the outlines were hinted before the sampling. The widths matched the bi-level rendering.</p>
1081<p><em>ClearType Rendering</em></p>
1082<p>Technique that uses physical subpixels to improve rendering on LCD (and other) displays. Because of the higher resolution, many methods of improving symmetry in glyphs through hinting the right-side bearing were no longer necessary. This lead to what GDI calls &lsquo;natural widths&rsquo; ClearType, see <a href="http://rastertragedy.com/RTRCh4.htm#Sec21">http://rastertragedy.com/RTRCh4.htm#Sec21</a>. Since hinting has extra resolution, most non-linearity went away, but it is still possible for hints to change the advance widths in this mode.</p>
1083<p><em>ClearType Compatible Widths</em></p>
1084<p>One of the earliest challenges with ClearType was allowing the implementation in GDI to be selected without requiring all UI and documents to reflow. To address this, a compatible method of rendering ClearType was added where the font hints are executed once to determine the width in bi-level rendering, and then re-run in ClearType, with the difference in widths being absorbed in the font hints for ClearType (mostly in the white space of hints); see <a href="http://rastertragedy.com/RTRCh4.htm#Sec20">http://rastertragedy.com/RTRCh4.htm#Sec20</a>. Somewhat by definition, compatible width ClearType allows for non-linear widths, but only when the bi-level version has non-linear widths.</p>
1085<p><em>ClearType Subpixel Positioning</em></p>
1086<p>One of the nice benefits of ClearType is the ability to more crisply display fractional widths; unfortunately, the GDI model of integer bitmaps did not support this. However, the WPF and Direct Write frameworks do support fractional widths. DWrite calls this &lsquo;natural mode&rsquo;, not to be confused with GDI's &lsquo;natural widths&rsquo;. Subpixel positioning, in the current implementation of Direct Write, unfortunately does not support hinted advance widths, see <a href="http://rastertragedy.com/RTRCh4.htm#Sec22">http://rastertragedy.com/RTRCh4.htm#Sec22</a>. Note that the TrueType interpreter fully allows the advance width to be adjusted in this mode, just the DWrite client will ignore those changes.</p>
1087<p><em>ClearType Backward Compatibility</em></p>
1088<p>This is a set of exceptions made in the TrueType interpreter to minimize hinting techniques that were problematic with the extra resolution of ClearType; see <a href="http://rastertragedy.com/RTRCh4.htm#Sec1">http://rastertragedy.com/RTRCh4.htm#Sec1</a> and <a href="https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx">https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx</a>. This technique is not to be confused with ClearType compatible widths. ClearType backward compatibility has no direct impact on changing advance widths, but there might be an indirect impact on disabling some deltas. This could be worked around in backward compatibility mode.</p>
1089<p><em>Native ClearType Mode</em></p>
1090<p>(Not to be confused with &lsquo;natural widths&rsquo;.) This mode removes all the exceptions in the TrueType interpreter when running with ClearType. Any issues on widths would still apply, though.</p>
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101            </article>
1102          </div>
1103        </div>
1104      </main>
1105
1106
1107<footer class="md-footer">
1108
1109    <div class="md-footer-nav">
1110      <nav class="md-footer-nav__inner md-grid">
1111
1112          <a href="ft2-t1_cid_driver.html" title="The Type 1 and CID drivers" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
1113            <div class="md-flex__cell md-flex__cell--shrink">
1114              <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
1115            </div>
1116            <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
1117              <span class="md-flex__ellipsis">
1118                <span class="md-footer-nav__direction">
1119                  Previous
1120                </span>
1121                The Type 1 and CID drivers
1122              </span>
1123            </div>
1124          </a>
1125
1126
1127          <a href="ft2-pcf_driver.html" title="The PCF driver" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
1128            <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
1129              <span class="md-flex__ellipsis">
1130                <span class="md-footer-nav__direction">
1131                  Next
1132                </span>
1133                The PCF driver
1134              </span>
1135            </div>
1136            <div class="md-flex__cell md-flex__cell--shrink">
1137              <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
1138            </div>
1139          </a>
1140
1141      </nav>
1142    </div>
1143
1144  <div class="md-footer-meta md-typeset">
1145    <div class="md-footer-meta__inner md-grid">
1146      <div class="md-footer-copyright">
1147
1148          <div class="md-footer-copyright__highlight">
1149            Copyright 2020 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
1150          </div>
1151
1152        powered by
1153        <a href="https://www.mkdocs.org" target="_blank" rel="noopener">MkDocs</a>
1154        and
1155        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1156          Material for MkDocs</a>
1157      </div>
1158
1159    </div>
1160  </div>
1161</footer>
1162
1163    </div>
1164
1165      <script src="assets/javascripts/application.c33a9706.js"></script>
1166
1167      <script>app.initialize({version:"1.1",url:{base:"."}})</script>
1168
1169        <script src="javascripts/extra.js"></script>
1170
1171
1172  </body>
1173</html>