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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
use ffi; use face::Face; #[derive(Copy, Clone)] pub struct TrueTypeOS2Table { raw: ffi::TT_OS2_Internal } impl TrueTypeOS2Table { #[cfg(any(target_os = "linux", target_os = "macos"))] 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 } } }