@@ -32,6 +32,75 @@ P11X_DECLARE_ENUM(
32
32
{" UNSCALED" , FT_KERNING_UNSCALED},
33
33
);
34
34
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
+
35
104
const char *LoadFlags__doc__ = R"""(
36
105
Flags for `FT2Font.load_char`, `FT2font.load_glyph`, and `FT2Font.set_text`.
37
106
@@ -110,6 +179,25 @@ P11X_DECLARE_ENUM(
110
179
{" TARGET_LCD_V" , LoadFlags::TARGET_LCD_V},
111
180
);
112
181
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
+
113
201
/* *********************************************************************
114
202
* FT2Image
115
203
* */
@@ -1307,16 +1395,16 @@ PyFT2Font_style_name(PyFT2Font *self)
1307
1395
return name;
1308
1396
}
1309
1397
1310
- static FT_Long
1398
+ static FaceFlags
1311
1399
PyFT2Font_face_flags (PyFT2Font *self)
1312
1400
{
1313
- return self->x ->get_face ()->face_flags ;
1401
+ return static_cast <FaceFlags>( self->x ->get_face ()->face_flags ) ;
1314
1402
}
1315
1403
1316
- static FT_Long
1404
+ static StyleFlags
1317
1405
PyFT2Font_style_flags (PyFT2Font *self)
1318
1406
{
1319
- return self->x ->get_face ()->style_flags ;
1407
+ return static_cast <StyleFlags>( self->x ->get_face ()->style_flags ) ;
1320
1408
}
1321
1409
1322
1410
static FT_Long
@@ -1463,6 +1551,20 @@ ft2font__getattr__(std::string name) {
1463
1551
DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD, LoadFlags, TARGET_LCD);
1464
1552
DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD_V, LoadFlags, TARGET_LCD_V);
1465
1553
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);
1466
1568
#undef DEPRECATE_ATTR_FROM_FLAG
1467
1569
1468
1570
throw py::attribute_error (
@@ -1587,9 +1689,9 @@ PYBIND11_MODULE(ft2font, m)
1587
1689
.def_property_readonly (" style_name" , &PyFT2Font_style_name,
1588
1690
" Style name." )
1589
1691
.def_property_readonly (" face_flags" , &PyFT2Font_face_flags,
1590
- " Face flags; see the ft2font constants ." )
1692
+ " Face flags; see `.FaceFlags` ." )
1591
1693
.def_property_readonly (" style_flags" , &PyFT2Font_style_flags,
1592
- " Style flags; see the ft2font constants ." )
1694
+ " Style flags; see `.StyleFlags` ." )
1593
1695
.def_property_readonly (" num_glyphs" , &PyFT2Font_num_glyphs,
1594
1696
" Number of glyphs in the face." )
1595
1697
.def_property_readonly (" num_fixed_sizes" , &PyFT2Font_num_fixed_sizes,
@@ -1631,17 +1733,4 @@ PYBIND11_MODULE(ft2font, m)
1631
1733
m.attr (" __freetype_version__" ) = version_string;
1632
1734
m.attr (" __freetype_build_type__" ) = FREETYPE_BUILD_TYPE;
1633
1735
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;
1647
1736
}
0 commit comments