@@ -1474,144 +1474,6 @@ PyFT2Font__get_type1_encoding_vector(PyFT2Font *self)
14741474 return indices;
14751475}
14761476
1477- static const char *
1478- PyFT2Font_postscript_name (PyFT2Font *self)
1479- {
1480- const char *ps_name = FT_Get_Postscript_Name (self->x ->get_face ());
1481- if (ps_name == nullptr ) {
1482- ps_name = " UNAVAILABLE" ;
1483- }
1484-
1485- return ps_name;
1486- }
1487-
1488- static FT_Long
1489- PyFT2Font_num_faces (PyFT2Font *self)
1490- {
1491- return self->x ->get_face ()->num_faces ;
1492- }
1493-
1494- static const char *
1495- PyFT2Font_family_name (PyFT2Font *self)
1496- {
1497- const char *name = self->x ->get_face ()->family_name ;
1498- if (name == nullptr ) {
1499- name = " UNAVAILABLE" ;
1500- }
1501- return name;
1502- }
1503-
1504- static const char *
1505- PyFT2Font_style_name (PyFT2Font *self)
1506- {
1507- const char *name = self->x ->get_face ()->style_name ;
1508- if (name == nullptr ) {
1509- name = " UNAVAILABLE" ;
1510- }
1511- return name;
1512- }
1513-
1514- static FaceFlags
1515- PyFT2Font_face_flags (PyFT2Font *self)
1516- {
1517- return static_cast <FaceFlags>(self->x ->get_face ()->face_flags );
1518- }
1519-
1520- static StyleFlags
1521- PyFT2Font_style_flags (PyFT2Font *self)
1522- {
1523- return static_cast <StyleFlags>(self->x ->get_face ()->style_flags & 0xffff );
1524- }
1525-
1526- static FT_Long
1527- PyFT2Font_num_named_instances (PyFT2Font *self)
1528- {
1529- return (self->x ->get_face ()->style_flags & 0x7fff0000 ) >> 16 ;
1530- }
1531-
1532- static FT_Long
1533- PyFT2Font_num_glyphs (PyFT2Font *self)
1534- {
1535- return self->x ->get_face ()->num_glyphs ;
1536- }
1537-
1538- static FT_Int
1539- PyFT2Font_num_fixed_sizes (PyFT2Font *self)
1540- {
1541- return self->x ->get_face ()->num_fixed_sizes ;
1542- }
1543-
1544- static FT_Int
1545- PyFT2Font_num_charmaps (PyFT2Font *self)
1546- {
1547- return self->x ->get_face ()->num_charmaps ;
1548- }
1549-
1550- static bool
1551- PyFT2Font_scalable (PyFT2Font *self)
1552- {
1553- if (FT_IS_SCALABLE (self->x ->get_face ())) {
1554- return true ;
1555- }
1556- return false ;
1557- }
1558-
1559- static FT_UShort
1560- PyFT2Font_units_per_EM (PyFT2Font *self)
1561- {
1562- return self->x ->get_face ()->units_per_EM ;
1563- }
1564-
1565- static py::tuple
1566- PyFT2Font_get_bbox (PyFT2Font *self)
1567- {
1568- FT_BBox *bbox = &(self->x ->get_face ()->bbox );
1569-
1570- return py::make_tuple (bbox->xMin , bbox->yMin , bbox->xMax , bbox->yMax );
1571- }
1572-
1573- static FT_Short
1574- PyFT2Font_ascender (PyFT2Font *self)
1575- {
1576- return self->x ->get_face ()->ascender ;
1577- }
1578-
1579- static FT_Short
1580- PyFT2Font_descender (PyFT2Font *self)
1581- {
1582- return self->x ->get_face ()->descender ;
1583- }
1584-
1585- static FT_Short
1586- PyFT2Font_height (PyFT2Font *self)
1587- {
1588- return self->x ->get_face ()->height ;
1589- }
1590-
1591- static FT_Short
1592- PyFT2Font_max_advance_width (PyFT2Font *self)
1593- {
1594- return self->x ->get_face ()->max_advance_width ;
1595- }
1596-
1597- static FT_Short
1598- PyFT2Font_max_advance_height (PyFT2Font *self)
1599- {
1600- return self->x ->get_face ()->max_advance_height ;
1601- }
1602-
1603- static FT_Short
1604- PyFT2Font_underline_position (PyFT2Font *self)
1605- {
1606- return self->x ->get_face ()->underline_position ;
1607- }
1608-
1609- static FT_Short
1610- PyFT2Font_underline_thickness (PyFT2Font *self)
1611- {
1612- return self->x ->get_face ()->underline_thickness ;
1613- }
1614-
16151477static py::object
16161478ft2font__getattr__ (std::string name) {
16171479 auto api = py::module_::import (" matplotlib._api" );
@@ -1798,50 +1660,104 @@ PYBIND11_MODULE(ft2font, m, py::mod_gil_not_used())
17981660 .def (" _get_type1_encoding_vector" , &PyFT2Font__get_type1_encoding_vector,
17991661 PyFT2Font__get_type1_encoding_vector__doc__)
18001662
1801- .def_property_readonly (" postscript_name" , &PyFT2Font_postscript_name,
1802- " PostScript name of the font." )
1803- .def_property_readonly (" num_faces" , &PyFT2Font_num_faces,
1804- " Number of faces in file." )
1805- .def_property_readonly (" family_name" , &PyFT2Font_family_name,
1806- " Face family name." )
1807- .def_property_readonly (" style_name" , &PyFT2Font_style_name,
1808- " Style name." )
1809- .def_property_readonly (" face_flags" , &PyFT2Font_face_flags,
1810- " Face flags; see `.FaceFlags`." )
1811- .def_property_readonly (" style_flags" , &PyFT2Font_style_flags,
1812- " Style flags; see `.StyleFlags`." )
1813- .def_property_readonly (" num_named_instances" , &PyFT2Font_num_named_instances,
1814- " Number of named instances in the face." )
1815- .def_property_readonly (" num_glyphs" , &PyFT2Font_num_glyphs,
1816- " Number of glyphs in the face." )
1817- .def_property_readonly (" num_fixed_sizes" , &PyFT2Font_num_fixed_sizes,
1818- " Number of bitmap in the face." )
1819- .def_property_readonly (" num_charmaps" , &PyFT2Font_num_charmaps,
1820- " Number of charmaps in the face." )
1821- .def_property_readonly (" scalable" , &PyFT2Font_scalable,
1822- " Whether face is scalable; attributes after this one "
1823- " are only defined for scalable faces." )
1824- .def_property_readonly (" units_per_EM" , &PyFT2Font_units_per_EM,
1825- " Number of font units covered by the EM." )
1826- .def_property_readonly (" bbox" , &PyFT2Font_get_bbox,
1827- " Face global bounding box (xmin, ymin, xmax, ymax)." )
1828- .def_property_readonly (" ascender" , &PyFT2Font_ascender,
1829- " Ascender in 26.6 units." )
1830- .def_property_readonly (" descender" , &PyFT2Font_descender,
1831- " Descender in 26.6 units." )
1832- .def_property_readonly (" height" , &PyFT2Font_height,
1833- " Height in 26.6 units; used to compute a default line "
1834- " spacing (baseline-to-baseline distance)." )
1835- .def_property_readonly (" max_advance_width" , &PyFT2Font_max_advance_width,
1836- " Maximum horizontal cursor advance for all glyphs." )
1837- .def_property_readonly (" max_advance_height" , &PyFT2Font_max_advance_height,
1838- " Maximum vertical cursor advance for all glyphs." )
1839- .def_property_readonly (" underline_position" , &PyFT2Font_underline_position,
1840- " Vertical position of the underline bar." )
1841- .def_property_readonly (" underline_thickness" , &PyFT2Font_underline_thickness,
1842- " Thickness of the underline bar." )
1843- .def_property_readonly (" fname" , &PyFT2Font_fname,
1844- " The original filename for this object." )
1663+ .def_property_readonly (
1664+ " postscript_name" , [](PyFT2Font *self) {
1665+ if (const char *name = FT_Get_Postscript_Name (self->x ->get_face ())) {
1666+ return name;
1667+ } else {
1668+ return " UNAVAILABLE" ;
1669+ }
1670+ }, " PostScript name of the font." )
1671+ .def_property_readonly (
1672+ " num_faces" , [](PyFT2Font *self) {
1673+ return self->x ->get_face ()->num_faces ;
1674+ }, " Number of faces in file." )
1675+ .def_property_readonly (
1676+ " family_name" , [](PyFT2Font *self) {
1677+ if (const char *name = self->x ->get_face ()->family_name ) {
1678+ return name;
1679+ } else {
1680+ return " UNAVAILABLE" ;
1681+ }
1682+ }, " Face family name." )
1683+ .def_property_readonly (
1684+ " style_name" , [](PyFT2Font *self) {
1685+ if (const char *name = self->x ->get_face ()->style_name ) {
1686+ return name;
1687+ } else {
1688+ return " UNAVAILABLE" ;
1689+ }
1690+ }, " Style name." )
1691+ .def_property_readonly (
1692+ " face_flags" , [](PyFT2Font *self) {
1693+ return static_cast <FaceFlags>(self->x ->get_face ()->face_flags );
1694+ }, " Face flags; see `.FaceFlags`." )
1695+ .def_property_readonly (
1696+ " style_flags" , [](PyFT2Font *self) {
1697+ return static_cast <StyleFlags>(self->x ->get_face ()->style_flags & 0xffff );
1698+ }, " Style flags; see `.StyleFlags`." )
1699+ .def_property_readonly (
1700+ " num_named_instances" , [](PyFT2Font *self) {
1701+ return (self->x ->get_face ()->style_flags & 0x7fff0000 ) >> 16 ;
1702+ }, " Number of named instances in the face." )
1703+ .def_property_readonly (
1704+ " num_glyphs" , [](PyFT2Font *self) {
1705+ return self->x ->get_face ()->num_glyphs ;
1706+ }, " Number of glyphs in the face." )
1707+ .def_property_readonly (
1708+ " num_fixed_sizes" , [](PyFT2Font *self) {
1709+ return self->x ->get_face ()->num_fixed_sizes ;
1710+ }, " Number of bitmap in the face." )
1711+ .def_property_readonly (
1712+ " num_charmaps" , [](PyFT2Font *self) {
1713+ return self->x ->get_face ()->num_charmaps ;
1714+ }, " Number of charmaps in the face." )
1715+ .def_property_readonly (
1716+ " scalable" , [](PyFT2Font *self) {
1717+ return bool (FT_IS_SCALABLE (self->x ->get_face ()));
1718+ }, " Whether face is scalable; attributes after this one "
1719+ " are only defined for scalable faces." )
1720+ .def_property_readonly (
1721+ " units_per_EM" , [](PyFT2Font *self) {
1722+ return self->x ->get_face ()->units_per_EM ;
1723+ }, " Number of font units covered by the EM." )
1724+ .def_property_readonly (
1725+ " bbox" , [](PyFT2Font *self) {
1726+ FT_BBox bbox = self->x ->get_face ()->bbox ;
1727+ return py::make_tuple (bbox.xMin , bbox.yMin , bbox.xMax , bbox.yMax );
1728+ }, " Face global bounding box (xmin, ymin, xmax, ymax)." )
1729+ .def_property_readonly (
1730+ " ascender" , [](PyFT2Font *self) {
1731+ return self->x ->get_face ()->ascender ;
1732+ }, " Ascender in 26.6 units." )
1733+ .def_property_readonly (
1734+ " descender" , [](PyFT2Font *self) {
1735+ return self->x ->get_face ()->descender ;
1736+ }, " Descender in 26.6 units." )
1737+ .def_property_readonly (
1738+ " height" , [](PyFT2Font *self) {
1739+ return self->x ->get_face ()->height ;
1740+ }, " Height in 26.6 units; used to compute a default line spacing "
1741+ " (baseline-to-baseline distance)." )
1742+ .def_property_readonly (
1743+ " max_advance_width" , [](PyFT2Font *self) {
1744+ return self->x ->get_face ()->max_advance_width ;
1745+ }, " Maximum horizontal cursor advance for all glyphs." )
1746+ .def_property_readonly (
1747+ " max_advance_height" , [](PyFT2Font *self) {
1748+ return self->x ->get_face ()->max_advance_height ;
1749+ }, " Maximum vertical cursor advance for all glyphs." )
1750+ .def_property_readonly (
1751+ " underline_position" , [](PyFT2Font *self) {
1752+ return self->x ->get_face ()->underline_position ;
1753+ }, " Vertical position of the underline bar." )
1754+ .def_property_readonly (
1755+ " underline_thickness" , [](PyFT2Font *self) {
1756+ return self->x ->get_face ()->underline_thickness ;
1757+ }, " Thickness of the underline bar." )
1758+ .def_property_readonly (
1759+ " fname" , &PyFT2Font_fname,
1760+ " The original filename for this object." )
18451761
18461762 .def_buffer ([](PyFT2Font &self) -> py::buffer_info {
18471763 FT2Image &im = self.x ->get_image ();
0 commit comments