3 <html lang="en" class="no-js">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
9 <meta name="description" content="API Reference Documentation for FreeType-2.13.2">
13 <meta name="author" content="FreeType Contributors">
16 <link rel="icon" href="images/favico.ico">
17 <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-7.1.9">
21 <title>Glyph Layer Management - FreeType-2.13.2 API Reference</title>
25 <link rel="stylesheet" href="assets/stylesheets/main.ca7ac06f.min.css">
28 <link rel="stylesheet" href="assets/stylesheets/palette.f1a3b89f.min.css">
32 <meta name="theme-color" content="#4cae4f">
40 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
41 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback">
42 <style>:root{--md-text-font-family:"Noto Serif";--md-code-font-family:"Roboto Mono"}</style>
47 <link rel="stylesheet" href="stylesheets/extra.css">
63 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="green" data-md-color-accent="green">
66 <script>function __prefix(e){return new URL(".",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
68 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
69 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
70 <label class="md-overlay" for="__drawer"></label>
71 <div data-md-component="skip">
74 <a href="#glyph-layer-management" class="md-skip">
79 <div data-md-component="announce">
83 <header class="md-header" data-md-component="header">
84 <nav class="md-header__inner md-grid" aria-label="Header">
85 <a href="index.html" title="FreeType-2.13.2 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.13.2 API Reference" data-md-component="logo">
87 <img src="images/favico.ico" alt="logo">
90 <label class="md-header__button md-icon" for="__drawer">
91 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
93 <div class="md-header__title" data-md-component="header-title">
94 <div class="md-header__ellipsis">
95 <div class="md-header__topic">
96 <span class="md-ellipsis">
97 FreeType-2.13.2 API Reference
100 <div class="md-header__topic" data-md-component="header-topic">
101 <span class="md-ellipsis">
103 Glyph Layer Management
112 <label class="md-header__button md-icon" for="__search">
113 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
116 <div class="md-search" data-md-component="search" role="dialog">
117 <label class="md-search__overlay" for="__search"></label>
118 <div class="md-search__inner" role="search">
119 <form class="md-search__form" name="search">
120 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
121 <label class="md-search__icon md-icon" for="__search">
122 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
123 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
125 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
126 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
129 <div class="md-search__output">
130 <div class="md-search__scrollwrap" data-md-scrollfix>
131 <div class="md-search-result" data-md-component="search-result">
132 <div class="md-search-result__meta">
135 <ol class="md-search-result__list"></ol>
146 <div class="md-container" data-md-component="container">
151 <main class="md-main" data-md-component="main">
152 <div class="md-main__inner md-grid">
156 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
157 <div class="md-sidebar__scrollwrap">
158 <div class="md-sidebar__inner">
162 <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
163 <label class="md-nav__title" for="__drawer">
164 <a href="index.html" title="FreeType-2.13.2 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.13.2 API Reference" data-md-component="logo">
166 <img src="images/favico.ico" alt="logo">
169 FreeType-2.13.2 API Reference
172 <ul class="md-nav__list" data-md-scrollfix>
181 <li class="md-nav__item">
182 <a href="index.html" class="md-nav__link">
196 <li class="md-nav__item">
197 <a href="ft2-index.html" class="md-nav__link">
212 <li class="md-nav__item md-nav__item--nested">
215 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
217 <label class="md-nav__link" for="__nav_3">
219 <span class="md-nav__icon md-icon"></span>
221 <nav class="md-nav" aria-label="General Remarks" data-md-level="1">
222 <label class="md-nav__title" for="__nav_3">
223 <span class="md-nav__icon md-icon"></span>
226 <ul class="md-nav__list" data-md-scrollfix>
232 <li class="md-nav__item">
233 <a href="ft2-preamble.html" class="md-nav__link">
244 <li class="md-nav__item">
245 <a href="ft2-header_inclusion.html" class="md-nav__link">
246 FreeType's header inclusion scheme
256 <li class="md-nav__item">
257 <a href="ft2-user_allocation.html" class="md-nav__link">
278 <li class="md-nav__item md-nav__item--nested">
281 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
283 <label class="md-nav__link" for="__nav_4">
285 <span class="md-nav__icon md-icon"></span>
287 <nav class="md-nav" aria-label="Core API" data-md-level="1">
288 <label class="md-nav__title" for="__nav_4">
289 <span class="md-nav__icon md-icon"></span>
292 <ul class="md-nav__list" data-md-scrollfix>
298 <li class="md-nav__item">
299 <a href="ft2-basic_types.html" class="md-nav__link">
310 <li class="md-nav__item">
311 <a href="ft2-library_setup.html" class="md-nav__link">
322 <li class="md-nav__item">
323 <a href="ft2-face_creation.html" class="md-nav__link">
334 <li class="md-nav__item">
335 <a href="ft2-font_testing_macros.html" class="md-nav__link">
346 <li class="md-nav__item">
347 <a href="ft2-sizing_and_scaling.html" class="md-nav__link">
358 <li class="md-nav__item">
359 <a href="ft2-glyph_retrieval.html" class="md-nav__link">
370 <li class="md-nav__item">
371 <a href="ft2-character_mapping.html" class="md-nav__link">
382 <li class="md-nav__item">
383 <a href="ft2-information_retrieval.html" class="md-nav__link">
384 Information Retrieval
394 <li class="md-nav__item">
395 <a href="ft2-other_api_data.html" class="md-nav__link">
418 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
421 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked>
423 <label class="md-nav__link" for="__nav_5">
425 <span class="md-nav__icon md-icon"></span>
427 <nav class="md-nav" aria-label="Extended API" data-md-level="1">
428 <label class="md-nav__title" for="__nav_5">
429 <span class="md-nav__icon md-icon"></span>
432 <ul class="md-nav__list" data-md-scrollfix>
438 <li class="md-nav__item">
439 <a href="ft2-glyph_variants.html" class="md-nav__link">
440 Unicode Variation Sequences
450 <li class="md-nav__item">
451 <a href="ft2-color_management.html" class="md-nav__link">
452 Glyph Color Management
464 <li class="md-nav__item md-nav__item--active">
466 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
472 <label class="md-nav__link md-nav__link--active" for="__toc">
473 Glyph Layer Management
474 <span class="md-nav__icon md-icon"></span>
477 <a href="ft2-layer_management.html" class="md-nav__link md-nav__link--active">
478 Glyph Layer Management
482 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
489 <label class="md-nav__title" for="__toc">
490 <span class="md-nav__icon md-icon"></span>
493 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
495 <li class="md-nav__item">
496 <a href="#synopsis" class="md-nav__link">
502 <li class="md-nav__item">
503 <a href="#ft_layeriterator" class="md-nav__link">
509 <li class="md-nav__item">
510 <a href="#ft_get_color_glyph_layer" class="md-nav__link">
511 FT_Get_Color_Glyph_Layer
516 <li class="md-nav__item">
517 <a href="#ft_paintformat" class="md-nav__link">
523 <li class="md-nav__item">
524 <a href="#ft_colorstopiterator" class="md-nav__link">
530 <li class="md-nav__item">
531 <a href="#ft_colorindex" class="md-nav__link">
537 <li class="md-nav__item">
538 <a href="#ft_colorstop" class="md-nav__link">
544 <li class="md-nav__item">
545 <a href="#ft_paintextend" class="md-nav__link">
551 <li class="md-nav__item">
552 <a href="#ft_colorline" class="md-nav__link">
558 <li class="md-nav__item">
559 <a href="#ft_affine23" class="md-nav__link">
565 <li class="md-nav__item">
566 <a href="#ft_composite_mode" class="md-nav__link">
572 <li class="md-nav__item">
573 <a href="#ft_opaquepaint" class="md-nav__link">
579 <li class="md-nav__item">
580 <a href="#ft_paintcolrlayers" class="md-nav__link">
586 <li class="md-nav__item">
587 <a href="#ft_paintsolid" class="md-nav__link">
593 <li class="md-nav__item">
594 <a href="#ft_paintlineargradient" class="md-nav__link">
595 FT_PaintLinearGradient
600 <li class="md-nav__item">
601 <a href="#ft_paintradialgradient" class="md-nav__link">
602 FT_PaintRadialGradient
607 <li class="md-nav__item">
608 <a href="#ft_paintsweepgradient" class="md-nav__link">
609 FT_PaintSweepGradient
614 <li class="md-nav__item">
615 <a href="#ft_paintglyph" class="md-nav__link">
621 <li class="md-nav__item">
622 <a href="#ft_paintcolrglyph" class="md-nav__link">
628 <li class="md-nav__item">
629 <a href="#ft_painttransform" class="md-nav__link">
635 <li class="md-nav__item">
636 <a href="#ft_painttranslate" class="md-nav__link">
642 <li class="md-nav__item">
643 <a href="#ft_paintscale" class="md-nav__link">
649 <li class="md-nav__item">
650 <a href="#ft_paintrotate" class="md-nav__link">
656 <li class="md-nav__item">
657 <a href="#ft_paintskew" class="md-nav__link">
663 <li class="md-nav__item">
664 <a href="#ft_paintcomposite" class="md-nav__link">
670 <li class="md-nav__item">
671 <a href="#ft_colr_paint" class="md-nav__link">
677 <li class="md-nav__item">
678 <a href="#ft_color_root_transform" class="md-nav__link">
679 FT_Color_Root_Transform
684 <li class="md-nav__item">
685 <a href="#ft_clipbox" class="md-nav__link">
691 <li class="md-nav__item">
692 <a href="#ft_get_color_glyph_paint" class="md-nav__link">
693 FT_Get_Color_Glyph_Paint
698 <li class="md-nav__item">
699 <a href="#ft_get_color_glyph_clipbox" class="md-nav__link">
700 FT_Get_Color_Glyph_ClipBox
705 <li class="md-nav__item">
706 <a href="#ft_get_paint_layers" class="md-nav__link">
712 <li class="md-nav__item">
713 <a href="#ft_get_colorline_stops" class="md-nav__link">
714 FT_Get_Colorline_Stops
719 <li class="md-nav__item">
720 <a href="#ft_get_paint" class="md-nav__link">
738 <li class="md-nav__item">
739 <a href="ft2-glyph_management.html" class="md-nav__link">
750 <li class="md-nav__item">
751 <a href="ft2-mac_specific.html" class="md-nav__link">
752 Mac Specific Interface
762 <li class="md-nav__item">
763 <a href="ft2-sizes_management.html" class="md-nav__link">
774 <li class="md-nav__item">
775 <a href="ft2-header_file_macros.html" class="md-nav__link">
796 <li class="md-nav__item md-nav__item--nested">
799 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
801 <label class="md-nav__link" for="__nav_6">
803 <span class="md-nav__icon md-icon"></span>
805 <nav class="md-nav" aria-label="Format-Specific API" data-md-level="1">
806 <label class="md-nav__title" for="__nav_6">
807 <span class="md-nav__icon md-icon"></span>
810 <ul class="md-nav__list" data-md-scrollfix>
816 <li class="md-nav__item">
817 <a href="ft2-multiple_masters.html" class="md-nav__link">
828 <li class="md-nav__item">
829 <a href="ft2-truetype_tables.html" class="md-nav__link">
840 <li class="md-nav__item">
841 <a href="ft2-type1_tables.html" class="md-nav__link">
852 <li class="md-nav__item">
853 <a href="ft2-sfnt_names.html" class="md-nav__link">
864 <li class="md-nav__item">
865 <a href="ft2-bdf_fonts.html" class="md-nav__link">
876 <li class="md-nav__item">
877 <a href="ft2-cid_fonts.html" class="md-nav__link">
888 <li class="md-nav__item">
889 <a href="ft2-pfr_fonts.html" class="md-nav__link">
900 <li class="md-nav__item">
901 <a href="ft2-winfnt_fonts.html" class="md-nav__link">
912 <li class="md-nav__item">
913 <a href="ft2-svg_fonts.html" class="md-nav__link">
924 <li class="md-nav__item">
925 <a href="ft2-font_formats.html" class="md-nav__link">
936 <li class="md-nav__item">
937 <a href="ft2-gasp_table.html" class="md-nav__link">
958 <li class="md-nav__item md-nav__item--nested">
961 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
963 <label class="md-nav__link" for="__nav_7">
964 Controlling FreeType Modules
965 <span class="md-nav__icon md-icon"></span>
967 <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1">
968 <label class="md-nav__title" for="__nav_7">
969 <span class="md-nav__icon md-icon"></span>
970 Controlling FreeType Modules
972 <ul class="md-nav__list" data-md-scrollfix>
978 <li class="md-nav__item">
979 <a href="ft2-auto_hinter.html" class="md-nav__link">
990 <li class="md-nav__item">
991 <a href="ft2-cff_driver.html" class="md-nav__link">
1002 <li class="md-nav__item">
1003 <a href="ft2-t1_cid_driver.html" class="md-nav__link">
1004 The Type 1 and CID drivers
1014 <li class="md-nav__item">
1015 <a href="ft2-tt_driver.html" class="md-nav__link">
1026 <li class="md-nav__item">
1027 <a href="ft2-pcf_driver.html" class="md-nav__link">
1038 <li class="md-nav__item">
1039 <a href="ft2-ot_svg_driver.html" class="md-nav__link">
1050 <li class="md-nav__item">
1051 <a href="ft2-properties.html" class="md-nav__link">
1062 <li class="md-nav__item">
1063 <a href="ft2-parameter_tags.html" class="md-nav__link">
1074 <li class="md-nav__item">
1075 <a href="ft2-lcd_rendering.html" class="md-nav__link">
1096 <li class="md-nav__item md-nav__item--nested">
1099 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
1101 <label class="md-nav__link" for="__nav_8">
1103 <span class="md-nav__icon md-icon"></span>
1105 <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1">
1106 <label class="md-nav__title" for="__nav_8">
1107 <span class="md-nav__icon md-icon"></span>
1110 <ul class="md-nav__list" data-md-scrollfix>
1116 <li class="md-nav__item">
1117 <a href="ft2-cache_subsystem.html" class="md-nav__link">
1138 <li class="md-nav__item md-nav__item--nested">
1141 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
1143 <label class="md-nav__link" for="__nav_9">
1145 <span class="md-nav__icon md-icon"></span>
1147 <nav class="md-nav" aria-label="Support API" data-md-level="1">
1148 <label class="md-nav__title" for="__nav_9">
1149 <span class="md-nav__icon md-icon"></span>
1152 <ul class="md-nav__list" data-md-scrollfix>
1158 <li class="md-nav__item">
1159 <a href="ft2-computations.html" class="md-nav__link">
1170 <li class="md-nav__item">
1171 <a href="ft2-list_processing.html" class="md-nav__link">
1182 <li class="md-nav__item">
1183 <a href="ft2-outline_processing.html" class="md-nav__link">
1194 <li class="md-nav__item">
1195 <a href="ft2-quick_advance.html" class="md-nav__link">
1196 Quick retrieval of advance values
1206 <li class="md-nav__item">
1207 <a href="ft2-bitmap_handling.html" class="md-nav__link">
1218 <li class="md-nav__item">
1219 <a href="ft2-raster.html" class="md-nav__link">
1230 <li class="md-nav__item">
1231 <a href="ft2-glyph_stroker.html" class="md-nav__link">
1242 <li class="md-nav__item">
1243 <a href="ft2-system_interface.html" class="md-nav__link">
1254 <li class="md-nav__item">
1255 <a href="ft2-module_management.html" class="md-nav__link">
1266 <li class="md-nav__item">
1267 <a href="ft2-gzip.html" class="md-nav__link">
1278 <li class="md-nav__item">
1279 <a href="ft2-lzw.html" class="md-nav__link">
1290 <li class="md-nav__item">
1291 <a href="ft2-bzip2.html" class="md-nav__link">
1302 <li class="md-nav__item">
1303 <a href="ft2-debugging_apis.html" class="md-nav__link">
1304 External Debugging APIs
1324 <li class="md-nav__item md-nav__item--nested">
1327 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
1329 <label class="md-nav__link" for="__nav_10">
1331 <span class="md-nav__icon md-icon"></span>
1333 <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
1334 <label class="md-nav__title" for="__nav_10">
1335 <span class="md-nav__icon md-icon"></span>
1338 <ul class="md-nav__list" data-md-scrollfix>
1344 <li class="md-nav__item">
1345 <a href="ft2-error_enumerations.html" class="md-nav__link">
1356 <li class="md-nav__item">
1357 <a href="ft2-error_code_values.html" class="md-nav__link">
1378 <li class="md-nav__item md-nav__item--nested">
1381 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_11" type="checkbox" id="__nav_11" >
1383 <label class="md-nav__link" for="__nav_11">
1385 <span class="md-nav__icon md-icon"></span>
1387 <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
1388 <label class="md-nav__title" for="__nav_11">
1389 <span class="md-nav__icon md-icon"></span>
1392 <ul class="md-nav__list" data-md-scrollfix>
1398 <li class="md-nav__item">
1399 <a href="ft2-gx_validation.html" class="md-nav__link">
1400 TrueTypeGX/AAT Validation
1410 <li class="md-nav__item">
1411 <a href="ft2-incremental.html" class="md-nav__link">
1422 <li class="md-nav__item">
1423 <a href="ft2-truetype_engine.html" class="md-nav__link">
1434 <li class="md-nav__item">
1435 <a href="ft2-ot_validation.html" class="md-nav__link">
1456 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1457 <div class="md-sidebar__scrollwrap">
1458 <div class="md-sidebar__inner">
1460 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1467 <label class="md-nav__title" for="__toc">
1468 <span class="md-nav__icon md-icon"></span>
1471 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1473 <li class="md-nav__item">
1474 <a href="#synopsis" class="md-nav__link">
1480 <li class="md-nav__item">
1481 <a href="#ft_layeriterator" class="md-nav__link">
1487 <li class="md-nav__item">
1488 <a href="#ft_get_color_glyph_layer" class="md-nav__link">
1489 FT_Get_Color_Glyph_Layer
1494 <li class="md-nav__item">
1495 <a href="#ft_paintformat" class="md-nav__link">
1501 <li class="md-nav__item">
1502 <a href="#ft_colorstopiterator" class="md-nav__link">
1503 FT_ColorStopIterator
1508 <li class="md-nav__item">
1509 <a href="#ft_colorindex" class="md-nav__link">
1515 <li class="md-nav__item">
1516 <a href="#ft_colorstop" class="md-nav__link">
1522 <li class="md-nav__item">
1523 <a href="#ft_paintextend" class="md-nav__link">
1529 <li class="md-nav__item">
1530 <a href="#ft_colorline" class="md-nav__link">
1536 <li class="md-nav__item">
1537 <a href="#ft_affine23" class="md-nav__link">
1543 <li class="md-nav__item">
1544 <a href="#ft_composite_mode" class="md-nav__link">
1550 <li class="md-nav__item">
1551 <a href="#ft_opaquepaint" class="md-nav__link">
1557 <li class="md-nav__item">
1558 <a href="#ft_paintcolrlayers" class="md-nav__link">
1564 <li class="md-nav__item">
1565 <a href="#ft_paintsolid" class="md-nav__link">
1571 <li class="md-nav__item">
1572 <a href="#ft_paintlineargradient" class="md-nav__link">
1573 FT_PaintLinearGradient
1578 <li class="md-nav__item">
1579 <a href="#ft_paintradialgradient" class="md-nav__link">
1580 FT_PaintRadialGradient
1585 <li class="md-nav__item">
1586 <a href="#ft_paintsweepgradient" class="md-nav__link">
1587 FT_PaintSweepGradient
1592 <li class="md-nav__item">
1593 <a href="#ft_paintglyph" class="md-nav__link">
1599 <li class="md-nav__item">
1600 <a href="#ft_paintcolrglyph" class="md-nav__link">
1606 <li class="md-nav__item">
1607 <a href="#ft_painttransform" class="md-nav__link">
1613 <li class="md-nav__item">
1614 <a href="#ft_painttranslate" class="md-nav__link">
1620 <li class="md-nav__item">
1621 <a href="#ft_paintscale" class="md-nav__link">
1627 <li class="md-nav__item">
1628 <a href="#ft_paintrotate" class="md-nav__link">
1634 <li class="md-nav__item">
1635 <a href="#ft_paintskew" class="md-nav__link">
1641 <li class="md-nav__item">
1642 <a href="#ft_paintcomposite" class="md-nav__link">
1648 <li class="md-nav__item">
1649 <a href="#ft_colr_paint" class="md-nav__link">
1655 <li class="md-nav__item">
1656 <a href="#ft_color_root_transform" class="md-nav__link">
1657 FT_Color_Root_Transform
1662 <li class="md-nav__item">
1663 <a href="#ft_clipbox" class="md-nav__link">
1669 <li class="md-nav__item">
1670 <a href="#ft_get_color_glyph_paint" class="md-nav__link">
1671 FT_Get_Color_Glyph_Paint
1676 <li class="md-nav__item">
1677 <a href="#ft_get_color_glyph_clipbox" class="md-nav__link">
1678 FT_Get_Color_Glyph_ClipBox
1683 <li class="md-nav__item">
1684 <a href="#ft_get_paint_layers" class="md-nav__link">
1690 <li class="md-nav__item">
1691 <a href="#ft_get_colorline_stops" class="md-nav__link">
1692 FT_Get_Colorline_Stops
1697 <li class="md-nav__item">
1698 <a href="#ft_get_paint" class="md-nav__link">
1712 <div class="md-content" data-md-component="content">
1713 <article class="md-content__inner md-typeset">
1717 <p><a href="https://www.freetype.org">FreeType</a> » <a href="../">Docs</a> » <a href="index.html#extended-api">Extended API</a> » Glyph Layer Management</p>
1719 <h1 id="glyph-layer-management">Glyph Layer Management<a class="headerlink" href="#glyph-layer-management" title="Permanent link">¶</a></h1>
1720 <h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">¶</a></h2>
1721 <p>The functions described here allow access of colored glyph layer data in OpenType's ‘COLR’ tables.</p>
1722 <h2 id="ft_layeriterator">FT_LayerIterator<a class="headerlink" href="#ft_layeriterator" title="Permanent link">¶</a></h2>
1723 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1724 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_LayerIterator_
1726 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> num_layers;
1727 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> layer;
1728 <a href="ft2-basic_types.html#ft_byte">FT_Byte</a>* p;
1730 } <b>FT_LayerIterator</b>;
1733 <p>This iterator object is needed for <code><a href="ft2-layer_management.html#ft_get_color_glyph_layer">FT_Get_Color_Glyph_Layer</a></code>.</p>
1735 <table class="fields">
1736 <tr><td class="val" id="num_layers">num_layers</td><td class="desc">
1737 <p>The number of glyph layers for the requested glyph index. Will be set by <code><a href="ft2-layer_management.html#ft_get_color_glyph_layer">FT_Get_Color_Glyph_Layer</a></code>.</p>
1739 <tr><td class="val" id="layer">layer</td><td class="desc">
1740 <p>The current layer. Will be set by <code><a href="ft2-layer_management.html#ft_get_color_glyph_layer">FT_Get_Color_Glyph_Layer</a></code>.</p>
1742 <tr><td class="val" id="p">p</td><td class="desc">
1743 <p>An opaque pointer into ‘COLR’ table data. The caller must set this to <code>NULL</code> before the first call of <code><a href="ft2-layer_management.html#ft_get_color_glyph_layer">FT_Get_Color_Glyph_Layer</a></code>.</p>
1749 <h2 id="ft_get_color_glyph_layer">FT_Get_Color_Glyph_Layer<a class="headerlink" href="#ft_get_color_glyph_layer" title="Permanent link">¶</a></h2>
1750 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1751 <div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> )
1752 <b>FT_Get_Color_Glyph_Layer</b>( <a href="ft2-face_creation.html#ft_face">FT_Face</a> face,
1753 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> base_glyph,
1754 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> *aglyph_index,
1755 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> *acolor_index,
1756 <a href="ft2-layer_management.html#ft_layeriterator">FT_LayerIterator</a>* iterator );
1759 <p>This is an interface to the ‘COLR’ table in OpenType fonts to iteratively retrieve the colored glyph layers associated with the current glyph slot.</p>
1760 <p><a href="https://docs.microsoft.com/en-us/typography/opentype/spec/colr">https://docs.microsoft.com/en-us/typography/opentype/spec/colr</a></p>
1761 <p>The glyph layer data for a given glyph index, if present, provides an alternative, multi-color glyph representation: Instead of rendering the outline or bitmap with the given glyph index, glyphs with the indices and colors returned by this function are rendered layer by layer.</p>
1762 <p>The returned elements are ordered in the z direction from bottom to top; the 'n'th element should be rendered with the associated palette color and blended on top of the already rendered layers (elements 0, 1, …, n-1).</p>
1764 <table class="fields">
1765 <tr><td class="val" id="face">face</td><td class="desc">
1766 <p>A handle to the parent face object.</p>
1768 <tr><td class="val" id="base_glyph">base_glyph</td><td class="desc">
1769 <p>The glyph index the colored glyph layers are associated with.</p>
1774 <table class="fields">
1775 <tr><td class="val" id="iterator">iterator</td><td class="desc">
1776 <p>An <code><a href="ft2-layer_management.html#ft_layeriterator">FT_LayerIterator</a></code> object. For the first call you should set <code>iterator->p</code> to <code>NULL</code>. For all following calls, simply use the same object again.</p>
1781 <table class="fields">
1782 <tr><td class="val" id="aglyph_index">aglyph_index</td><td class="desc">
1783 <p>The glyph index of the current layer.</p>
1785 <tr><td class="val" id="acolor_index">acolor_index</td><td class="desc">
1786 <p>The color index into the font face's color palette of the current layer. The value 0xFFFF is special; it doesn't reference a palette entry but indicates that the text foreground color should be used instead (to be set up by the application outside of FreeType).</p>
1787 <p>The color palette can be retrieved with <code><a href="ft2-color_management.html#ft_palette_select">FT_Palette_Select</a></code>.</p>
1793 <p>Value 1 if everything is OK. If there are no more layers (or if there are no layers at all), value 0 gets returned. In case of an error, value 0 is returned also.</p>
1796 <p>This function is necessary if you want to handle glyph layers by yourself. In particular, functions that operate with <code><a href="ft2-glyph_management.html#ft_glyphrec">FT_GlyphRec</a></code> objects (like <code><a href="ft2-glyph_management.html#ft_get_glyph">FT_Get_Glyph</a></code> or <code><a href="ft2-glyph_management.html#ft_glyph_to_bitmap">FT_Glyph_To_Bitmap</a></code>) don't have access to this information.</p>
1797 <p>Note that <code><a href="ft2-glyph_retrieval.html#ft_render_glyph">FT_Render_Glyph</a></code> is able to handle colored glyph layers automatically if the <code><a href="ft2-glyph_retrieval.html#ft_load_xxx">FT_LOAD_COLOR</a></code> flag is passed to a previous call to <code><a href="ft2-glyph_retrieval.html#ft_load_glyph">FT_Load_Glyph</a></code>. [This is an experimental feature.]</p>
1799 <div class="highlight"><pre><span></span><code> FT_Color* palette;
1800 FT_LayerIterator iterator;
1802 FT_Bool have_layers;
1803 FT_UInt layer_glyph_index;
1804 FT_UInt layer_color_index;
1807 error = FT_Palette_Select( face, palette_index, &palette );
1812 have_layers = FT_Get_Color_Glyph_Layer( face,
1814 &layer_glyph_index,
1815 &layer_color_index,
1818 if ( palette && have_layers )
1822 FT_Color layer_color;
1825 if ( layer_color_index == 0xFFFF )
1826 layer_color = text_foreground_color;
1828 layer_color = palette[layer_color_index];
1830 // Load and render glyph `layer_glyph_index', then
1831 // blend resulting pixmap (using color `layer_color')
1832 // with previously created pixmaps.
1834 } while ( FT_Get_Color_Glyph_Layer( face,
1836 &layer_glyph_index,
1837 &layer_color_index,
1846 <h2 id="ft_paintformat">FT_PaintFormat<a class="headerlink" href="#ft_paintformat" title="Permanent link">¶</a></h2>
1847 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1848 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">enum</span> FT_PaintFormat_
1850 FT_COLR_PAINTFORMAT_COLR_LAYERS = 1,
1851 FT_COLR_PAINTFORMAT_SOLID = 2,
1852 FT_COLR_PAINTFORMAT_LINEAR_GRADIENT = 4,
1853 FT_COLR_PAINTFORMAT_RADIAL_GRADIENT = 6,
1854 FT_COLR_PAINTFORMAT_SWEEP_GRADIENT = 8,
1855 FT_COLR_PAINTFORMAT_GLYPH = 10,
1856 FT_COLR_PAINTFORMAT_COLR_GLYPH = 11,
1857 FT_COLR_PAINTFORMAT_TRANSFORM = 12,
1858 FT_COLR_PAINTFORMAT_TRANSLATE = 14,
1859 FT_COLR_PAINTFORMAT_SCALE = 16,
1860 FT_COLR_PAINTFORMAT_ROTATE = 24,
1861 FT_COLR_PAINTFORMAT_SKEW = 28,
1862 FT_COLR_PAINTFORMAT_COMPOSITE = 32,
1863 FT_COLR_PAINT_FORMAT_MAX = 33,
1864 FT_COLR_PAINTFORMAT_UNSUPPORTED = 255
1866 } <b>FT_PaintFormat</b>;
1869 <p>Enumeration describing the different paint format types of the v1 extensions to the ‘COLR’ table, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’.</p>
1870 <p>The enumeration values loosely correspond with the format numbers of the specification: FreeType always returns a fully specified ‘Paint’ structure for the ‘Transform’, ‘Translate’, ‘Scale’, ‘Rotate’, and ‘Skew’ table types even though the specification has different formats depending on whether or not a center is specified, whether the scale is uniform in x and y direction or not, etc. Also, only non-variable format identifiers are listed in this enumeration; as soon as support for variable ‘COLR’ v1 fonts is implemented, interpolation is performed dependent on axis coordinates, which are configured on the <code><a href="ft2-face_creation.html#ft_face">FT_Face</a></code> through <code><a href="ft2-multiple_masters.html#ft_set_var_design_coordinates">FT_Set_Var_Design_Coordinates</a></code>. This implies that always static, readily interpolated values are returned in the ‘Paint’ structures.</p>
1876 <h2 id="ft_colorstopiterator">FT_ColorStopIterator<a class="headerlink" href="#ft_colorstopiterator" title="Permanent link">¶</a></h2>
1877 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1878 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ColorStopIterator_
1880 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> num_color_stops;
1881 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> current_color_stop;
1883 <a href="ft2-basic_types.html#ft_byte">FT_Byte</a>* p;
1885 <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> read_variable;
1887 } <b>FT_ColorStopIterator</b>;
1890 <p>This iterator object is needed for <code><a href="ft2-layer_management.html#ft_get_colorline_stops">FT_Get_Colorline_Stops</a></code>. It keeps state while iterating over the stops of an <code><a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a></code>, representing the <code>ColorLine</code> struct of the v1 extensions to ‘COLR’, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. Do not manually modify fields of this iterator.</p>
1892 <table class="fields">
1893 <tr><td class="val" id="num_color_stops">num_color_stops</td><td class="desc">
1894 <p>The number of color stops for the requested glyph index. Set by <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code>.</p>
1896 <tr><td class="val" id="current_color_stop">current_color_stop</td><td class="desc">
1897 <p>The current color stop. Set by <code><a href="ft2-layer_management.html#ft_get_colorline_stops">FT_Get_Colorline_Stops</a></code>.</p>
1899 <tr><td class="val" id="p">p</td><td class="desc">
1900 <p>An opaque pointer into ‘COLR’ table data. Set by <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code>. Updated by <code><a href="ft2-layer_management.html#ft_get_colorline_stops">FT_Get_Colorline_Stops</a></code>.</p>
1902 <tr><td class="val" id="read_variable">read_variable</td><td class="desc">
1903 <p>A boolean keeping track of whether variable color lines are to be read. Set by <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code>.</p>
1912 <h2 id="ft_colorindex">FT_ColorIndex<a class="headerlink" href="#ft_colorindex" title="Permanent link">¶</a></h2>
1913 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1914 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ColorIndex_
1916 <a href="ft2-basic_types.html#ft_uint16">FT_UInt16</a> palette_index;
1917 <a href="ft2-basic_types.html#ft_f2dot14">FT_F2Dot14</a> alpha;
1919 } <b>FT_ColorIndex</b>;
1922 <p>A structure representing a <code>ColorIndex</code> value of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’.</p>
1924 <table class="fields">
1925 <tr><td class="val" id="palette_index">palette_index</td><td class="desc">
1926 <p>The palette index into a ‘CPAL’ palette.</p>
1928 <tr><td class="val" id="alpha">alpha</td><td class="desc">
1929 <p>Alpha transparency value multiplied with the value from ‘CPAL’.</p>
1938 <h2 id="ft_colorstop">FT_ColorStop<a class="headerlink" href="#ft_colorstop" title="Permanent link">¶</a></h2>
1939 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1940 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ColorStop_
1942 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> stop_offset;
1943 <a href="ft2-layer_management.html#ft_colorindex">FT_ColorIndex</a> color;
1945 } <b>FT_ColorStop</b>;
1948 <p>A structure representing a <code>ColorStop</code> value of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’.</p>
1950 <table class="fields">
1951 <tr><td class="val" id="stop_offset">stop_offset</td><td class="desc">
1952 <p>The stop offset along the gradient, expressed as a 16.16 fixed-point coordinate.</p>
1954 <tr><td class="val" id="color">color</td><td class="desc">
1955 <p>The color information for this stop, see <code><a href="ft2-layer_management.html#ft_colorindex">FT_ColorIndex</a></code>.</p>
1964 <h2 id="ft_paintextend">FT_PaintExtend<a class="headerlink" href="#ft_paintextend" title="Permanent link">¶</a></h2>
1965 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1966 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">enum</span> FT_PaintExtend_
1968 FT_COLR_PAINT_EXTEND_PAD = 0,
1969 FT_COLR_PAINT_EXTEND_REPEAT = 1,
1970 FT_COLR_PAINT_EXTEND_REFLECT = 2
1972 } <b>FT_PaintExtend</b>;
1975 <p>An enumeration representing the ‘Extend’ mode of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. It describes how the gradient fill continues at the other boundaries.</p>
1981 <h2 id="ft_colorline">FT_ColorLine<a class="headerlink" href="#ft_colorline" title="Permanent link">¶</a></h2>
1982 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
1983 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ColorLine_
1985 <a href="ft2-layer_management.html#ft_paintextend">FT_PaintExtend</a> extend;
1986 <a href="ft2-layer_management.html#ft_colorstopiterator">FT_ColorStopIterator</a> color_stop_iterator;
1988 } <b>FT_ColorLine</b>;
1991 <p>A structure representing a <code>ColorLine</code> value of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. It describes a list of color stops along the defined gradient.</p>
1993 <table class="fields">
1994 <tr><td class="val" id="extend">extend</td><td class="desc">
1995 <p>The extend mode at the outer boundaries, see <code><a href="ft2-layer_management.html#ft_paintextend">FT_PaintExtend</a></code>.</p>
1997 <tr><td class="val" id="color_stop_iterator">color_stop_iterator</td><td class="desc">
1998 <p>The <code><a href="ft2-layer_management.html#ft_colorstopiterator">FT_ColorStopIterator</a></code> used to enumerate and retrieve the actual <code><a href="ft2-layer_management.html#ft_colorstop">FT_ColorStop</a></code>'s.</p>
2007 <h2 id="ft_affine23">FT_Affine23<a class="headerlink" href="#ft_affine23" title="Permanent link">¶</a></h2>
2008 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2009 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Affine_23_
2011 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> xx, xy, dx;
2012 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> yx, yy, dy;
2014 } <b>FT_Affine23</b>;
2017 <p>A structure used to store a 2x3 matrix. Coefficients are in 16.16 fixed-point format. The computation performed is
2018 <div class="highlight"><pre><span></span><code> x' = x*xx + y*xy + dx
2019 y' = x*yx + y*yy + dy
2020 </code></pre></div></p>
2022 <table class="fields">
2023 <tr><td class="val" id="xx">xx</td><td class="desc">
2024 <p>Matrix coefficient.</p>
2026 <tr><td class="val" id="xy">xy</td><td class="desc">
2027 <p>Matrix coefficient.</p>
2029 <tr><td class="val" id="dx">dx</td><td class="desc">
2030 <p>x translation.</p>
2032 <tr><td class="val" id="yx">yx</td><td class="desc">
2033 <p>Matrix coefficient.</p>
2035 <tr><td class="val" id="yy">yy</td><td class="desc">
2036 <p>Matrix coefficient.</p>
2038 <tr><td class="val" id="dy">dy</td><td class="desc">
2039 <p>y translation.</p>
2048 <h2 id="ft_composite_mode">FT_Composite_Mode<a class="headerlink" href="#ft_composite_mode" title="Permanent link">¶</a></h2>
2049 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2050 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">enum</span> FT_Composite_Mode_
2052 FT_COLR_COMPOSITE_CLEAR = 0,
2053 FT_COLR_COMPOSITE_SRC = 1,
2054 FT_COLR_COMPOSITE_DEST = 2,
2055 FT_COLR_COMPOSITE_SRC_OVER = 3,
2056 FT_COLR_COMPOSITE_DEST_OVER = 4,
2057 FT_COLR_COMPOSITE_SRC_IN = 5,
2058 FT_COLR_COMPOSITE_DEST_IN = 6,
2059 FT_COLR_COMPOSITE_SRC_OUT = 7,
2060 FT_COLR_COMPOSITE_DEST_OUT = 8,
2061 FT_COLR_COMPOSITE_SRC_ATOP = 9,
2062 FT_COLR_COMPOSITE_DEST_ATOP = 10,
2063 FT_COLR_COMPOSITE_XOR = 11,
2064 FT_COLR_COMPOSITE_PLUS = 12,
2065 FT_COLR_COMPOSITE_SCREEN = 13,
2066 FT_COLR_COMPOSITE_OVERLAY = 14,
2067 FT_COLR_COMPOSITE_DARKEN = 15,
2068 FT_COLR_COMPOSITE_LIGHTEN = 16,
2069 FT_COLR_COMPOSITE_COLOR_DODGE = 17,
2070 FT_COLR_COMPOSITE_COLOR_BURN = 18,
2071 FT_COLR_COMPOSITE_HARD_LIGHT = 19,
2072 FT_COLR_COMPOSITE_SOFT_LIGHT = 20,
2073 FT_COLR_COMPOSITE_DIFFERENCE = 21,
2074 FT_COLR_COMPOSITE_EXCLUSION = 22,
2075 FT_COLR_COMPOSITE_MULTIPLY = 23,
2076 FT_COLR_COMPOSITE_HSL_HUE = 24,
2077 FT_COLR_COMPOSITE_HSL_SATURATION = 25,
2078 FT_COLR_COMPOSITE_HSL_COLOR = 26,
2079 FT_COLR_COMPOSITE_HSL_LUMINOSITY = 27,
2080 FT_COLR_COMPOSITE_MAX = 28
2082 } <b>FT_Composite_Mode</b>;
2085 <p>An enumeration listing the ‘COLR’ v1 composite modes used in <code><a href="ft2-layer_management.html#ft_paintcomposite">FT_PaintComposite</a></code>. For more details on each paint mode, see ‘<a href="https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators">https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators</a>’.</p>
2091 <h2 id="ft_opaquepaint">FT_OpaquePaint<a class="headerlink" href="#ft_opaquepaint" title="Permanent link">¶</a></h2>
2092 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2093 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Opaque_Paint_
2095 <a href="ft2-basic_types.html#ft_byte">FT_Byte</a>* p;
2096 <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> insert_root_transform;
2097 } <b>FT_OpaquePaint</b>;
2100 <p>A structure representing an offset to a <code>Paint</code> value stored in any of the paint tables of a ‘COLR’ v1 font. Compare Offset<24> there. When ‘COLR’ v1 paint tables represented by FreeType objects such as <code><a href="ft2-layer_management.html#ft_paintcolrlayers">FT_PaintColrLayers</a></code>, <code><a href="ft2-layer_management.html#ft_paintcomposite">FT_PaintComposite</a></code>, or <code><a href="ft2-layer_management.html#ft_painttransform">FT_PaintTransform</a></code> reference downstream nested paint tables, we do not immediately retrieve them but encapsulate their location in this type. Use <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code> to retrieve the actual <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> object that describes the details of the respective paint table.</p>
2102 <table class="fields">
2103 <tr><td class="val" id="p">p</td><td class="desc">
2104 <p>An internal offset to a Paint table, needs to be set to NULL before passing this struct as an argument to <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code>.</p>
2106 <tr><td class="val" id="insert_root_transform">insert_root_transform</td><td class="desc">
2107 <p>An internal boolean to track whether an initial root transform is to be provided. Do not set this value.</p>
2116 <h2 id="ft_paintcolrlayers">FT_PaintColrLayers<a class="headerlink" href="#ft_paintcolrlayers" title="Permanent link">¶</a></h2>
2117 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2118 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintColrLayers_
2120 <a href="ft2-layer_management.html#ft_layeriterator">FT_LayerIterator</a> layer_iterator;
2122 } <b>FT_PaintColrLayers</b>;
2125 <p>A structure representing a <code>PaintColrLayers</code> table of a ‘COLR’ v1 font. This table describes a set of layers that are to be composited with composite mode <code>FT_COLR_COMPOSITE_SRC_OVER</code>. The return value of this function is an <code><a href="ft2-layer_management.html#ft_layeriterator">FT_LayerIterator</a></code> initialized so that it can be used with <code><a href="ft2-layer_management.html#ft_get_paint_layers">FT_Get_Paint_Layers</a></code> to retrieve the <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> objects as references to each layer.</p>
2127 <table class="fields">
2128 <tr><td class="val" id="layer_iterator">layer_iterator</td><td class="desc">
2129 <p>The layer iterator that describes the layers of this paint.</p>
2138 <h2 id="ft_paintsolid">FT_PaintSolid<a class="headerlink" href="#ft_paintsolid" title="Permanent link">¶</a></h2>
2139 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2140 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintSolid_
2142 <a href="ft2-layer_management.html#ft_colorindex">FT_ColorIndex</a> color;
2144 } <b>FT_PaintSolid</b>;
2147 <p>A structure representing a <code>PaintSolid</code> value of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. Using a <code>PaintSolid</code> value means that the glyph layer filled with this paint is solid-colored and does not contain a gradient.</p>
2149 <table class="fields">
2150 <tr><td class="val" id="color">color</td><td class="desc">
2151 <p>The color information for this solid paint, see <code><a href="ft2-layer_management.html#ft_colorindex">FT_ColorIndex</a></code>.</p>
2160 <h2 id="ft_paintlineargradient">FT_PaintLinearGradient<a class="headerlink" href="#ft_paintlineargradient" title="Permanent link">¶</a></h2>
2161 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2162 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintLinearGradient_
2164 <a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a> colorline;
2166 /* TODO: Potentially expose those as x0, y0 etc. */
2167 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> p0;
2168 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> p1;
2169 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> p2;
2171 } <b>FT_PaintLinearGradient</b>;
2174 <p>A structure representing a <code>PaintLinearGradient</code> value of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. The glyph layer filled with this paint is drawn filled with a linear gradient.</p>
2176 <table class="fields">
2177 <tr><td class="val" id="colorline">colorline</td><td class="desc">
2178 <p>The <code><a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a></code> information for this paint, i.e., the list of color stops along the gradient.</p>
2180 <tr><td class="val" id="p0">p0</td><td class="desc">
2181 <p>The starting point of the gradient definition in font units represented as a 16.16 fixed-point <code>FT_Vector</code>.</p>
2183 <tr><td class="val" id="p1">p1</td><td class="desc">
2184 <p>The end point of the gradient definition in font units represented as a 16.16 fixed-point <code>FT_Vector</code>.</p>
2186 <tr><td class="val" id="p2">p2</td><td class="desc">
2187 <p>Optional point p2 to rotate the gradient in font units represented as a 16.16 fixed-point <code>FT_Vector</code>. Otherwise equal to p0.</p>
2196 <h2 id="ft_paintradialgradient">FT_PaintRadialGradient<a class="headerlink" href="#ft_paintradialgradient" title="Permanent link">¶</a></h2>
2197 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2198 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintRadialGradient_
2200 <a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a> colorline;
2202 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> c0;
2203 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> r0;
2204 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> c1;
2205 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> r1;
2207 } <b>FT_PaintRadialGradient</b>;
2210 <p>A structure representing a <code>PaintRadialGradient</code> value of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. The glyph layer filled with this paint is drawn filled with a radial gradient.</p>
2212 <table class="fields">
2213 <tr><td class="val" id="colorline">colorline</td><td class="desc">
2214 <p>The <code><a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a></code> information for this paint, i.e., the list of color stops along the gradient.</p>
2216 <tr><td class="val" id="c0">c0</td><td class="desc">
2217 <p>The center of the starting point of the radial gradient in font units represented as a 16.16 fixed-point <code>FT_Vector</code>.</p>
2219 <tr><td class="val" id="r0">r0</td><td class="desc">
2220 <p>The radius of the starting circle of the radial gradient in font units represented as a 16.16 fixed-point value.</p>
2222 <tr><td class="val" id="c1">c1</td><td class="desc">
2223 <p>The center of the end point of the radial gradient in font units represented as a 16.16 fixed-point <code>FT_Vector</code>.</p>
2225 <tr><td class="val" id="r1">r1</td><td class="desc">
2226 <p>The radius of the end circle of the radial gradient in font units represented as a 16.16 fixed-point value.</p>
2235 <h2 id="ft_paintsweepgradient">FT_PaintSweepGradient<a class="headerlink" href="#ft_paintsweepgradient" title="Permanent link">¶</a></h2>
2236 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2237 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintSweepGradient_
2239 <a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a> colorline;
2241 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> center;
2242 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> start_angle;
2243 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> end_angle;
2245 } <b>FT_PaintSweepGradient</b>;
2248 <p>A structure representing a <code>PaintSweepGradient</code> value of the ‘COLR’ v1 extensions, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. The glyph layer filled with this paint is drawn filled with a sweep gradient from <code>start_angle</code> to <code>end_angle</code>.</p>
2250 <table class="fields">
2251 <tr><td class="val" id="colorline">colorline</td><td class="desc">
2252 <p>The <code><a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a></code> information for this paint, i.e., the list of color stops along the gradient.</p>
2254 <tr><td class="val" id="center">center</td><td class="desc">
2255 <p>The center of the sweep gradient in font units represented as a vector of 16.16 fixed-point values.</p>
2257 <tr><td class="val" id="start_angle">start_angle</td><td class="desc">
2258 <p>The start angle of the sweep gradient in 16.16 fixed-point format specifying degrees divided by 180.0 (as in the spec). Multiply by 180.0f to receive degrees value. Values are given counter-clockwise, starting from the (positive) y axis.</p>
2260 <tr><td class="val" id="end_angle">end_angle</td><td class="desc">
2261 <p>The end angle of the sweep gradient in 16.16 fixed-point format specifying degrees divided by 180.0 (as in the spec). Multiply by 180.0f to receive degrees value. Values are given counter-clockwise, starting from the (positive) y axis.</p>
2270 <h2 id="ft_paintglyph">FT_PaintGlyph<a class="headerlink" href="#ft_paintglyph" title="Permanent link">¶</a></h2>
2271 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2272 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintGlyph_
2274 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> paint;
2275 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> glyphID;
2277 } <b>FT_PaintGlyph</b>;
2280 <p>A structure representing a ‘COLR’ v1 <code>PaintGlyph</code> paint table.</p>
2282 <table class="fields">
2283 <tr><td class="val" id="paint">paint</td><td class="desc">
2284 <p>An opaque paint object pointing to a <code>Paint</code> table that serves as the fill for the glyph ID.</p>
2286 <tr><td class="val" id="glyphid">glyphID</td><td class="desc">
2287 <p>The glyph ID from the ‘glyf’ table, which serves as the contour information that is filled with paint.</p>
2296 <h2 id="ft_paintcolrglyph">FT_PaintColrGlyph<a class="headerlink" href="#ft_paintcolrglyph" title="Permanent link">¶</a></h2>
2297 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2298 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintColrGlyph_
2300 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> glyphID;
2302 } <b>FT_PaintColrGlyph</b>;
2305 <p>A structure representing a ‘COLR’ v1 <code>PaintColorGlyph</code> paint table.</p>
2307 <table class="fields">
2308 <tr><td class="val" id="glyphid">glyphID</td><td class="desc">
2309 <p>The glyph ID from the <code>BaseGlyphV1List</code> table that is drawn for this paint.</p>
2318 <h2 id="ft_painttransform">FT_PaintTransform<a class="headerlink" href="#ft_painttransform" title="Permanent link">¶</a></h2>
2319 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2320 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintTransform_
2322 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> paint;
2323 <a href="ft2-layer_management.html#ft_affine23">FT_Affine23</a> affine;
2325 } <b>FT_PaintTransform</b>;
2328 <p>A structure representing a ‘COLR’ v1 <code>PaintTransform</code> paint table.</p>
2330 <table class="fields">
2331 <tr><td class="val" id="paint">paint</td><td class="desc">
2332 <p>An opaque paint that is subject to being transformed.</p>
2334 <tr><td class="val" id="affine">affine</td><td class="desc">
2335 <p>A 2x3 transformation matrix in <code><a href="ft2-layer_management.html#ft_affine23">FT_Affine23</a></code> format containing 16.16 fixed-point values.</p>
2344 <h2 id="ft_painttranslate">FT_PaintTranslate<a class="headerlink" href="#ft_painttranslate" title="Permanent link">¶</a></h2>
2345 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2346 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintTranslate_
2348 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> paint;
2350 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> dx;
2351 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> dy;
2353 } <b>FT_PaintTranslate</b>;
2356 <p>A structure representing a ‘COLR’ v1 <code>PaintTranslate</code> paint table. Used for translating downstream paints by a given x and y delta.</p>
2358 <table class="fields">
2359 <tr><td class="val" id="paint">paint</td><td class="desc">
2360 <p>An <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object referencing the paint that is to be rotated.</p>
2362 <tr><td class="val" id="dx">dx</td><td class="desc">
2363 <p>Translation in x direction in font units represented as a 16.16 fixed-point value.</p>
2365 <tr><td class="val" id="dy">dy</td><td class="desc">
2366 <p>Translation in y direction in font units represented as a 16.16 fixed-point value.</p>
2375 <h2 id="ft_paintscale">FT_PaintScale<a class="headerlink" href="#ft_paintscale" title="Permanent link">¶</a></h2>
2376 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2377 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintScale_
2379 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> paint;
2381 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> scale_x;
2382 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> scale_y;
2384 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> center_x;
2385 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> center_y;
2387 } <b>FT_PaintScale</b>;
2390 <p>A structure representing all of the ‘COLR’ v1 ‘PaintScale*’ paint tables. Used for scaling downstream paints by a given x and y scale, with a given center. This structure is used for all ‘PaintScale*’ types that are part of specification; fields of this structure are filled accordingly. If there is a center, the center values are set, otherwise they are set to the zero coordinate. If the source font file has ‘PaintScaleUniform*’ set, the scale values are set accordingly to the same value.</p>
2392 <table class="fields">
2393 <tr><td class="val" id="paint">paint</td><td class="desc">
2394 <p>An <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object referencing the paint that is to be scaled.</p>
2396 <tr><td class="val" id="scale_x">scale_x</td><td class="desc">
2397 <p>Scale factor in x direction represented as a 16.16 fixed-point value.</p>
2399 <tr><td class="val" id="scale_y">scale_y</td><td class="desc">
2400 <p>Scale factor in y direction represented as a 16.16 fixed-point value.</p>
2402 <tr><td class="val" id="center_x">center_x</td><td class="desc">
2403 <p>x coordinate of center point to scale from represented as a 16.16 fixed-point value.</p>
2405 <tr><td class="val" id="center_y">center_y</td><td class="desc">
2406 <p>y coordinate of center point to scale from represented as a 16.16 fixed-point value.</p>
2415 <h2 id="ft_paintrotate">FT_PaintRotate<a class="headerlink" href="#ft_paintrotate" title="Permanent link">¶</a></h2>
2416 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2417 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintRotate_
2419 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> paint;
2421 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> angle;
2423 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> center_x;
2424 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> center_y;
2426 } <b>FT_PaintRotate</b>;
2429 <p>A structure representing a ‘COLR’ v1 <code>PaintRotate</code> paint table. Used for rotating downstream paints with a given center and angle.</p>
2431 <table class="fields">
2432 <tr><td class="val" id="paint">paint</td><td class="desc">
2433 <p>An <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object referencing the paint that is to be rotated.</p>
2435 <tr><td class="val" id="angle">angle</td><td class="desc">
2436 <p>The rotation angle that is to be applied in degrees divided by 180.0 (as in the spec) represented as a 16.16 fixed-point value. Multiply by 180.0f to receive degrees value.</p>
2438 <tr><td class="val" id="center_x">center_x</td><td class="desc">
2439 <p>The x coordinate of the pivot point of the rotation in font units represented as a 16.16 fixed-point value.</p>
2441 <tr><td class="val" id="center_y">center_y</td><td class="desc">
2442 <p>The y coordinate of the pivot point of the rotation in font units represented as a 16.16 fixed-point value.</p>
2451 <h2 id="ft_paintskew">FT_PaintSkew<a class="headerlink" href="#ft_paintskew" title="Permanent link">¶</a></h2>
2452 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2453 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintSkew_
2455 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> paint;
2457 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> x_skew_angle;
2458 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> y_skew_angle;
2460 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> center_x;
2461 <a href="ft2-basic_types.html#ft_fixed">FT_Fixed</a> center_y;
2463 } <b>FT_PaintSkew</b>;
2466 <p>A structure representing a ‘COLR’ v1 <code>PaintSkew</code> paint table. Used for skewing or shearing downstream paints by a given center and angle.</p>
2468 <table class="fields">
2469 <tr><td class="val" id="paint">paint</td><td class="desc">
2470 <p>An <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object referencing the paint that is to be skewed.</p>
2472 <tr><td class="val" id="x_skew_angle">x_skew_angle</td><td class="desc">
2473 <p>The skewing angle in x direction in degrees divided by 180.0 (as in the spec) represented as a 16.16 fixed-point value. Multiply by 180.0f to receive degrees.</p>
2475 <tr><td class="val" id="y_skew_angle">y_skew_angle</td><td class="desc">
2476 <p>The skewing angle in y direction in degrees divided by 180.0 (as in the spec) represented as a 16.16 fixed-point value. Multiply by 180.0f to receive degrees.</p>
2478 <tr><td class="val" id="center_x">center_x</td><td class="desc">
2479 <p>The x coordinate of the pivot point of the skew in font units represented as a 16.16 fixed-point value.</p>
2481 <tr><td class="val" id="center_y">center_y</td><td class="desc">
2482 <p>The y coordinate of the pivot point of the skew in font units represented as a 16.16 fixed-point value.</p>
2491 <h2 id="ft_paintcomposite">FT_PaintComposite<a class="headerlink" href="#ft_paintcomposite" title="Permanent link">¶</a></h2>
2492 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2493 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_PaintComposite_
2495 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> source_paint;
2496 <a href="ft2-layer_management.html#ft_composite_mode">FT_Composite_Mode</a> composite_mode;
2497 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> backdrop_paint;
2499 } <b>FT_PaintComposite</b>;
2502 <p>A structure representing a ‘COLR’ v1 <code>PaintComposite</code> paint table. Used for compositing two paints in a ‘COLR’ v1 directed acyclic graph.</p>
2504 <table class="fields">
2505 <tr><td class="val" id="source_paint">source_paint</td><td class="desc">
2506 <p>An <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object referencing the source that is to be composited.</p>
2508 <tr><td class="val" id="composite_mode">composite_mode</td><td class="desc">
2509 <p>An <code><a href="ft2-layer_management.html#ft_composite_mode">FT_Composite_Mode</a></code> enum value determining the composition operation.</p>
2511 <tr><td class="val" id="backdrop_paint">backdrop_paint</td><td class="desc">
2512 <p>An <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object referencing the backdrop paint that <code>source_paint</code> is composited onto.</p>
2521 <h2 id="ft_colr_paint">FT_COLR_Paint<a class="headerlink" href="#ft_colr_paint" title="Permanent link">¶</a></h2>
2522 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2523 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_COLR_Paint_
2525 <a href="ft2-layer_management.html#ft_paintformat">FT_PaintFormat</a> format;
2527 <span class="keyword">union</span>
2529 <a href="ft2-layer_management.html#ft_paintcolrlayers">FT_PaintColrLayers</a> colr_layers;
2530 <a href="ft2-layer_management.html#ft_paintglyph">FT_PaintGlyph</a> glyph;
2531 <a href="ft2-layer_management.html#ft_paintsolid">FT_PaintSolid</a> solid;
2532 <a href="ft2-layer_management.html#ft_paintlineargradient">FT_PaintLinearGradient</a> linear_gradient;
2533 <a href="ft2-layer_management.html#ft_paintradialgradient">FT_PaintRadialGradient</a> radial_gradient;
2534 <a href="ft2-layer_management.html#ft_paintsweepgradient">FT_PaintSweepGradient</a> sweep_gradient;
2535 <a href="ft2-layer_management.html#ft_painttransform">FT_PaintTransform</a> transform;
2536 <a href="ft2-layer_management.html#ft_painttranslate">FT_PaintTranslate</a> translate;
2537 <a href="ft2-layer_management.html#ft_paintscale">FT_PaintScale</a> scale;
2538 <a href="ft2-layer_management.html#ft_paintrotate">FT_PaintRotate</a> rotate;
2539 <a href="ft2-layer_management.html#ft_paintskew">FT_PaintSkew</a> skew;
2540 <a href="ft2-layer_management.html#ft_paintcomposite">FT_PaintComposite</a> composite;
2541 <a href="ft2-layer_management.html#ft_paintcolrglyph">FT_PaintColrGlyph</a> colr_glyph;
2545 } <b>FT_COLR_Paint</b>;
2548 <p>A union object representing format and details of a paint table of a ‘COLR’ v1 font, see ‘<a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a>’. Use <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code> to retrieve a <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> for an <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object.</p>
2550 <table class="fields">
2551 <tr><td class="val" id="format">format</td><td class="desc">
2552 <p>The gradient format for this Paint structure.</p>
2554 <tr><td class="val" id="u">u</td><td class="desc">
2555 <p>Union of all paint table types:</p>
2557 <li><code><a href="ft2-layer_management.html#ft_paintcolrlayers">FT_PaintColrLayers</a></code> <em> <code><a href="ft2-layer_management.html#ft_paintglyph">FT_PaintGlyph</a></code> </em> <code><a href="ft2-layer_management.html#ft_paintsolid">FT_PaintSolid</a></code> <em> <code><a href="ft2-layer_management.html#ft_paintlineargradient">FT_PaintLinearGradient</a></code> </em> <code><a href="ft2-layer_management.html#ft_paintradialgradient">FT_PaintRadialGradient</a></code> <em> <code><a href="ft2-layer_management.html#ft_paintsweepgradient">FT_PaintSweepGradient</a></code> </em> <code><a href="ft2-layer_management.html#ft_painttransform">FT_PaintTransform</a></code> <em> <code><a href="ft2-layer_management.html#ft_painttranslate">FT_PaintTranslate</a></code> </em> <code><a href="ft2-layer_management.html#ft_paintrotate">FT_PaintRotate</a></code> <em> <code><a href="ft2-layer_management.html#ft_paintskew">FT_PaintSkew</a></code> </em> <code><a href="ft2-layer_management.html#ft_paintcomposite">FT_PaintComposite</a></code> * <code><a href="ft2-layer_management.html#ft_paintcolrglyph">FT_PaintColrGlyph</a></code></li>
2567 <h2 id="ft_color_root_transform">FT_Color_Root_Transform<a class="headerlink" href="#ft_color_root_transform" title="Permanent link">¶</a></h2>
2568 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2569 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">enum</span> FT_Color_Root_Transform_
2571 <a href="ft2-layer_management.html#ft_color_include_root_transform">FT_COLOR_INCLUDE_ROOT_TRANSFORM</a>,
2572 <a href="ft2-layer_management.html#ft_color_no_root_transform">FT_COLOR_NO_ROOT_TRANSFORM</a>,
2574 FT_COLOR_ROOT_TRANSFORM_MAX
2576 } <b>FT_Color_Root_Transform</b>;
2579 <p>An enumeration to specify whether <code><a href="ft2-layer_management.html#ft_get_color_glyph_paint">FT_Get_Color_Glyph_Paint</a></code> is to return a root transform to configure the client's graphics context matrix.</p>
2581 <table class="fields long">
2582 <tr><td class="val" id="ft_color_include_root_transform">FT_COLOR_INCLUDE_ROOT_TRANSFORM</td><td class="desc">
2583 <p>Do include the root transform as the initial <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> object.</p>
2585 <tr><td class="val" id="ft_color_no_root_transform">FT_COLOR_NO_ROOT_TRANSFORM</td><td class="desc">
2586 <p>Do not output an initial root transform.</p>
2595 <h2 id="ft_clipbox">FT_ClipBox<a class="headerlink" href="#ft_clipbox" title="Permanent link">¶</a></h2>
2596 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2597 <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ClipBox_
2599 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> bottom_left;
2600 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> top_left;
2601 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> top_right;
2602 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a> bottom_right;
2604 } <b>FT_ClipBox</b>;
2607 <p>A structure representing a ‘COLR’ v1 ‘ClipBox’ table. ‘COLR’ v1 glyphs may optionally define a clip box for aiding allocation or defining a maximum drawable region. Use <code><a href="ft2-layer_management.html#ft_get_color_glyph_clipbox">FT_Get_Color_Glyph_ClipBox</a></code> to retrieve it.</p>
2609 <table class="fields">
2610 <tr><td class="val" id="bottom_left">bottom_left</td><td class="desc">
2611 <p>The bottom left corner of the clip box as an <code><a href="ft2-basic_types.html#ft_vector">FT_Vector</a></code> with fixed-point coordinates in 26.6 format.</p>
2613 <tr><td class="val" id="top_left">top_left</td><td class="desc">
2614 <p>The top left corner of the clip box as an <code><a href="ft2-basic_types.html#ft_vector">FT_Vector</a></code> with fixed-point coordinates in 26.6 format.</p>
2616 <tr><td class="val" id="top_right">top_right</td><td class="desc">
2617 <p>The top right corner of the clip box as an <code><a href="ft2-basic_types.html#ft_vector">FT_Vector</a></code> with fixed-point coordinates in 26.6 format.</p>
2619 <tr><td class="val" id="bottom_right">bottom_right</td><td class="desc">
2620 <p>The bottom right corner of the clip box as an <code><a href="ft2-basic_types.html#ft_vector">FT_Vector</a></code> with fixed-point coordinates in 26.6 format.</p>
2629 <h2 id="ft_get_color_glyph_paint">FT_Get_Color_Glyph_Paint<a class="headerlink" href="#ft_get_color_glyph_paint" title="Permanent link">¶</a></h2>
2630 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2631 <div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> )
2632 <b>FT_Get_Color_Glyph_Paint</b>( <a href="ft2-face_creation.html#ft_face">FT_Face</a> face,
2633 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> base_glyph,
2634 <a href="ft2-layer_management.html#ft_color_root_transform">FT_Color_Root_Transform</a> root_transform,
2635 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a>* paint );
2638 <p>This is the starting point and interface to color gradient information in a ‘COLR’ v1 table in OpenType fonts to recursively retrieve the paint tables for the directed acyclic graph of a colored glyph, given a glyph ID.</p>
2639 <p><a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a></p>
2640 <p>In a ‘COLR’ v1 font, each color glyph defines a directed acyclic graph of nested paint tables, such as <code>PaintGlyph</code>, <code>PaintSolid</code>, <code>PaintLinearGradient</code>, <code>PaintRadialGradient</code>, and so on. Using this function and specifying a glyph ID, one retrieves the root paint table for this glyph ID.</p>
2641 <p>This function allows control whether an initial root transform is returned to configure scaling, transform, and translation correctly on the client's graphics context. The initial root transform is computed and returned according to the values configured for <code><a href="ft2-sizing_and_scaling.html#ft_size">FT_Size</a></code> and <code><a href="ft2-sizing_and_scaling.html#ft_set_transform">FT_Set_Transform</a></code> on the <code><a href="ft2-face_creation.html#ft_face">FT_Face</a></code> object, see below for details of the <code>root_transform</code> parameter. This has implications for a client ‘COLR’ v1 implementation: When this function returns an initially computed root transform, at the time of executing the <code><a href="ft2-layer_management.html#ft_paintglyph">FT_PaintGlyph</a></code> operation, the contours should be retrieved using <code><a href="ft2-glyph_retrieval.html#ft_load_glyph">FT_Load_Glyph</a></code> at unscaled, untransformed size. This is because the root transform applied to the graphics context will take care of correct scaling.</p>
2642 <p>Alternatively, to allow hinting of contours, at the time of executing <code><a href="ft2-glyph_retrieval.html#ft_load_glyph">FT_Load_Glyph</a></code>, the current graphics context transformation matrix can be decomposed into a scaling matrix and a remainder, and <code><a href="ft2-glyph_retrieval.html#ft_load_glyph">FT_Load_Glyph</a></code> can be used to retrieve the contours at scaled size. Care must then be taken to blit or clip to the graphics context with taking this remainder transformation into account.</p>
2644 <table class="fields">
2645 <tr><td class="val" id="face">face</td><td class="desc">
2646 <p>A handle to the parent face object.</p>
2648 <tr><td class="val" id="base_glyph">base_glyph</td><td class="desc">
2649 <p>The glyph index for which to retrieve the root paint table.</p>
2651 <tr><td class="val" id="root_transform">root_transform</td><td class="desc">
2652 <p>Specifies whether an initially computed root is returned by the <code><a href="ft2-layer_management.html#ft_painttransform">FT_PaintTransform</a></code> operation to account for the activated size (see <code><a href="ft2-sizes_management.html#ft_activate_size">FT_Activate_Size</a></code>) and the configured transform and translate (see <code><a href="ft2-sizing_and_scaling.html#ft_set_transform">FT_Set_Transform</a></code>).</p>
2653 <p>This root transform is returned before nodes of the glyph graph of the font are returned. Subsequent <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> structures contain unscaled and untransformed values. The inserted root transform enables the client application to apply an initial transform to its graphics context. When executing subsequent FT_COLR_Paint operations, values from <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> operations will ultimately be correctly scaled because of the root transform applied to the graphics context. Use <code><a href="ft2-layer_management.html#ft_color_root_transform">FT_COLOR_INCLUDE_ROOT_TRANSFORM</a></code> to include the root transform, use <code><a href="ft2-layer_management.html#ft_color_root_transform">FT_COLOR_NO_ROOT_TRANSFORM</a></code> to not include it. The latter may be useful when traversing the ‘COLR’ v1 glyph graph and reaching a <code><a href="ft2-layer_management.html#ft_paintcolrglyph">FT_PaintColrGlyph</a></code>. When recursing into <code><a href="ft2-layer_management.html#ft_paintcolrglyph">FT_PaintColrGlyph</a></code> and painting that inline, no additional root transform is needed as it has already been applied to the graphics context at the beginning of drawing this glyph.</p>
2658 <table class="fields">
2659 <tr><td class="val" id="paint">paint</td><td class="desc">
2660 <p>The <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object that references the actual paint table.</p>
2661 <p>The respective actual <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> object is retrieved via <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code>.</p>
2667 <p>Value 1 if everything is OK. If no color glyph is found, or the root paint could not be retrieved, value 0 gets returned. In case of an error, value 0 is returned also.</p>
2673 <h2 id="ft_get_color_glyph_clipbox">FT_Get_Color_Glyph_ClipBox<a class="headerlink" href="#ft_get_color_glyph_clipbox" title="Permanent link">¶</a></h2>
2674 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2675 <div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> )
2676 <b>FT_Get_Color_Glyph_ClipBox</b>( <a href="ft2-face_creation.html#ft_face">FT_Face</a> face,
2677 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> base_glyph,
2678 <a href="ft2-layer_management.html#ft_clipbox">FT_ClipBox</a>* clip_box );
2681 <p>Search for a ‘COLR’ v1 clip box for the specified <code>base_glyph</code> and fill the <code>clip_box</code> parameter with the ‘COLR’ v1 ‘ClipBox’ information if one is found.</p>
2683 <table class="fields">
2684 <tr><td class="val" id="face">face</td><td class="desc">
2685 <p>A handle to the parent face object.</p>
2687 <tr><td class="val" id="base_glyph">base_glyph</td><td class="desc">
2688 <p>The glyph index for which to retrieve the clip box.</p>
2693 <table class="fields">
2694 <tr><td class="val" id="clip_box">clip_box</td><td class="desc">
2695 <p>The clip box for the requested <code>base_glyph</code> if one is found. The clip box is computed taking scale and transformations configured on the <code><a href="ft2-face_creation.html#ft_face">FT_Face</a></code> into account. <code><a href="ft2-layer_management.html#ft_clipbox">FT_ClipBox</a></code> contains <code><a href="ft2-basic_types.html#ft_vector">FT_Vector</a></code> values in 26.6 format.</p>
2701 <p>Value 1 if a clip box is found. If no clip box is found or an error occured, value 0 is returned.</p>
2704 <p>To retrieve the clip box in font units, reset scale to units-per-em and remove transforms configured using <code><a href="ft2-sizing_and_scaling.html#ft_set_transform">FT_Set_Transform</a></code>.</p>
2710 <h2 id="ft_get_paint_layers">FT_Get_Paint_Layers<a class="headerlink" href="#ft_get_paint_layers" title="Permanent link">¶</a></h2>
2711 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2712 <div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> )
2713 <b>FT_Get_Paint_Layers</b>( <a href="ft2-face_creation.html#ft_face">FT_Face</a> face,
2714 <a href="ft2-layer_management.html#ft_layeriterator">FT_LayerIterator</a>* iterator,
2715 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a>* paint );
2718 <p>Access the layers of a <code>PaintColrLayers</code> table.</p>
2719 <p>If the root paint of a color glyph, or a nested paint of a ‘COLR’ glyph is a <code>PaintColrLayers</code> table, this function retrieves the layers of the <code>PaintColrLayers</code> table.</p>
2720 <p>The <code><a href="ft2-layer_management.html#ft_paintcolrlayers">FT_PaintColrLayers</a></code> object contains an <code><a href="ft2-layer_management.html#ft_layeriterator">FT_LayerIterator</a></code>, which is used here to iterate over the layers. Each layer is returned as an <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object, which then can be used with <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code> to retrieve the actual paint object.</p>
2722 <table class="fields">
2723 <tr><td class="val" id="face">face</td><td class="desc">
2724 <p>A handle to the parent face object.</p>
2729 <table class="fields">
2730 <tr><td class="val" id="iterator">iterator</td><td class="desc">
2731 <p>The <code><a href="ft2-layer_management.html#ft_layeriterator">FT_LayerIterator</a></code> from an <code><a href="ft2-layer_management.html#ft_paintcolrlayers">FT_PaintColrLayers</a></code> object, for which the layers are to be retrieved. The internal state of the iterator is incremented after one call to this function for retrieving one layer.</p>
2736 <table class="fields">
2737 <tr><td class="val" id="paint">paint</td><td class="desc">
2738 <p>The <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> object that references the actual paint table. The respective actual <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> object is retrieved via <code><a href="ft2-layer_management.html#ft_get_paint">FT_Get_Paint</a></code>.</p>
2744 <p>Value 1 if everything is OK. Value 0 gets returned when the paint object can not be retrieved or any other error occurs.</p>
2750 <h2 id="ft_get_colorline_stops">FT_Get_Colorline_Stops<a class="headerlink" href="#ft_get_colorline_stops" title="Permanent link">¶</a></h2>
2751 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2752 <div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> )
2753 <b>FT_Get_Colorline_Stops</b>( <a href="ft2-face_creation.html#ft_face">FT_Face</a> face,
2754 <a href="ft2-layer_management.html#ft_colorstop">FT_ColorStop</a>* color_stop,
2755 <a href="ft2-layer_management.html#ft_colorstopiterator">FT_ColorStopIterator</a>* iterator );
2758 <p>This is an interface to color gradient information in a ‘COLR’ v1 table in OpenType fonts to iteratively retrieve the gradient and solid fill information for colored glyph layers for a specified glyph ID.</p>
2759 <p><a href="https://github.com/googlefonts/colr-gradients-spec">https://github.com/googlefonts/colr-gradients-spec</a></p>
2761 <table class="fields">
2762 <tr><td class="val" id="face">face</td><td class="desc">
2763 <p>A handle to the parent face object.</p>
2768 <table class="fields">
2769 <tr><td class="val" id="iterator">iterator</td><td class="desc">
2770 <p>The retrieved <code><a href="ft2-layer_management.html#ft_colorstopiterator">FT_ColorStopIterator</a></code>, configured on an <code><a href="ft2-layer_management.html#ft_colorline">FT_ColorLine</a></code>, which in turn got retrieved via paint information in <code><a href="ft2-layer_management.html#ft_paintlineargradient">FT_PaintLinearGradient</a></code> or <code><a href="ft2-layer_management.html#ft_paintradialgradient">FT_PaintRadialGradient</a></code>.</p>
2775 <table class="fields">
2776 <tr><td class="val" id="color_stop">color_stop</td><td class="desc">
2777 <p>Color index and alpha value for the retrieved color stop.</p>
2783 <p>Value 1 if everything is OK. If there are no more color stops, value 0 gets returned. In case of an error, value 0 is returned also.</p>
2789 <h2 id="ft_get_paint">FT_Get_Paint<a class="headerlink" href="#ft_get_paint" title="Permanent link">¶</a></h2>
2790 <p>Defined in FT_COLOR_H (freetype/ftcolor.h).</p>
2791 <div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_bool">FT_Bool</a> )
2792 <b>FT_Get_Paint</b>( <a href="ft2-face_creation.html#ft_face">FT_Face</a> face,
2793 <a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a> opaque_paint,
2794 <a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a>* paint );
2797 <p>Access the details of a paint using an <code><a href="ft2-layer_management.html#ft_opaquepaint">FT_OpaquePaint</a></code> opaque paint object, which internally stores the offset to the respective <code>Paint</code> object in the ‘COLR’ table.</p>
2799 <table class="fields">
2800 <tr><td class="val" id="face">face</td><td class="desc">
2801 <p>A handle to the parent face object.</p>
2803 <tr><td class="val" id="opaque_paint">opaque_paint</td><td class="desc">
2804 <p>The opaque paint object for which the underlying <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> data is to be retrieved.</p>
2809 <table class="fields">
2810 <tr><td class="val" id="paint">paint</td><td class="desc">
2811 <p>The specific <code><a href="ft2-layer_management.html#ft_colr_paint">FT_COLR_Paint</a></code> object containing information coming from one of the font's <code>Paint*</code> tables.</p>
2817 <p>Value 1 if everything is OK. Value 0 if no details can be found for this paint or any other error occured.</p>
2836 <footer class="md-footer">
2838 <nav class="md-footer__inner md-grid" aria-label="Footer">
2841 <a href="ft2-color_management.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Glyph Color Management" rel="prev">
2842 <div class="md-footer__button md-icon">
2843 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
2845 <div class="md-footer__title">
2846 <div class="md-ellipsis">
2847 <span class="md-footer__direction">
2850 Glyph Color Management
2857 <a href="ft2-glyph_management.html" class="md-footer__link md-footer__link--next" aria-label="Next: Glyph Management" rel="next">
2858 <div class="md-footer__title">
2859 <div class="md-ellipsis">
2860 <span class="md-footer__direction">
2866 <div class="md-footer__button md-icon">
2867 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
2873 <div class="md-footer-meta md-typeset">
2874 <div class="md-footer-meta__inner md-grid">
2875 <div class="md-footer-copyright">
2877 <div class="md-footer-copyright__highlight">
2878 Copyright 2023 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
2882 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2893 <div class="md-dialog" data-md-component="dialog">
2894 <div class="md-dialog__inner md-typeset"></div>
2896 <script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.477d984a.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "version": null}</script>
2899 <script src="assets/javascripts/bundle.82b56eb2.min.js"></script>
2901 <script src="javascripts/extra.js"></script>