freetype/
tt_os2.rs

1use face::Face;
2use ffi;
3
4#[derive(Copy, Clone)]
5pub struct TrueTypeOS2Table {
6    raw: ffi::TT_OS2_Internal
7}
8
9impl TrueTypeOS2Table {
10    pub fn from_face(face: &mut Face) -> Option<Self> {
11        unsafe {
12            let os2 = ffi::FT_Get_Sfnt_Table(face.raw_mut() as *mut ffi::FT_FaceRec, ffi::ft_sfnt_os2) as ffi::TT_OS2_Internal;
13            if !os2.is_null() && (*os2).version != 0xffff {
14                Some(TrueTypeOS2Table { raw: os2 })
15            } else {
16                None
17            }
18        }
19    }
20
21    #[inline(always)]
22    pub fn version(self) -> ffi::FT_UShort {
23        unsafe { (*self.raw).version }
24    }
25
26    #[inline(always)]
27    pub fn avg_char_width(self) -> ffi::FT_Short {
28        unsafe { (*self.raw).xAvgCharWidth }
29    }
30
31    #[inline(always)]
32    pub fn us_weight_class(self) -> ffi::FT_UShort {
33        unsafe { (*self.raw).usWeightClass }
34    }
35
36    #[inline(always)]
37    pub fn us_width_class(self) -> ffi::FT_UShort {
38        unsafe { (*self.raw).usWidthClass }
39    }
40
41    #[inline(always)]
42    pub fn fs_type(self) -> ffi::FT_Short {
43        unsafe { (*self.raw).fsType }
44    }
45
46    #[inline(always)]
47    pub fn y_subscript_x_size(self) -> ffi::FT_Short {
48        unsafe { (*self.raw).ySubscriptXSize }
49    }
50
51    #[inline(always)]
52    pub fn y_subscript_y_size(self) -> ffi::FT_Short {
53        unsafe { (*self.raw).ySubscriptYSize }
54    }
55
56    #[inline(always)]
57    pub fn y_subscript_x_offset(self) -> ffi::FT_Short {
58        unsafe { (*self.raw).ySubscriptXOffset }
59    }
60
61    #[inline(always)]
62    pub fn y_subscript_y_offset(self) -> ffi::FT_Short {
63        unsafe { (*self.raw).ySubscriptYOffset }
64    }
65
66    #[inline(always)]
67    pub fn y_superscript_x_size(self) -> ffi::FT_Short {
68        unsafe { (*self.raw).ySuperscriptXSize }
69    }
70
71    #[inline(always)]
72    pub fn y_superscript_y_size(self) -> ffi::FT_Short {
73        unsafe { (*self.raw).ySuperscriptYSize }
74    }
75
76    #[inline(always)]
77    pub fn y_superscript_x_offset(self) -> ffi::FT_Short {
78        unsafe { (*self.raw).ySuperscriptXOffset }
79    }
80
81    #[inline(always)]
82    pub fn y_superscript_y_offset(self) -> ffi::FT_Short {
83        unsafe { (*self.raw).ySuperscriptYOffset }
84    }
85
86    #[inline(always)]
87    pub fn y_strikeout_size(self) -> ffi::FT_Short {
88        unsafe { (*self.raw).yStrikeoutSize }
89    }
90
91    #[inline(always)]
92    pub fn y_strikeout_position(self) -> ffi::FT_Short {
93        unsafe { (*self.raw).yStrikeoutPosition }
94    }
95
96    #[inline(always)]
97    pub fn s_family_class(self) -> ffi::FT_Short {
98        unsafe { (*self.raw).sFamilyClass }
99    }
100
101    #[inline(always)]
102    pub fn x_height(self) -> ffi::FT_Short {
103        unsafe { (*self.raw).sxHeight }
104    }
105}