1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use std::rc::Rc;

use opentype::truetype::{GlyphID, HorizontalMetrics};

use crate::Number;

pub struct Metrics {
    horizontal_metrics: Rc<HorizontalMetrics>,
}

impl Metrics {
    #[inline]
    pub fn new(horizontal_metrics: Rc<HorizontalMetrics>) -> Self {
        Metrics { horizontal_metrics }
    }

    #[inline]
    pub fn get(&self, glyph_id: GlyphID) -> (Number, Number) {
        let (advance_width, left_side_bearing) = self.horizontal_metrics.get(glyph_id);
        (advance_width.into(), left_side_bearing.into())
    }
}