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
//! 波括弧の部品と変種の墨の位置を測る
use suki::font;
use suki::outline::bounds;
fn main() {
let loaded = font::load(std::fs::read("font/latinmodern-math.otf").unwrap()).unwrap();
let units = font::units_per_em(&loaded);
let brace = font::glyph_of(&loaded, '\u{23de}').unwrap();
let growth = font::horizontal_growth(&loaded, brace).unwrap();
println!("変種");
for variant in &growth.variant {
show(&loaded, variant.glyph, units, variant.measure);
}
println!("部品");
for part in &growth.part {
show(&loaded, part.glyph, units, part.full_advance);
}
}
fn show(loaded: &suki::Font, glyph: u16, units: f64, measure: f64) {
let drawn = font::outline_of(loaded, glyph);
let (left, bottom, right, top) = bounds(&drawn);
println!(
" 字形 {glyph} 長さ {measure:.3} 送り {:.3} 墨 横 {:.3}..{:.3} 縦 {:.3}..{:.3} 線の太さ {:.3}",
font::advance(loaded, glyph),
left / units,
right / units,
bottom / units,
top / units,
(top - bottom) / units
);
}