ttf_parser/tables/
vhea.rs

1//! A [Vertical Header Table](
2//! https://docs.microsoft.com/en-us/typography/opentype/spec/vhea) implementation.
3
4use crate::parser::Stream;
5
6/// A [Vertical Header Table](https://docs.microsoft.com/en-us/typography/opentype/spec/vhea).
7#[derive(Clone, Copy, Default, Debug)]
8pub struct Table {
9    /// Face ascender.
10    pub ascender: i16,
11    /// Face descender.
12    pub descender: i16,
13    /// Face line gap.
14    pub line_gap: i16,
15    /// Number of metrics in the `vmtx` table.
16    pub number_of_metrics: u16,
17}
18
19impl Table {
20    /// Parses a table from raw data.
21    pub fn parse(data: &[u8]) -> Option<Self> {
22        if data.len() != 36 {
23            return None
24        }
25
26        let mut s = Stream::new(data);
27        s.skip::<u32>(); // version
28        let ascender = s.read::<i16>()?;
29        let descender = s.read::<i16>()?;
30        let line_gap = s.read::<i16>()?;
31        s.advance(24);
32        let number_of_metrics = s.read::<u16>()?;
33
34        Some(Table {
35            ascender,
36            descender,
37            line_gap,
38            number_of_metrics,
39        })
40    }
41}