• 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>Subpixel Rendering - 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="#subpixel-rendering" 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                Subpixel Rendering
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  <li class="md-nav__item">
604    <a href="ft2-tt_driver.html" title="The TrueType driver" class="md-nav__link">
605      The TrueType driver
606    </a>
607  </li>
608
609
610
611
612
613
614
615  <li class="md-nav__item">
616    <a href="ft2-pcf_driver.html" title="The PCF driver" class="md-nav__link">
617      The PCF driver
618    </a>
619  </li>
620
621
622
623
624
625
626
627  <li class="md-nav__item">
628    <a href="ft2-properties.html" title="Driver properties" class="md-nav__link">
629      Driver properties
630    </a>
631  </li>
632
633
634
635
636
637
638
639  <li class="md-nav__item">
640    <a href="ft2-parameter_tags.html" title="Parameter Tags" class="md-nav__link">
641      Parameter Tags
642    </a>
643  </li>
644
645
646
647
648
649
650
651
652
653  <li class="md-nav__item md-nav__item--active">
654
655    <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
656
657
658
659
660      <label class="md-nav__link md-nav__link--active" for="__toc">
661        Subpixel Rendering
662      </label>
663
664    <a href="ft2-lcd_rendering.html" title="Subpixel Rendering" class="md-nav__link md-nav__link--active">
665      Subpixel Rendering
666    </a>
667
668
669<nav class="md-nav md-nav--secondary">
670
671
672
673
674
675    <label class="md-nav__title" for="__toc">Table of contents</label>
676    <ul class="md-nav__list" data-md-scrollfix>
677
678        <li class="md-nav__item">
679  <a href="#synopsis" class="md-nav__link">
680    Synopsis
681  </a>
682
683</li>
684
685        <li class="md-nav__item">
686  <a href="#ft_lcdfilter" class="md-nav__link">
687    FT_LcdFilter
688  </a>
689
690</li>
691
692        <li class="md-nav__item">
693  <a href="#ft_library_setlcdfilter" class="md-nav__link">
694    FT_Library_SetLcdFilter
695  </a>
696
697</li>
698
699        <li class="md-nav__item">
700  <a href="#ft_library_setlcdfilterweights" class="md-nav__link">
701    FT_Library_SetLcdFilterWeights
702  </a>
703
704</li>
705
706        <li class="md-nav__item">
707  <a href="#ft_lcdfivetapfilter" class="md-nav__link">
708    FT_LcdFiveTapFilter
709  </a>
710
711</li>
712
713        <li class="md-nav__item">
714  <a href="#ft_library_setlcdgeometry" class="md-nav__link">
715    FT_Library_SetLcdGeometry
716  </a>
717
718</li>
719
720
721
722
723
724    </ul>
725
726</nav>
727
728  </li>
729
730
731      </ul>
732    </nav>
733  </li>
734
735
736
737
738
739
740
741  <li class="md-nav__item md-nav__item--nested">
742
743      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
744
745    <label class="md-nav__link" for="nav-7">
746      Cache Sub-System
747    </label>
748    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
749      <label class="md-nav__title" for="nav-7">
750        Cache Sub-System
751      </label>
752      <ul class="md-nav__list" data-md-scrollfix>
753
754
755
756
757
758
759
760  <li class="md-nav__item">
761    <a href="ft2-cache_subsystem.html" title="Cache Sub-System" class="md-nav__link">
762      Cache Sub-System
763    </a>
764  </li>
765
766
767      </ul>
768    </nav>
769  </li>
770
771
772
773
774
775
776
777  <li class="md-nav__item md-nav__item--nested">
778
779      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
780
781    <label class="md-nav__link" for="nav-8">
782      Support API
783    </label>
784    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
785      <label class="md-nav__title" for="nav-8">
786        Support API
787      </label>
788      <ul class="md-nav__list" data-md-scrollfix>
789
790
791
792
793
794
795
796  <li class="md-nav__item">
797    <a href="ft2-computations.html" title="Computations" class="md-nav__link">
798      Computations
799    </a>
800  </li>
801
802
803
804
805
806
807
808  <li class="md-nav__item">
809    <a href="ft2-list_processing.html" title="List Processing" class="md-nav__link">
810      List Processing
811    </a>
812  </li>
813
814
815
816
817
818
819
820  <li class="md-nav__item">
821    <a href="ft2-outline_processing.html" title="Outline Processing" class="md-nav__link">
822      Outline Processing
823    </a>
824  </li>
825
826
827
828
829
830
831
832  <li class="md-nav__item">
833    <a href="ft2-quick_advance.html" title="Quick retrieval of advance values" class="md-nav__link">
834      Quick retrieval of advance values
835    </a>
836  </li>
837
838
839
840
841
842
843
844  <li class="md-nav__item">
845    <a href="ft2-bitmap_handling.html" title="Bitmap Handling" class="md-nav__link">
846      Bitmap Handling
847    </a>
848  </li>
849
850
851
852
853
854
855
856  <li class="md-nav__item">
857    <a href="ft2-raster.html" title="Scanline Converter" class="md-nav__link">
858      Scanline Converter
859    </a>
860  </li>
861
862
863
864
865
866
867
868  <li class="md-nav__item">
869    <a href="ft2-glyph_stroker.html" title="Glyph Stroker" class="md-nav__link">
870      Glyph Stroker
871    </a>
872  </li>
873
874
875
876
877
878
879
880  <li class="md-nav__item">
881    <a href="ft2-system_interface.html" title="System Interface" class="md-nav__link">
882      System Interface
883    </a>
884  </li>
885
886
887
888
889
890
891
892  <li class="md-nav__item">
893    <a href="ft2-module_management.html" title="Module Management" class="md-nav__link">
894      Module Management
895    </a>
896  </li>
897
898
899
900
901
902
903
904  <li class="md-nav__item">
905    <a href="ft2-gzip.html" title="GZIP Streams" class="md-nav__link">
906      GZIP Streams
907    </a>
908  </li>
909
910
911
912
913
914
915
916  <li class="md-nav__item">
917    <a href="ft2-lzw.html" title="LZW Streams" class="md-nav__link">
918      LZW Streams
919    </a>
920  </li>
921
922
923
924
925
926
927
928  <li class="md-nav__item">
929    <a href="ft2-bzip2.html" title="BZIP2 Streams" class="md-nav__link">
930      BZIP2 Streams
931    </a>
932  </li>
933
934
935      </ul>
936    </nav>
937  </li>
938
939
940
941
942
943
944
945  <li class="md-nav__item md-nav__item--nested">
946
947      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
948
949    <label class="md-nav__link" for="nav-9">
950      Error Codes
951    </label>
952    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
953      <label class="md-nav__title" for="nav-9">
954        Error Codes
955      </label>
956      <ul class="md-nav__list" data-md-scrollfix>
957
958
959
960
961
962
963
964  <li class="md-nav__item">
965    <a href="ft2-error_enumerations.html" title="Error Enumerations" class="md-nav__link">
966      Error Enumerations
967    </a>
968  </li>
969
970
971
972
973
974
975
976  <li class="md-nav__item">
977    <a href="ft2-error_code_values.html" title="Error Code Values" class="md-nav__link">
978      Error Code Values
979    </a>
980  </li>
981
982
983      </ul>
984    </nav>
985  </li>
986
987
988
989
990
991
992
993  <li class="md-nav__item md-nav__item--nested">
994
995      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
996
997    <label class="md-nav__link" for="nav-10">
998      Miscellaneous
999    </label>
1000    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
1001      <label class="md-nav__title" for="nav-10">
1002        Miscellaneous
1003      </label>
1004      <ul class="md-nav__list" data-md-scrollfix>
1005
1006
1007
1008
1009
1010
1011
1012  <li class="md-nav__item">
1013    <a href="ft2-gx_validation.html" title="TrueTypeGX/AAT Validation" class="md-nav__link">
1014      TrueTypeGX/AAT Validation
1015    </a>
1016  </li>
1017
1018
1019
1020
1021
1022
1023
1024  <li class="md-nav__item">
1025    <a href="ft2-incremental.html" title="Incremental Loading" class="md-nav__link">
1026      Incremental Loading
1027    </a>
1028  </li>
1029
1030
1031
1032
1033
1034
1035
1036  <li class="md-nav__item">
1037    <a href="ft2-truetype_engine.html" title="The TrueType Engine" class="md-nav__link">
1038      The TrueType Engine
1039    </a>
1040  </li>
1041
1042
1043
1044
1045
1046
1047
1048  <li class="md-nav__item">
1049    <a href="ft2-ot_validation.html" title="OpenType Validation" class="md-nav__link">
1050      OpenType Validation
1051    </a>
1052  </li>
1053
1054
1055      </ul>
1056    </nav>
1057  </li>
1058
1059
1060  </ul>
1061</nav>
1062                  </div>
1063                </div>
1064              </div>
1065
1066
1067              <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
1068                <div class="md-sidebar__scrollwrap">
1069                  <div class="md-sidebar__inner">
1070
1071<nav class="md-nav md-nav--secondary">
1072
1073
1074
1075
1076
1077    <label class="md-nav__title" for="__toc">Table of contents</label>
1078    <ul class="md-nav__list" data-md-scrollfix>
1079
1080        <li class="md-nav__item">
1081  <a href="#synopsis" class="md-nav__link">
1082    Synopsis
1083  </a>
1084
1085</li>
1086
1087        <li class="md-nav__item">
1088  <a href="#ft_lcdfilter" class="md-nav__link">
1089    FT_LcdFilter
1090  </a>
1091
1092</li>
1093
1094        <li class="md-nav__item">
1095  <a href="#ft_library_setlcdfilter" class="md-nav__link">
1096    FT_Library_SetLcdFilter
1097  </a>
1098
1099</li>
1100
1101        <li class="md-nav__item">
1102  <a href="#ft_library_setlcdfilterweights" class="md-nav__link">
1103    FT_Library_SetLcdFilterWeights
1104  </a>
1105
1106</li>
1107
1108        <li class="md-nav__item">
1109  <a href="#ft_lcdfivetapfilter" class="md-nav__link">
1110    FT_LcdFiveTapFilter
1111  </a>
1112
1113</li>
1114
1115        <li class="md-nav__item">
1116  <a href="#ft_library_setlcdgeometry" class="md-nav__link">
1117    FT_Library_SetLcdGeometry
1118  </a>
1119
1120</li>
1121
1122
1123
1124
1125
1126    </ul>
1127
1128</nav>
1129                  </div>
1130                </div>
1131              </div>
1132
1133
1134          <div class="md-content">
1135            <article class="md-content__inner md-typeset">
1136
1137
1138
1139                <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; Subpixel Rendering</p>
1140<hr />
1141<h1 id="subpixel-rendering">Subpixel Rendering<a class="headerlink" href="#subpixel-rendering" title="Permanent link">&para;</a></h1>
1142<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1143<p>FreeType provides two alternative subpixel rendering technologies. Should you define <code>FT_CONFIG_OPTION_SUBPIXEL_RENDERING</code> in your <code>ftoption.h</code> file, this enables ClearType-style rendering. Otherwise, Harmony LCD rendering is enabled. These technologies are controlled differently and API described below, although always available, performs its function when appropriate method is enabled and does nothing otherwise.</p>
1144<p>ClearType-style LCD rendering exploits the color-striped structure of LCD pixels, increasing the available resolution in the direction of the stripe (usually horizontal RGB) by a factor of&nbsp;3. Using the subpixels coverages unfiltered can create severe color fringes especially when rendering thin features. Indeed, to produce black-on-white text, the nearby color subpixels must be dimmed equally.</p>
1145<p>A good 5-tap FIR filter should be applied to subpixel coverages regardless of pixel boundaries and should have these properties:</p>
1146<ol>
1147<li>
1148<p>It should be symmetrical, like {&nbsp;a, b, c, b, a&nbsp;}, to avoid any shifts in appearance.</p>
1149</li>
1150<li>
1151<p>It should be color-balanced, meaning a&nbsp;+ b&nbsp;=&nbsp;c, to reduce color fringes by distributing the computed coverage for one subpixel to all subpixels equally.</p>
1152</li>
1153<li>
1154<p>It should be normalized, meaning 2a&nbsp;+ 2b&nbsp;+ c&nbsp;=&nbsp;1.0 to maintain overall brightness.</p>
1155</li>
1156</ol>
1157<p>Boxy 3-tap filter {0, &#8531;, &#8531;, &#8531;, 0} is sharper but is less forgiving of non-ideal gamma curves of a screen (and viewing angles), beveled filters are fuzzier but more tolerant.</p>
1158<p>Use the <code><a href="ft2-lcd_rendering.html#ft_library_setlcdfilter">FT_Library_SetLcdFilter</a></code> or <code><a href="ft2-lcd_rendering.html#ft_library_setlcdfilterweights">FT_Library_SetLcdFilterWeights</a></code> API to specify a low-pass filter, which is then applied to subpixel-rendered bitmaps generated through <code><a href="ft2-base_interface.html#ft_render_glyph">FT_Render_Glyph</a></code>.</p>
1159<p>Harmony LCD rendering is suitable to panels with any regular subpixel structure, not just monitors with 3 color striped subpixels, as long as the color subpixels have fixed positions relative to the pixel center. In this case, each color channel is then rendered separately after shifting the outline opposite to the subpixel shift so that the coverage maps are aligned. This method is immune to color fringes because the shifts do not change integral coverage.</p>
1160<p>The subpixel geometry must be specified by xy-coordinates for each subpixel. By convention they may come in the RGB order: {{-&#8531;, 0}, {0, 0}, {&#8531;, 0}} for standard RGB striped panel or {{-&#8537;, &frac14;}, {-&#8537;, -&frac14;}, {&#8531;, 0}} for a certain PenTile panel.</p>
1161<p>Use the <code><a href="ft2-lcd_rendering.html#ft_library_setlcdgeometry">FT_Library_SetLcdGeometry</a></code> API to specify subpixel positions. If one follows the RGB order convention, the same order applies to the resulting <code><a href="ft2-basic_types.html#ft_pixel_mode">FT_PIXEL_MODE_LCD</a></code> and <code><a href="ft2-basic_types.html#ft_pixel_mode">FT_PIXEL_MODE_LCD_V</a></code> bitmaps. Note, however, that the coordinate frame for the latter must be rotated clockwise. Harmony with default LCD geometry is equivalent to ClearType with light filter.</p>
1162<p>As a result of ClearType filtering or Harmony rendering, the dimensions of LCD bitmaps can be either wider or taller than the dimensions of the corresponding outline with regard to the pixel grid. For example, for <code><a href="ft2-base_interface.html#ft_render_mode">FT_RENDER_MODE_LCD</a></code>, the filter adds 2&nbsp;subpixels to the left, and 2&nbsp;subpixels to the right. The bitmap offset values are adjusted accordingly, so clients shouldn't need to modify their layout and glyph positioning code when enabling the filter.</p>
1163<p>The ClearType and Harmony rendering is applicable to glyph bitmaps rendered through <code><a href="ft2-base_interface.html#ft_render_glyph">FT_Render_Glyph</a></code>, <code><a href="ft2-base_interface.html#ft_load_glyph">FT_Load_Glyph</a></code>, <code><a href="ft2-base_interface.html#ft_load_char">FT_Load_Char</a></code>, and <code><a href="ft2-glyph_management.html#ft_glyph_to_bitmap">FT_Glyph_To_Bitmap</a></code>, when <code><a href="ft2-base_interface.html#ft_render_mode">FT_RENDER_MODE_LCD</a></code> or <code><a href="ft2-base_interface.html#ft_render_mode">FT_RENDER_MODE_LCD_V</a></code> is specified. This API does not control <code><a href="ft2-outline_processing.html#ft_outline_render">FT_Outline_Render</a></code> and <code><a href="ft2-outline_processing.html#ft_outline_get_bitmap">FT_Outline_Get_Bitmap</a></code>.</p>
1164<p>The described algorithms can completely remove color artefacts when combined with gamma-corrected alpha blending in linear space. Each of the 3&nbsp;alpha values (subpixels) must by independently used to blend one color channel. That is, red alpha blends the red channel of the text color with the red channel of the background pixel.</p>
1165<h2 id="ft_lcdfilter">FT_LcdFilter<a class="headerlink" href="#ft_lcdfilter" title="Permanent link">&para;</a></h2>
1166<p>Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h).</p>
1167<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">enum</span>  FT_LcdFilter_
1168  {
1169    <a href="ft2-lcd_rendering.html#ft_lcd_filter_none">FT_LCD_FILTER_NONE</a>    = 0,
1170    <a href="ft2-lcd_rendering.html#ft_lcd_filter_default">FT_LCD_FILTER_DEFAULT</a> = 1,
1171    <a href="ft2-lcd_rendering.html#ft_lcd_filter_light">FT_LCD_FILTER_LIGHT</a>   = 2,
1172    <a href="ft2-lcd_rendering.html#ft_lcd_filter_legacy1">FT_LCD_FILTER_LEGACY1</a> = 3,
1173    <a href="ft2-lcd_rendering.html#ft_lcd_filter_legacy">FT_LCD_FILTER_LEGACY</a>  = 16,
1174
1175    FT_LCD_FILTER_MAX   /* do not remove */
1176
1177  } <b>FT_LcdFilter</b>;
1178</code></pre></div>
1179
1180<p>A list of values to identify various types of LCD filters.</p>
1181<h4>values</h4>
1182
1183<table class="fields">
1184<tr><td class="val" id="ft_lcd_filter_none">FT_LCD_FILTER_NONE</td><td class="desc">
1185<p>Do not perform filtering. When used with subpixel rendering, this results in sometimes severe color fringes.</p>
1186</td></tr>
1187<tr><td class="val" id="ft_lcd_filter_default">FT_LCD_FILTER_DEFAULT</td><td class="desc">
1188<p>This is a beveled, normalized, and color-balanced five-tap filter with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256th units.</p>
1189</td></tr>
1190<tr><td class="val" id="ft_lcd_filter_light">FT_LCD_FILTER_LIGHT</td><td class="desc">
1191<p>this is a boxy, normalized, and color-balanced three-tap filter with weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units.</p>
1192</td></tr>
1193<tr><td class="val" id="ft_lcd_filter_legacy">FT_LCD_FILTER_LEGACY</td><td class="desc">
1194
1195</td></tr>
1196<tr><td class="val" id="ft_lcd_filter_legacy1">FT_LCD_FILTER_LEGACY1</td><td class="desc">
1197<p>This filter corresponds to the original libXft color filter. It provides high contrast output but can exhibit really bad color fringes if glyphs are not extremely well hinted to the pixel grid. This filter is only provided for comparison purposes, and might be disabled or stay unsupported in the future. The second value is provided for compatibility with FontConfig, which historically used different enumeration, sometimes incorrectly forwarded to FreeType.</p>
1198</td></tr>
1199</table>
1200
1201<h4>since</h4>
1202
1203<p>2.3.0 (<code>FT_LCD_FILTER_LEGACY1</code> since 2.6.2)</p>
1204<hr>
1205
1206<h2 id="ft_library_setlcdfilter">FT_Library_SetLcdFilter<a class="headerlink" href="#ft_library_setlcdfilter" title="Permanent link">&para;</a></h2>
1207<p>Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h).</p>
1208<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1209  <b>FT_Library_SetLcdFilter</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a>    library,
1210                           <a href="ft2-lcd_rendering.html#ft_lcdfilter">FT_LcdFilter</a>  filter );
1211</code></pre></div>
1212
1213<p>This function is used to change filter applied to LCD decimated bitmaps, like the ones used when calling <code><a href="ft2-base_interface.html#ft_render_glyph">FT_Render_Glyph</a></code> with <code><a href="ft2-base_interface.html#ft_render_mode">FT_RENDER_MODE_LCD</a></code> or <code><a href="ft2-base_interface.html#ft_render_mode">FT_RENDER_MODE_LCD_V</a></code>.</p>
1214<h4>input</h4>
1215
1216<table class="fields">
1217<tr><td class="val" id="library">library</td><td class="desc">
1218<p>A handle to the target library instance.</p>
1219</td></tr>
1220<tr><td class="val" id="filter">filter</td><td class="desc">
1221<p>The filter type.</p>
1222<p>You can use <code><a href="ft2-lcd_rendering.html#ft_lcdfilter">FT_LCD_FILTER_NONE</a></code> here to disable this feature, or <code><a href="ft2-lcd_rendering.html#ft_lcdfilter">FT_LCD_FILTER_DEFAULT</a></code> to use a default filter that should work well on most LCD screens.</p>
1223</td></tr>
1224</table>
1225
1226<h4>return</h4>
1227
1228<p>FreeType error code. 0&nbsp;means success.</p>
1229<h4>note</h4>
1230
1231<p>Since 2.10.3 the LCD filtering is enabled with <code><a href="ft2-lcd_rendering.html#ft_lcdfilter">FT_LCD_FILTER_DEFAULT</a></code>. It is no longer necessary to call this function explicitly except to choose a different filter or disable filtering altogether with <code><a href="ft2-lcd_rendering.html#ft_lcdfilter">FT_LCD_FILTER_NONE</a></code>.</p>
1232<p>This function does nothing but returns <code>FT_Err_Unimplemented_Feature</code> if the configuration macro <code>FT_CONFIG_OPTION_SUBPIXEL_RENDERING</code> is not defined in your build of the library.</p>
1233<h4>since</h4>
1234
1235<p>2.3.0</p>
1236<hr>
1237
1238<h2 id="ft_library_setlcdfilterweights">FT_Library_SetLcdFilterWeights<a class="headerlink" href="#ft_library_setlcdfilterweights" title="Permanent link">&para;</a></h2>
1239<p>Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h).</p>
1240<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1241  <b>FT_Library_SetLcdFilterWeights</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a>      library,
1242                                  <span class="keyword">unsigned</span> <span class="keyword">char</span>  *weights );
1243</code></pre></div>
1244
1245<p>This function can be used to enable LCD filter with custom weights, instead of using presets in <code><a href="ft2-lcd_rendering.html#ft_library_setlcdfilter">FT_Library_SetLcdFilter</a></code>.</p>
1246<h4>input</h4>
1247
1248<table class="fields">
1249<tr><td class="val" id="library">library</td><td class="desc">
1250<p>A handle to the target library instance.</p>
1251</td></tr>
1252<tr><td class="val" id="weights">weights</td><td class="desc">
1253<p>A pointer to an array; the function copies the first five bytes and uses them to specify the filter weights in 1/256th units.</p>
1254</td></tr>
1255</table>
1256
1257<h4>return</h4>
1258
1259<p>FreeType error code. 0&nbsp;means success.</p>
1260<h4>note</h4>
1261
1262<p>This function does nothing but returns <code>FT_Err_Unimplemented_Feature</code> if the configuration macro <code>FT_CONFIG_OPTION_SUBPIXEL_RENDERING</code> is not defined in your build of the library.</p>
1263<p>LCD filter weights can also be set per face using <code><a href="ft2-base_interface.html#ft_face_properties">FT_Face_Properties</a></code> with <code><a href="ft2-parameter_tags.html#ft_param_tag_lcd_filter_weights">FT_PARAM_TAG_LCD_FILTER_WEIGHTS</a></code>.</p>
1264<h4>since</h4>
1265
1266<p>2.4.0</p>
1267<hr>
1268
1269<h2 id="ft_lcdfivetapfilter">FT_LcdFiveTapFilter<a class="headerlink" href="#ft_lcdfivetapfilter" title="Permanent link">&para;</a></h2>
1270<p>Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h).</p>
1271<div class = "codehilite"><pre><code>#<span class="keyword">define</span> FT_LCD_FILTER_FIVE_TAPS  5
1272
1273  <span class="keyword">typedef</span> <a href="ft2-basic_types.html#ft_byte">FT_Byte</a>  <b>FT_LcdFiveTapFilter</b>[FT_LCD_FILTER_FIVE_TAPS];
1274</code></pre></div>
1275
1276<p>A typedef for passing the five LCD filter weights to <code><a href="ft2-base_interface.html#ft_face_properties">FT_Face_Properties</a></code> within an <code><a href="ft2-base_interface.html#ft_parameter">FT_Parameter</a></code> structure.</p>
1277<h4>since</h4>
1278
1279<p>2.8</p>
1280<hr>
1281
1282<h2 id="ft_library_setlcdgeometry">FT_Library_SetLcdGeometry<a class="headerlink" href="#ft_library_setlcdgeometry" title="Permanent link">&para;</a></h2>
1283<p>Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h).</p>
1284<div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1285  <b>FT_Library_SetLcdGeometry</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a>  library,
1286                             <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>   sub[3] );
1287</code></pre></div>
1288
1289<p>This function can be used to modify default positions of color subpixels, which controls Harmony LCD rendering.</p>
1290<h4>input</h4>
1291
1292<table class="fields">
1293<tr><td class="val" id="library">library</td><td class="desc">
1294<p>A handle to the target library instance.</p>
1295</td></tr>
1296<tr><td class="val" id="sub">sub</td><td class="desc">
1297<p>A pointer to an array of 3 vectors in 26.6 fractional pixel format; the function modifies the default values, see the note below.</p>
1298</td></tr>
1299</table>
1300
1301<h4>return</h4>
1302
1303<p>FreeType error code. 0&nbsp;means success.</p>
1304<h4>note</h4>
1305
1306<p>Subpixel geometry examples:</p>
1307<ul>
1308<li>
1309<p>{{-21, 0}, {0, 0}, {21, 0}} is the default, corresponding to 3 color stripes shifted by a third of a pixel. This could be an RGB panel.</p>
1310</li>
1311<li>
1312<p>{{21, 0}, {0, 0}, {-21, 0}} looks the same as the default but can specify a BGR panel instead, while keeping the bitmap in the same RGB888 format.</p>
1313</li>
1314<li>
1315<p>{{0, 21}, {0, 0}, {0, -21}} is the vertical RGB, but the bitmap stays RGB888 as a result.</p>
1316</li>
1317<li>
1318<p>{{-11, 16}, {-11, -16}, {22, 0}} is a certain PenTile arrangement.</p>
1319</li>
1320</ul>
1321<p>This function does nothing and returns <code>FT_Err_Unimplemented_Feature</code> in the context of ClearType-style subpixel rendering when <code>FT_CONFIG_OPTION_SUBPIXEL_RENDERING</code> is defined in your build of the library.</p>
1322<h4>since</h4>
1323
1324<p>2.10.0</p>
1325<hr>
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336            </article>
1337          </div>
1338        </div>
1339      </main>
1340
1341
1342<footer class="md-footer">
1343
1344    <div class="md-footer-nav">
1345      <nav class="md-footer-nav__inner md-grid">
1346
1347          <a href="ft2-parameter_tags.html" title="Parameter Tags" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
1348            <div class="md-flex__cell md-flex__cell--shrink">
1349              <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
1350            </div>
1351            <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
1352              <span class="md-flex__ellipsis">
1353                <span class="md-footer-nav__direction">
1354                  Previous
1355                </span>
1356                Parameter Tags
1357              </span>
1358            </div>
1359          </a>
1360
1361
1362          <a href="ft2-cache_subsystem.html" title="Cache Sub-System" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
1363            <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
1364              <span class="md-flex__ellipsis">
1365                <span class="md-footer-nav__direction">
1366                  Next
1367                </span>
1368                Cache Sub-System
1369              </span>
1370            </div>
1371            <div class="md-flex__cell md-flex__cell--shrink">
1372              <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
1373            </div>
1374          </a>
1375
1376      </nav>
1377    </div>
1378
1379  <div class="md-footer-meta md-typeset">
1380    <div class="md-footer-meta__inner md-grid">
1381      <div class="md-footer-copyright">
1382
1383          <div class="md-footer-copyright__highlight">
1384            Copyright 2020 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
1385          </div>
1386
1387        powered by
1388        <a href="https://www.mkdocs.org" target="_blank" rel="noopener">MkDocs</a>
1389        and
1390        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1391          Material for MkDocs</a>
1392      </div>
1393
1394    </div>
1395  </div>
1396</footer>
1397
1398    </div>
1399
1400      <script src="assets/javascripts/application.c33a9706.js"></script>
1401
1402      <script>app.initialize({version:"1.1",url:{base:"."}})</script>
1403
1404        <script src="javascripts/extra.js"></script>
1405
1406
1407  </body>
1408</html>