@@ -34,6 +34,74 @@ P11X_DECLARE_ENUM(
3434 {" UNSCALED" , FT_KERNING_UNSCALED },
3535);
3636
37+ const char *FaceFlags__doc__ = R"""(
38+ Flags returned by `FT2Font.face_flags`.
39+
40+ For more information, see `the FreeType documentation
41+ <https://freetype.org/freetype2/docs/reference/ft2-face_creation.html#ft_face_flag_xxx>`_.
42+
43+ .. versionadded:: 3.10
44+ )""" ;
45+
46+ enum class FaceFlags : FT_Long {
47+ #define DECLARE_FLAG (name ) name = FT_FACE_FLAG_ ##name
48+ DECLARE_FLAG (SCALABLE ),
49+ DECLARE_FLAG (FIXED_SIZES ),
50+ DECLARE_FLAG (FIXED_WIDTH ),
51+ DECLARE_FLAG (SFNT ),
52+ DECLARE_FLAG (HORIZONTAL ),
53+ DECLARE_FLAG (VERTICAL ),
54+ DECLARE_FLAG (KERNING ),
55+ DECLARE_FLAG (FAST_GLYPHS ),
56+ DECLARE_FLAG (MULTIPLE_MASTERS ),
57+ DECLARE_FLAG (GLYPH_NAMES ),
58+ DECLARE_FLAG (EXTERNAL_STREAM ),
59+ DECLARE_FLAG (HINTER ),
60+ DECLARE_FLAG (CID_KEYED ),
61+ DECLARE_FLAG (TRICKY ),
62+ DECLARE_FLAG (COLOR ),
63+ #ifdef FT_FACE_FLAG_VARIATION // backcompat: ft 2.9.0.
64+ DECLARE_FLAG (VARIATION ),
65+ #endif
66+ #ifdef FT_FACE_FLAG_SVG // backcompat: ft 2.12.0.
67+ DECLARE_FLAG (SVG ),
68+ #endif
69+ #ifdef FT_FACE_FLAG_SBIX // backcompat: ft 2.12.0.
70+ DECLARE_FLAG (SBIX ),
71+ #endif
72+ #ifdef FT_FACE_FLAG_SBIX_OVERLAY // backcompat: ft 2.12.0.
73+ DECLARE_FLAG (SBIX_OVERLAY ),
74+ #endif
75+ #undef DECLARE_FLAG
76+ };
77+
78+ P11X_DECLARE_ENUM (
79+ " FaceFlags" , " Flag" ,
80+ {" SCALABLE" , FaceFlags::SCALABLE },
81+ {" FIXED_SIZES" , FaceFlags::FIXED_SIZES },
82+ {" FIXED_WIDTH" , FaceFlags::FIXED_WIDTH },
83+ {" SFNT" , FaceFlags::SFNT },
84+ {" HORIZONTAL" , FaceFlags::HORIZONTAL },
85+ {" VERTICAL" , FaceFlags::VERTICAL },
86+ {" KERNING" , FaceFlags::KERNING },
87+ {" FAST_GLYPHS" , FaceFlags::FAST_GLYPHS },
88+ {" MULTIPLE_MASTERS" , FaceFlags::MULTIPLE_MASTERS },
89+ {" GLYPH_NAMES" , FaceFlags::GLYPH_NAMES },
90+ {" EXTERNAL_STREAM" , FaceFlags::EXTERNAL_STREAM },
91+ {" HINTER" , FaceFlags::HINTER },
92+ {" CID_KEYED" , FaceFlags::CID_KEYED },
93+ {" TRICKY" , FaceFlags::TRICKY },
94+ {" COLOR" , FaceFlags::COLOR },
95+ // backcompat: ft 2.9.0.
96+ // {"VARIATION", FaceFlags::VARIATION},
97+ // backcompat: ft 2.12.0.
98+ // {"SVG", FaceFlags::SVG},
99+ // backcompat: ft 2.12.0.
100+ // {"SBIX", FaceFlags::SBIX},
101+ // backcompat: ft 2.12.0.
102+ // {"SBIX_OVERLAY", FaceFlags::SBIX_OVERLAY},
103+ );
104+
37105const char *LoadFlags__doc__ = R"""(
38106 Flags for `FT2Font.load_char`, `FT2Font.load_glyph`, and `FT2Font.set_text`.
39107
@@ -111,6 +179,30 @@ P11X_DECLARE_ENUM(
111179 {" TARGET_LCD_V" , LoadFlags::TARGET_LCD_V },
112180);
113181
182+ const char *StyleFlags__doc__ = R"""(
183+ Flags returned by `FT2Font.style_flags`.
184+
185+ For more information, see `the FreeType documentation
186+ <https://freetype.org/freetype2/docs/reference/ft2-face_creation.html#ft_style_flag_xxx>`_.
187+
188+ .. versionadded:: 3.10
189+ )""" ;
190+
191+ enum class StyleFlags : FT_Long {
192+ #define DECLARE_FLAG (name ) name = FT_STYLE_FLAG_ ##name
193+ NORMAL = 0 ,
194+ DECLARE_FLAG (ITALIC ),
195+ DECLARE_FLAG (BOLD ),
196+ #undef DECLARE_FLAG
197+ };
198+
199+ P11X_DECLARE_ENUM (
200+ " StyleFlags" , " Flag" ,
201+ {" NORMAL" , StyleFlags::NORMAL },
202+ {" ITALIC" , StyleFlags::ITALIC },
203+ {" BOLD" , StyleFlags::BOLD },
204+ );
205+
114206/* *********************************************************************
115207 * FT2Image
116208 * */
@@ -1340,16 +1432,16 @@ PyFT2Font_style_name(PyFT2Font *self)
13401432 return name;
13411433}
13421434
1343- static FT_Long
1435+ static FaceFlags
13441436PyFT2Font_face_flags (PyFT2Font *self)
13451437{
1346- return self->x ->get_face ()->face_flags ;
1438+ return static_cast <FaceFlags>( self->x ->get_face ()->face_flags ) ;
13471439}
13481440
1349- static FT_Long
1441+ static StyleFlags
13501442PyFT2Font_style_flags (PyFT2Font *self)
13511443{
1352- return self->x ->get_face ()->style_flags ;
1444+ return static_cast <StyleFlags>( self->x ->get_face ()->style_flags ) ;
13531445}
13541446
13551447static FT_Long
@@ -1496,6 +1588,20 @@ ft2font__getattr__(std::string name) {
14961588 DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD , LoadFlags, TARGET_LCD );
14971589 DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD_V , LoadFlags, TARGET_LCD_V );
14981590
1591+ DEPRECATE_ATTR_FROM_FLAG (SCALABLE , FaceFlags, SCALABLE );
1592+ DEPRECATE_ATTR_FROM_FLAG (FIXED_SIZES , FaceFlags, FIXED_SIZES );
1593+ DEPRECATE_ATTR_FROM_FLAG (FIXED_WIDTH , FaceFlags, FIXED_WIDTH );
1594+ DEPRECATE_ATTR_FROM_FLAG (SFNT , FaceFlags, SFNT );
1595+ DEPRECATE_ATTR_FROM_FLAG (HORIZONTAL , FaceFlags, HORIZONTAL );
1596+ DEPRECATE_ATTR_FROM_FLAG (VERTICAL , FaceFlags, VERTICAL );
1597+ DEPRECATE_ATTR_FROM_FLAG (KERNING , FaceFlags, KERNING );
1598+ DEPRECATE_ATTR_FROM_FLAG (FAST_GLYPHS , FaceFlags, FAST_GLYPHS );
1599+ DEPRECATE_ATTR_FROM_FLAG (MULTIPLE_MASTERS , FaceFlags, MULTIPLE_MASTERS );
1600+ DEPRECATE_ATTR_FROM_FLAG (GLYPH_NAMES , FaceFlags, GLYPH_NAMES );
1601+ DEPRECATE_ATTR_FROM_FLAG (EXTERNAL_STREAM , FaceFlags, EXTERNAL_STREAM );
1602+
1603+ DEPRECATE_ATTR_FROM_FLAG (ITALIC , StyleFlags, ITALIC );
1604+ DEPRECATE_ATTR_FROM_FLAG (BOLD , StyleFlags, BOLD );
14991605#undef DEPRECATE_ATTR_FROM_FLAG
15001606
15011607 throw py::attribute_error (
@@ -1523,6 +1629,8 @@ PYBIND11_MODULE(ft2font, m)
15231629 p11x::bind_enums (m);
15241630 p11x::enums[" Kerning" ].attr (" __doc__" ) = Kerning__doc__;
15251631 p11x::enums[" LoadFlags" ].attr (" __doc__" ) = LoadFlags__doc__;
1632+ p11x::enums[" FaceFlags" ].attr (" __doc__" ) = FaceFlags__doc__;
1633+ p11x::enums[" StyleFlags" ].attr (" __doc__" ) = StyleFlags__doc__;
15261634
15271635 py::class_<FT2Image>(m, " FT2Image" , py::is_final (), py::buffer_protocol (),
15281636 PyFT2Image__doc__)
@@ -1622,9 +1730,9 @@ PYBIND11_MODULE(ft2font, m)
16221730 .def_property_readonly (" style_name" , &PyFT2Font_style_name,
16231731 " Style name." )
16241732 .def_property_readonly (" face_flags" , &PyFT2Font_face_flags,
1625- " Face flags; see the ft2font constants ." )
1733+ " Face flags; see `.FaceFlags` ." )
16261734 .def_property_readonly (" style_flags" , &PyFT2Font_style_flags,
1627- " Style flags; see the ft2font constants ." )
1735+ " Style flags; see `.StyleFlags` ." )
16281736 .def_property_readonly (" num_glyphs" , &PyFT2Font_num_glyphs,
16291737 " Number of glyphs in the face." )
16301738 .def_property_readonly (" num_fixed_sizes" , &PyFT2Font_num_fixed_sizes,
@@ -1666,17 +1774,4 @@ PYBIND11_MODULE(ft2font, m)
16661774 m.attr (" __freetype_version__" ) = version_string;
16671775 m.attr (" __freetype_build_type__" ) = FREETYPE_BUILD_TYPE ;
16681776 m.def (" __getattr__" , ft2font__getattr__);
1669- m.attr (" SCALABLE" ) = FT_FACE_FLAG_SCALABLE ;
1670- m.attr (" FIXED_SIZES" ) = FT_FACE_FLAG_FIXED_SIZES ;
1671- m.attr (" FIXED_WIDTH" ) = FT_FACE_FLAG_FIXED_WIDTH ;
1672- m.attr (" SFNT" ) = FT_FACE_FLAG_SFNT ;
1673- m.attr (" HORIZONTAL" ) = FT_FACE_FLAG_HORIZONTAL ;
1674- m.attr (" VERTICAL" ) = FT_FACE_FLAG_VERTICAL ;
1675- m.attr (" KERNING" ) = FT_FACE_FLAG_KERNING ;
1676- m.attr (" FAST_GLYPHS" ) = FT_FACE_FLAG_FAST_GLYPHS ;
1677- m.attr (" MULTIPLE_MASTERS" ) = FT_FACE_FLAG_MULTIPLE_MASTERS ;
1678- m.attr (" GLYPH_NAMES" ) = FT_FACE_FLAG_GLYPH_NAMES ;
1679- m.attr (" EXTERNAL_STREAM" ) = FT_FACE_FLAG_EXTERNAL_STREAM ;
1680- m.attr (" ITALIC" ) = FT_STYLE_FLAG_ITALIC ;
1681- m.attr (" BOLD" ) = FT_STYLE_FLAG_BOLD ;
16821777}
0 commit comments