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 解析器实现
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)
);
许可证
依赖项
~1.3–2.2MB
~46K SLoC