@@ -33,6 +33,74 @@ P11X_DECLARE_ENUM(
33
33
{" UNSCALED" , FT_KERNING_UNSCALED},
34
34
);
35
35
36
+ const char *FaceFlags__doc__ = R"""(
37
+ Flags returned by `FT2Font.face_flags`.
38
+
39
+ For more information, see `the FreeType documentation
40
+ <https://freetype.org/freetype2/docs/reference/ft2-face_creation.html#ft_face_flag_xxx>`_.
41
+
42
+ .. versionadded:: 3.10
43
+ )""" ;
44
+
45
+ enum class FaceFlags : FT_Long {
46
+ #define DECLARE_FLAG (name ) name = FT_FACE_FLAG_##name
47
+ DECLARE_FLAG (SCALABLE),
48
+ DECLARE_FLAG (FIXED_SIZES),
49
+ DECLARE_FLAG (FIXED_WIDTH),
50
+ DECLARE_FLAG (SFNT),
51
+ DECLARE_FLAG (HORIZONTAL),
52
+ DECLARE_FLAG (VERTICAL),
53
+ DECLARE_FLAG (KERNING),
54
+ DECLARE_FLAG (FAST_GLYPHS),
55
+ DECLARE_FLAG (MULTIPLE_MASTERS),
56
+ DECLARE_FLAG (GLYPH_NAMES),
57
+ DECLARE_FLAG (EXTERNAL_STREAM),
58
+ DECLARE_FLAG (HINTER),
59
+ DECLARE_FLAG (CID_KEYED),
60
+ DECLARE_FLAG (TRICKY),
61
+ DECLARE_FLAG (COLOR),
62
+ #ifdef FT_FACE_FLAG_VARIATION // backcompat: ft 2.9.0.
63
+ DECLARE_FLAG (VARIATION),
64
+ #endif
65
+ #ifdef FT_FACE_FLAG_SVG // backcompat: ft 2.12.0.
66
+ DECLARE_FLAG (SVG),
67
+ #endif
68
+ #ifdef FT_FACE_FLAG_SBIX // backcompat: ft 2.12.0.
69
+ DECLARE_FLAG (SBIX),
70
+ #endif
71
+ #ifdef FT_FACE_FLAG_SBIX_OVERLAY // backcompat: ft 2.12.0.
72
+ DECLARE_FLAG (SBIX_OVERLAY),
73
+ #endif
74
+ #undef DECLARE_FLAG
75
+ };
76
+
77
+ P11X_DECLARE_ENUM (
78
+ " FaceFlags" , " Flag" ,
79
+ {" SCALABLE" , FaceFlags::SCALABLE},
80
+ {" FIXED_SIZES" , FaceFlags::FIXED_SIZES},
81
+ {" FIXED_WIDTH" , FaceFlags::FIXED_WIDTH},
82
+ {" SFNT" , FaceFlags::SFNT},
83
+ {" HORIZONTAL" , FaceFlags::HORIZONTAL},
84
+ {" VERTICAL" , FaceFlags::VERTICAL},
85
+ {" KERNING" , FaceFlags::KERNING},
86
+ {" FAST_GLYPHS" , FaceFlags::FAST_GLYPHS},
87
+ {" MULTIPLE_MASTERS" , FaceFlags::MULTIPLE_MASTERS},
88
+ {" GLYPH_NAMES" , FaceFlags::GLYPH_NAMES},
89
+ {" EXTERNAL_STREAM" , FaceFlags::EXTERNAL_STREAM},
90
+ {" HINTER" , FaceFlags::HINTER},
91
+ {" CID_KEYED" , FaceFlags::CID_KEYED},
92
+ {" TRICKY" , FaceFlags::TRICKY},
93
+ {" COLOR" , FaceFlags::COLOR},
94
+ // backcompat: ft 2.9.0.
95
+ // {"VARIATION", FaceFlags::VARIATION},
96
+ // backcompat: ft 2.12.0.
97
+ // {"SVG", FaceFlags::SVG},
98
+ // backcompat: ft 2.12.0.
99
+ // {"SBIX", FaceFlags::SBIX},
100
+ // backcompat: ft 2.12.0.
101
+ // {"SBIX_OVERLAY", FaceFlags::SBIX_OVERLAY},
102
+ );
103
+
36
104
const char *LoadFlags__doc__ = R"""(
37
105
Flags for `FT2Font.load_char`, `FT2Font.load_glyph`, and `FT2Font.set_text`.
38
106
@@ -110,6 +178,30 @@ P11X_DECLARE_ENUM(
110
178
{" TARGET_LCD_V" , LoadFlags::TARGET_LCD_V},
111
179
);
112
180
181
+ const char *StyleFlags__doc__ = R"""(
182
+ Flags returned by `FT2Font.style_flags`.
183
+
184
+ For more information, see `the FreeType documentation
185
+ <https://freetype.org/freetype2/docs/reference/ft2-face_creation.html#ft_style_flag_xxx>`_.
186
+
187
+ .. versionadded:: 3.10
188
+ )""" ;
189
+
190
+ enum class StyleFlags : FT_Long {
191
+ #define DECLARE_FLAG (name ) name = FT_STYLE_FLAG_##name
192
+ NORMAL = 0 ,
193
+ DECLARE_FLAG (ITALIC),
194
+ DECLARE_FLAG (BOLD),
195
+ #undef DECLARE_FLAG
196
+ };
197
+
198
+ P11X_DECLARE_ENUM (
199
+ " StyleFlags" , " Flag" ,
200
+ {" NORMAL" , StyleFlags::NORMAL},
201
+ {" ITALIC" , StyleFlags::ITALIC},
202
+ {" BOLD" , StyleFlags::BOLD},
203
+ );
204
+
113
205
/* *********************************************************************
114
206
* FT2Image
115
207
* */
@@ -1339,16 +1431,16 @@ PyFT2Font_style_name(PyFT2Font *self)
1339
1431
return name;
1340
1432
}
1341
1433
1342
- static FT_Long
1434
+ static FaceFlags
1343
1435
PyFT2Font_face_flags (PyFT2Font *self)
1344
1436
{
1345
- return self->x ->get_face ()->face_flags ;
1437
+ return static_cast <FaceFlags>( self->x ->get_face ()->face_flags ) ;
1346
1438
}
1347
1439
1348
- static FT_Long
1440
+ static StyleFlags
1349
1441
PyFT2Font_style_flags (PyFT2Font *self)
1350
1442
{
1351
- return self->x ->get_face ()->style_flags ;
1443
+ return static_cast <StyleFlags>( self->x ->get_face ()->style_flags ) ;
1352
1444
}
1353
1445
1354
1446
static FT_Long
@@ -1496,6 +1588,20 @@ ft2font__getattr__(std::string name) {
1496
1588
DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD, LoadFlags, TARGET_LCD);
1497
1589
DEPRECATE_ATTR_FROM_FLAG (LOAD_TARGET_LCD_V, LoadFlags, TARGET_LCD_V);
1498
1590
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);
1499
1605
#undef DEPRECATE_ATTR_FROM_FLAG
1500
1606
1501
1607
throw py::attribute_error (
@@ -1515,6 +1621,8 @@ PYBIND11_MODULE(ft2font, m)
1515
1621
p11x::bind_enums (m);
1516
1622
p11x::enums[" Kerning" ].attr (" __doc__" ) = Kerning__doc__;
1517
1623
p11x::enums[" LoadFlags" ].attr (" __doc__" ) = LoadFlags__doc__;
1624
+ p11x::enums[" FaceFlags" ].attr (" __doc__" ) = FaceFlags__doc__;
1625
+ p11x::enums[" StyleFlags" ].attr (" __doc__" ) = StyleFlags__doc__;
1518
1626
1519
1627
py::class_<FT2Image>(m, " FT2Image" , py::is_final (), py::buffer_protocol (),
1520
1628
PyFT2Image__doc__)
@@ -1614,9 +1722,9 @@ PYBIND11_MODULE(ft2font, m)
1614
1722
.def_property_readonly (" style_name" , &PyFT2Font_style_name,
1615
1723
" Style name." )
1616
1724
.def_property_readonly (" face_flags" , &PyFT2Font_face_flags,
1617
- " Face flags; see the ft2font constants ." )
1725
+ " Face flags; see `.FaceFlags` ." )
1618
1726
.def_property_readonly (" style_flags" , &PyFT2Font_style_flags,
1619
- " Style flags; see the ft2font constants ." )
1727
+ " Style flags; see `.StyleFlags` ." )
1620
1728
.def_property_readonly (" num_glyphs" , &PyFT2Font_num_glyphs,
1621
1729
" Number of glyphs in the face." )
1622
1730
.def_property_readonly (" num_fixed_sizes" , &PyFT2Font_num_fixed_sizes,
@@ -1658,17 +1766,4 @@ PYBIND11_MODULE(ft2font, m)
1658
1766
m.attr (" __freetype_version__" ) = version_string;
1659
1767
m.attr (" __freetype_build_type__" ) = FREETYPE_BUILD_TYPE;
1660
1768
m.def (" __getattr__" , ft2font__getattr__);
1661
- m.attr (" SCALABLE" ) = FT_FACE_FLAG_SCALABLE;
1662
- m.attr (" FIXED_SIZES" ) = FT_FACE_FLAG_FIXED_SIZES;
1663
- m.attr (" FIXED_WIDTH" ) = FT_FACE_FLAG_FIXED_WIDTH;
1664
- m.attr (" SFNT" ) = FT_FACE_FLAG_SFNT;
1665
- m.attr (" HORIZONTAL" ) = FT_FACE_FLAG_HORIZONTAL;
1666
- m.attr (" VERTICAL" ) = FT_FACE_FLAG_VERTICAL;
1667
- m.attr (" KERNING" ) = FT_FACE_FLAG_KERNING;
1668
- m.attr (" FAST_GLYPHS" ) = FT_FACE_FLAG_FAST_GLYPHS;
1669
- m.attr (" MULTIPLE_MASTERS" ) = FT_FACE_FLAG_MULTIPLE_MASTERS;
1670
- m.attr (" GLYPH_NAMES" ) = FT_FACE_FLAG_GLYPH_NAMES;
1671
- m.attr (" EXTERNAL_STREAM" ) = FT_FACE_FLAG_EXTERNAL_STREAM;
1672
- m.attr (" ITALIC" ) = FT_STYLE_FLAG_ITALIC;
1673
- m.attr (" BOLD" ) = FT_STYLE_FLAG_BOLD;
1674
1769
}
0 commit comments