@@ -32,6 +32,75 @@ P11X_DECLARE_ENUM(
3232 {" UNSCALED" , FT_KERNING_UNSCALED },
3333);
3434
35+ const char *FaceFlags__doc__ = R"""(
36+ Flags returned by `FT2Font.face_flags`.
37+
38+ For more information, see `the FreeType documentation
39+ <https://freetype.org/freetype2/docs/reference/ft2-face_creation.html#ft_face_flag_xxx>`_.
40+ )""" ;
41+
42+ enum class FaceFlags : FT_Long {
43+ #define DECLARE_FLAG (name ) name = FT_FACE_FLAG_ ##name
44+ DECLARE_FLAG (SCALABLE ),
45+ DECLARE_FLAG (FIXED_SIZES ),
46+ DECLARE_FLAG (FIXED_WIDTH ),
47+ DECLARE_FLAG (SFNT ),
48+ DECLARE_FLAG (HORIZONTAL ),
49+ DECLARE_FLAG (VERTICAL ),
50+ DECLARE_FLAG (KERNING ),
51+ DECLARE_FLAG (FAST_GLYPHS ),
52+ DECLARE_FLAG (MULTIPLE_MASTERS ),
53+ DECLARE_FLAG (GLYPH_NAMES ),
54+ DECLARE_FLAG (EXTERNAL_STREAM ),
55+ DECLARE_FLAG (HINTER ),
56+ DECLARE_FLAG (CID_KEYED ),
57+ DECLARE_FLAG (TRICKY ),
58+ DECLARE_FLAG (COLOR ),
59+ #ifdef FT_FACE_FLAG_VARIATION // backcompat: ft 2.9.0.
60+ DECLARE_FLAG (VARIATION ),
61+ #endif
62+ #ifdef FT_FACE_FLAG_SVG // backcompat: ft 2.12.0.
63+ DECLARE_FLAG (SVG ),
64+ #endif
65+ #ifdef FT_FACE_FLAG_SBIX // backcompat: ft 2.12.0.
66+ DECLARE_FLAG (SBIX ),
67+ #endif
68+ #ifdef FT_FACE_FLAG_SBIX_OVERLAY // backcompat: ft 2.12.0.
69+ DECLARE_FLAG (SBIX_OVERLAY ),
70+ #endif
71+ #undef DECLARE_FLAG
72+ };
73+
74+ P11X_DECLARE_ENUM (" FaceFlags" , " enum.Flag" ,
75+ {" SCALABLE" , FaceFlags::SCALABLE },
76+ {" FIXED_SIZES" , FaceFlags::FIXED_SIZES },
77+ {" FIXED_WIDTH" , FaceFlags::FIXED_WIDTH },
78+ {" SFNT" , FaceFlags::SFNT },
79+ {" HORIZONTAL" , FaceFlags::HORIZONTAL },
80+ {" VERTICAL" , FaceFlags::VERTICAL },
81+ {" KERNING" , FaceFlags::KERNING },
82+ {" FAST_GLYPHS" , FaceFlags::FAST_GLYPHS },
83+ {" MULTIPLE_MASTERS" , FaceFlags::MULTIPLE_MASTERS },
84+ {" GLYPH_NAMES" , FaceFlags::GLYPH_NAMES },
85+ {" EXTERNAL_STREAM" , FaceFlags::EXTERNAL_STREAM },
86+ {" HINTER" , FaceFlags::HINTER },
87+ {" CID_KEYED" , FaceFlags::CID_KEYED },
88+ {" TRICKY" , FaceFlags::TRICKY },
89+ {" COLOR" , FaceFlags::COLOR },
90+ #ifdef FT_FACE_FLAG_VARIATION // backcompat: ft 2.9.0.
91+ {" VARIATION" , FaceFlags::VARIATION },
92+ #endif
93+ #ifdef FT_FACE_FLAG_SVG // backcompat: ft 2.12.0.
94+ {" SVG" , FaceFlags::SVG },
95+ #endif
96+ #ifdef FT_FACE_FLAG_SBIX // backcompat: ft 2.12.0.
97+ {" SBIX" , FaceFlags::SBIX },
98+ #endif
99+ #ifdef FT_FACE_FLAG_SBIX_OVERLAY // backcompat: ft 2.12.0.
100+ {" SBIX_OVERLAY" , FaceFlags::SBIX_OVERLAY },
101+ #endif
102+ );
103+
35104const char *LoadFlags__doc__ = R"""(
36105 Flags for `FT2Font.load_char`, `FT2font.load_glyph`, and `FT2Font.set_text`.
37106
@@ -110,6 +179,25 @@ P11X_DECLARE_ENUM(
110179 {" TARGET_LCD_V" , LoadFlags::TARGET_LCD_V },
111180);
112181
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+
189+ enum class StyleFlags : FT_Long {
190+ #define DECLARE_FLAG (name ) name = FT_STYLE_FLAG_ ##name
191+ DECLARE_FLAG (ITALIC ),
192+ DECLARE_FLAG (BOLD ),
193+ #undef DECLARE_FLAG
194+ };
195+
196+ P11X_DECLARE_ENUM (" StyleFlags" , " enum.Flag" ,
197+ {" ITALIC" , StyleFlags::ITALIC },
198+ {" BOLD" , StyleFlags::BOLD },
199+ );
200+
113201/* *********************************************************************
114202 * FT2Image
115203 * */
@@ -1307,16 +1395,16 @@ PyFT2Font_style_name(PyFT2Font *self)
13071395 return name;
13081396}
13091397
1310- static FT_Long
1398+ static FaceFlags
13111399PyFT2Font_face_flags (PyFT2Font *self)
13121400{
1313- return self->x ->get_face ()->face_flags ;
1401+ return static_cast <FaceFlags>( self->x ->get_face ()->face_flags ) ;
13141402}
13151403
1316- static FT_Long
1404+ static StyleFlags
13171405PyFT2Font_style_flags (PyFT2Font *self)
13181406{
1319- return self->x ->get_face ()->style_flags ;
1407+ return static_cast <StyleFlags>( self->x ->get_face ()->style_flags ) ;
13201408}
13211409
13221410static FT_Long
@@ -1463,6 +1551,20 @@ ft2font__getattr__(std::string name) {
14631551 DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD , LoadFlags, TARGET_LCD );
14641552 DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD_V , LoadFlags, TARGET_LCD_V );
14651553
1554+ DEPRECATE_ATTR_FROM_FLAG (SCALABLE , FaceFlags, SCALABLE );
1555+ DEPRECATE_ATTR_FROM_FLAG (FIXED_SIZES , FaceFlags, FIXED_SIZES );
1556+ DEPRECATE_ATTR_FROM_FLAG (FIXED_WIDTH , FaceFlags, FIXED_WIDTH );
1557+ DEPRECATE_ATTR_FROM_FLAG (SFNT , FaceFlags, SFNT );
1558+ DEPRECATE_ATTR_FROM_FLAG (HORIZONTAL , FaceFlags, HORIZONTAL );
1559+ DEPRECATE_ATTR_FROM_FLAG (VERTICAL , FaceFlags, VERTICAL );
1560+ DEPRECATE_ATTR_FROM_FLAG (KERNING , FaceFlags, KERNING );
1561+ DEPRECATE_ATTR_FROM_FLAG (FAST_GLYPHS , FaceFlags, FAST_GLYPHS );
1562+ DEPRECATE_ATTR_FROM_FLAG (MULTIPLE_MASTERS , FaceFlags, MULTIPLE_MASTERS );
1563+ DEPRECATE_ATTR_FROM_FLAG (GLYPH_NAMES , FaceFlags, GLYPH_NAMES );
1564+ DEPRECATE_ATTR_FROM_FLAG (EXTERNAL_STREAM , FaceFlags, EXTERNAL_STREAM );
1565+
1566+ DEPRECATE_ATTR_FROM_FLAG (ITALIC , StyleFlags, ITALIC );
1567+ DEPRECATE_ATTR_FROM_FLAG (BOLD , StyleFlags, BOLD );
14661568#undef DEPRECATE_ATTR_FROM_FLAG
14671569
14681570 throw py::attribute_error (
@@ -1587,9 +1689,9 @@ PYBIND11_MODULE(ft2font, m)
15871689 .def_property_readonly (" style_name" , &PyFT2Font_style_name,
15881690 " Style name." )
15891691 .def_property_readonly (" face_flags" , &PyFT2Font_face_flags,
1590- " Face flags; see the ft2font constants ." )
1692+ " Face flags; see `.FaceFlags` ." )
15911693 .def_property_readonly (" style_flags" , &PyFT2Font_style_flags,
1592- " Style flags; see the ft2font constants ." )
1694+ " Style flags; see `.StyleFlags` ." )
15931695 .def_property_readonly (" num_glyphs" , &PyFT2Font_num_glyphs,
15941696 " Number of glyphs in the face." )
15951697 .def_property_readonly (" num_fixed_sizes" , &PyFT2Font_num_fixed_sizes,
@@ -1631,17 +1733,4 @@ PYBIND11_MODULE(ft2font, m)
16311733 m.attr (" __freetype_version__" ) = version_string;
16321734 m.attr (" __freetype_build_type__" ) = FREETYPE_BUILD_TYPE ;
16331735 m.def (" __getattr__" , ft2font__getattr__);
1634- m.attr (" SCALABLE" ) = FT_FACE_FLAG_SCALABLE ;
1635- m.attr (" FIXED_SIZES" ) = FT_FACE_FLAG_FIXED_SIZES ;
1636- m.attr (" FIXED_WIDTH" ) = FT_FACE_FLAG_FIXED_WIDTH ;
1637- m.attr (" SFNT" ) = FT_FACE_FLAG_SFNT ;
1638- m.attr (" HORIZONTAL" ) = FT_FACE_FLAG_HORIZONTAL ;
1639- m.attr (" VERTICAL" ) = FT_FACE_FLAG_VERTICAL ;
1640- m.attr (" KERNING" ) = FT_FACE_FLAG_KERNING ;
1641- m.attr (" FAST_GLYPHS" ) = FT_FACE_FLAG_FAST_GLYPHS ;
1642- m.attr (" MULTIPLE_MASTERS" ) = FT_FACE_FLAG_MULTIPLE_MASTERS ;
1643- m.attr (" GLYPH_NAMES" ) = FT_FACE_FLAG_GLYPH_NAMES ;
1644- m.attr (" EXTERNAL_STREAM" ) = FT_FACE_FLAG_EXTERNAL_STREAM ;
1645- m.attr (" ITALIC" ) = FT_STYLE_FLAG_ITALIC ;
1646- m.attr (" BOLD" ) = FT_STYLE_FLAG_BOLD ;
16471736}
0 commit comments