@@ -1474,144 +1474,6 @@ PyFT2Font__get_type1_encoding_vector(PyFT2Font *self)
1474
1474
return indices;
1475
1475
}
1476
1476
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
-
1615
1477
static py::object
1616
1478
ft2font__getattr__ (std::string name) {
1617
1479
auto api = py::module_::import (" matplotlib._api" );
@@ -1798,50 +1660,104 @@ PYBIND11_MODULE(ft2font, m, py::mod_gil_not_used())
1798
1660
.def (" _get_type1_encoding_vector" , &PyFT2Font__get_type1_encoding_vector,
1799
1661
PyFT2Font__get_type1_encoding_vector__doc__)
1800
1662
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) {
10000
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." )
1845
1761
1846
1762
.def_buffer ([](PyFT2Font &self) -> py::buffer_info {
1847
1763
FT2Image &im = self.x ->get_image ();
0 commit comments