Imported Upstream version 2.10.4
[platform/upstream/freetype2.git] / docs / reference / ft2-lcd_rendering.html
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>