Expand description
Parsable representation of ordered glyph tokens for raster font atlases.
An OrdTokenLayout layout string is a series of Token expressions, parsed left to right.
The position of a token in the layout determines its AtlasIndex in a raster font atlas. The
size of the glyph is dependent on the font’s PackingMode.
§Relationship to Tokens and Sequences
Layouts, tokens, and sequences may appear similar in string form, but they represent different concepts:
- Layout: An ordered list of tokens that define the structure of a font atlas.
- Token: A set of one or more sequences that resolve to one glyph.
- Sequence: An ordered list of chars that form one valid input pattern.
Attempting to parse a layout string as a Token will fail, since a token
cannot contain multiple tokens.
See the token module documentation for more information about tokens and sequences.
§Examples
Parsing a simple layout string:
use raster_font::core::OrdTokenLayout;
let layout = OrdTokenLayout::parse("abc");
let unique = layout.unique();
assert_eq!(unique.num_regions, 3);
assert_eq!(unique.sequences.len(), 3);
let mut token_iter = layout.iter_tokens();
assert_eq!(token_iter.next(), Some(&Token::from(Sequence::from('a'))));
assert_eq!(token_iter.next(), Some(&Token::from(Sequence::from('b'))));
assert_eq!(token_iter.next(), Some(&Token::from(Sequence::from('c'))));
assert_eq!(token_iter.next(), None);Union tokens allow alternate input patterns for a single glyph slot:
use raster_font::core::OrdTokenLayout;
// One glyph slot that accepts either "Hello" or "hello", followed by a "!" slot.
let layout = OrdTokenLayout::parse("$(Hello|hello)!");
let unique = layout.unique();
assert_eq!(unique.num_regions, 1);
assert_eq!(unique.sequences.len(), 2);
let mut token_iter = layout.iter_tokens();
assert_eq!(
token_iter.next(),
Some(&Token::from(vec![
Sequence::from("Hello"),
Sequence::from("hello")
]))
);
assert_eq!(token_iter.next(), Some(&Token::from(Sequence::from('!'))));
assert_eq!(token_iter.next(), None);§Serialization
OrdTokenLayout implements Serialize and Deserialize, round-tripping through
its layout string representation. It also implements Display and FromStr for
convenient string conversion.
Structs§
- OrdToken
Layout - An ordered sequence of font tokens, commonly parsed from a layout string.