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
//! The [font header][1].
//!
//! [1]: https://learn.microsoft.com/en-us/typography/opentype/spec/head
use crate::number::q32;
table! {
#[doc = "A font header."]
#[derive(Copy)]
pub FontHeader {
major_version (u16 ) = { 1 }, // majorVersion
minor_version (u16 ) = { 0 }, // minorVersion
revision (q32 ), // fontRevision
checksum_adjustment (u32 ), // checkSumAdjustment
magic_number (u32 ) = { 0x5F0F3CF5 }, // MagicNumber
flags (Flags ), // flags
units_per_em (u16 ), // unitsPerEm
created (i64 ), // created
modified (i64 ), // modified
min_x (i16 ), // xMin
min_y (i16 ), // yMin
max_x (i16 ), // xMax
max_y (i16 ), // yMax
macintosh_flags (MacintoshFlags), // macStyle
lowest_ppem (u16 ), // lowestRecPPEM
direction_hint (i16 ), // fontDirectionHint
glyph_mapping_format (i16 ), // indexToLocFormat
glyph_data_format (i16 ), // glyphDataFormat
}
}
flags! {
#[doc = "Font-header flags."]
pub Flags(u16) {
0b0000_0000_0000_0001 => is_baseline_at_0,
0b0000_0000_0000_0010 => is_left_side_bearing_at_0,
0b1000_0000_0000_0000 => is_invalid,
}
}
flags! {
#[doc = "Macintosh style flags."]
pub MacintoshFlags(u16) {
0b0000_0000_0000_0001 => is_bold,
0b0000_0000_0000_0010 => is_italic,
0b0000_0000_0000_0100 => is_underline,
0b0000_0000_0000_1000 => is_outline,
0b0000_0000_0001_0000 => is_shadow,
0b0000_0000_0010_0000 => is_condensed,
0b0000_0000_0100_0000 => is_extended,
0b1111_1111_1000_0000 => is_invalid,
}
}