6 个版本

0.2.1 2023年3月25日
0.2.0 2023年3月19日
0.1.3 2023年3月9日
0.1.1 2023年2月26日

#2001 in 解析器实现

MIT 许可证

675KB
13K SLoC

smufl

解析 SMuFL (标准音乐字体布局) 元数据。

符合 SMuFL 标准的字体可以在其发行包中提供 JSON 格式的元数据文件。元数据文件允许设计者提供无法轻松(或在某些情况下根本无法)编码在或从字体软件本身获取的信息,包括如何绘制字体本身未直接提供的音乐符号元素(如谱线、小节线、弯头等)的建议,以及与字体设计相辅相成的样式,以及重要的字形特定度量,例如茎与音符头连接的确切坐标。

有关更多详细信息,请参阅 SMuFL 文档

此包支持 SMuFL 规范的 1.40 版

可以将字体元数据读取到 Metadata 结构中

use std::{fs::File, io::BufReader};

use smufl::{Glyph, Metadata, StaffSpaces};

let file = File::open("submodules/bravura/redist/bravura_metadata.json")?;
let reader = BufReader::new(file);
let metadata = Metadata::from_reader(reader)?;

assert_eq!(metadata.font_name, "Bravura");
assert_eq!(
    metadata.engraving_defaults.staff_line_thickness.unwrap(),
    StaffSpaces(0.13)
);
assert_eq!(
    metadata.advance_widths.get(Glyph::NoteheadWhole).unwrap(),
    StaffSpaces(1.688)
);
assert_eq!(
    metadata
        .anchors
        .get(Glyph::NoteheadBlack)
        .unwrap()
        .stem_up_se
        .unwrap()
        .x(),
    StaffSpaces(1.18)
);
assert_eq!(
    metadata
        .bounding_boxes
        .get(Glyph::NoteheadBlack)
        .unwrap()
        .ne
        .x(),
    StaffSpaces(1.18)
);

许可证

本项目使用 MIT 许可证。大部分文档文本取自 SMuFL 规范,如允许的 其许可证

依赖项

~1.3–2.2MB
~46K SLoC