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