//! 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
//! ```no_run
//! 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.
// pub mod GSUB;
/// The `avar` (Axis variations) table
/// The `cmap` (Character To Glyph Index Mapping) table
/// The main font object. Start here.
/// The `fvar` (Font variations) table
/// The `gasp` (Grid-fitting and Scan-conversion Procedure) table
/// The `glyf` (Glyf data) table
/// The `gvar` (Glyph variations) table
/// The `head` (Header) table
/// The `hhea` (Horizontal header) table
/// The `hmtx` (Horizontal metrics) table
/// OpenType Layout common tables
/// The `maxp` (Maximum profile) table
/// The `name` (Naming) table
/// The `OS/2` (OS/2 and Windows Metrics) table
/// OpenType Variations common tables
/// The `post` (PostScript) table
/// Useful utilities