font/
lib.rs

1//! Builder and parser for fonts.
2//!
3//! # Example
4//!
5//! ```
6//! use font::glyph::Segment;
7//! use font::File;
8//!
9//! macro_rules! ok(($result:expr) => ($result.unwrap()));
10//!
11//! let path = "SourceSerifPro-Regular.otf";
12//! # let path = "tests/fixtures/SourceSerifPro-Regular.otf";
13//! let File { mut fonts } = ok!(File::open(path));
14//! let glyph = ok!(ok!(fonts[0].glyph('a')));
15//! for contour in glyph.iter() {
16//!     for segment in contour.iter() {
17//!         match segment {
18//!             &Segment::Linear(..) => { /* … */ },
19//!             &Segment::Quadratic(..) => { /* … */ },
20//!             &Segment::Cubic(..) => { /* … */ },
21//!         }
22//!     }
23//! }
24//! ```
25
26pub extern crate opentype;
27
28#[cfg(feature = "webtype")]
29pub extern crate webtype;
30
31#[macro_use(dereference, error, raise)]
32extern crate typeface;
33
34pub mod formats;
35pub mod glyph;
36
37mod file;
38mod font;
39mod metrics;
40mod offset;
41mod timestamps;
42
43pub use typeface::tape::{Read, Write};
44
45pub use self::file::File;
46pub use self::font::{Case, Font};
47pub use self::formats::opentype::axes::{self, Axes};
48pub use self::formats::opentype::characters::{self, Characters};
49pub use self::formats::opentype::features::{self, Directory as Features};
50pub use self::formats::opentype::names::Names;
51pub use self::formats::opentype::palettes::Palettes;
52pub use self::formats::opentype::tables::Tables;
53pub use self::glyph::Glyph;
54pub use self::metrics::Metrics;
55pub use self::offset::Offset;
56pub use self::timestamps::Timestamps;
57
58/// A number.
59pub type Number = f32;