Registry / RepositoryTypeScriptRustPython
Rollpie
ReadmeFiles
Versions
Info
Download
0.2.0579.9 KB2026-09-150.1.1576.6 KB2026-09-12
Version
0.1.1
Copyright
Rollpie, Irohabook
Publisher
math
Published
2026-09-12
Size
576.6 KB
Downloads
4
Checksum
8e0181e42f4abdc9f91c1ff48b058761bf1940be8d2d4747e5e74bd3014f4322
Dependencies
None

piece.rs

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
    );
}