#table #font #opentype #manipulating #version #reading #layout

fonttools

一个用于读取、操作和写入 OpenType 字体文件的库

1 个不稳定版本

0.1.0 2021年6月10日

#36 in #opentype


3 crates 使用

Apache-2.0

380KB
9K SLoC

fonttools-rs

这是尝试编写一个用于读取、操作和写入 TTF/OTF 文件的 Rust 库。它处于实验性开发的极早期阶段。欢迎贡献。


lib.rs:

一个用于解析、操作和写入 OpenType 字体的库

这是一个预发布版本;它不是功能完整的。 值得注意的是,它支持可变字体,但不支持 GPOS/GSUB(OpenType 布局)。

示例用法

use fonttools::font::{self, Font, Table};
use fonttools::name::{name, NameRecord, NameRecordID};

// Load a font (tables are lazy-loaded)
let fontfile = File::open("Test.otf").unwrap();
use std::fs::File;
let mut myfont = font::load(fontfile).expect("Could not load font");

// Access an existing table
if let Table::Name(name_table) = myfont.get_table(b"name")
        .expect("Error reading name table")
        .expect("There was no name table") {
    // Manipulate the table (table-specific)
        name_table.records.push(NameRecord::windows_unicode(
            NameRecordID::LicenseURL,
            "http://opensource.org/licenses/OFL-1.1"
        ));
}
let mut outfile = File::create("Test-with-OFL.otf").expect("Could not create file");
myfont.save(&mut outfile);

有关创建和操作每个特定 OpenType 表结构的详细信息,请参阅下面的模块。以 [font] 模块作为创建、解析和保存 OpenType 字体的入口点。

依赖项

~11–21MB
~273K SLoC