Crate fonttools[][src]

Expand description

A library for parsing, manipulating and writing OpenType fonts

This is a prerelease version; it is not feature complete. Notably, variable fonts are supported, but GPOS/GSUB (OpenType Layout) is not.

Example usage

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

For information about creating and manipulating structures for each specific OpenType table, see the modules below. See the font module as the entry point to creating, parsing and saving an OpenType font.

Modules

avar

The avar (Axis variations) table

cmap

The cmap (Character To Glyph Index Mapping) table

font

The main font object. Start here.

fvar

The fvar (Font variations) table

gasp

The gasp (Grid-fitting and Scan-conversion Procedure) table

glyf

The glyf (Glyf data) table

gvar

The gvar (Glyph variations) table

head

The head (Header) table

hhea

The hhea (Horizontal header) table

hmtx

The hmtx (Horizontal metrics) table

layout

OpenType Layout common tables

maxp

The maxp (Maximum profile) table

name

The name (Naming) table

os2

The OS/2 (OS/2 and Windows Metrics) table

otvar

OpenType Variations common tables

post

The post (PostScript) table

utils

Useful utilities