webtype/
lib.rs

1//! Parser for fonts in Web Open Font Format.
2//!
3//! ## Example
4//!
5//! ```
6//! use webtype::opentype::truetype::tables::FontHeader;
7//! use webtype::File;
8//!
9//! macro_rules! ok(($result:expr) => ($result.unwrap()));
10//!
11//! let path = "NotoNaskhArabic-Regular.woff2";
12//! # let path = "tests/fixtures/NotoNaskhArabic-Regular.woff2";
13//! let mut tape = ok!(std::fs::File::open(path));
14//! let File { mut fonts, mut tape } = ok!(File::read(&mut tape));
15//!
16//! let font_header = ok!(ok!(fonts[0].take::<_, FontHeader>(&mut tape)));
17//! assert_eq!(font_header.units_per_em, 2048);
18//! ```
19
20pub extern crate opentype;
21
22#[macro_use(dereference, error, raise, table)]
23extern crate typeface;
24
25pub mod version1;
26pub mod version2;
27
28mod file;
29mod number;
30
31pub use opentype::Font;
32pub use typeface::{tape, value, walue, Error, Result};
33
34pub use file::File;
35pub use number::v32;
36
37/// Check if a tag is recognized.
38#[inline]
39pub fn accept(tag: &opentype::truetype::Tag) -> bool {
40    matches!(&tag.0, b"wOFF" | b"wOF2")
41}