Registry / RepositoryTypeScriptRustPython
Rollpie
ReadmeFiles
Versions
Info
Download
0.2.3555.5 KB2026-10-160.2.2572.8 KB2026-10-150.2.1580.5 KB2026-10-150.2.0579.9 KB2026-09-150.1.1576.6 KB2026-09-12
Version
0.2.3
Copyright
Rollpie, Irohabook
Publisher
math
Published
2026-10-16
Size
555.5 KB
Downloads
26
Checksum
c6c938cc3641f85bee86c9360c2356581a4b1efb11333b9d97b3c5605c8bb71c
Dependencies
None

probe.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
38
39
40
41
42
use suki::font::{self};
use suki::{Mode, Shape};

fn main() {
    for path in std::env::args().skip(1) {
        println!("=== {path}");

        let data = match std::fs::read(&path) {
            Ok(data) => data,
            Err(reason) => {
                println!("  Cannot read: {reason}");
                continue;
            }
        };
        let font = match font::load(data) {
            Ok(font) => font,
            Err(reason) => {
                println!("  Cannot load: {reason}");
                continue;
            }
        };
        println!("  typeface {} / MATH {}", font::family(&font), font::has_math(&font));

        for character in ['x', '\u{1d465}', '2', '(', '\u{221a}'] {
            match font::glyph_of(&font, character) {
                Some(glyph) => {
                    let drawn = font::outline_of(&font, glyph);
                    println!(
                        "  {character:?} -> glyph {glyph} segments {} width {:.3}",
                        drawn.segment.len(),
                        font::advance(&font, glyph)
                    );
                }
                None => println!("  {character:?} -> no glyph"),
            }
        }

        let svg = suki::render_svg("x+2", &font, Mode::Display, Shape::Outline).unwrap();
        println!("  path {} / use {} / text {}",
            svg.matches("<path").count(), svg.matches("<use").count(), svg.matches("<text").count());
    }
}