Crates.io | glyph_brush_layout |
lib.rs | glyph_brush_layout |
version | 0.2.4 |
source | src |
created_at | 2018-09-01 19:53:23.392912 |
updated_at | 2024-06-22 11:47:16.701019 |
description | Text layout for ab_glyph |
homepage | |
repository | https://github.com/alexheretic/glyph-brush |
max_upload_size | |
id | 82545 |
size | 76,577 |
Text layout for ab_glyph.
use glyph_brush_layout::{ab_glyph::*, *};
let dejavu = FontRef::try_from_slice(include_bytes!("../../fonts/DejaVuSans.ttf"))?;
let garamond = FontRef::try_from_slice(include_bytes!("../../fonts/GaramondNo8-Reg.ttf"))?;
// Simple font mapping: FontId(0) -> deja vu sans, FontId(1) -> garamond
let fonts = &[dejavu, garamond];
// Layout "hello glyph_brush_layout" on an unbounded line with the second
// word suitably bigger, greener and serif-ier.
let glyphs = Layout::default().calculate_glyphs(
fonts,
&SectionGeometry {
screen_position: (150.0, 50.0),
..SectionGeometry::default()
},
&[
SectionText {
text: "hello ",
scale: PxScale::from(20.0),
font_id: FontId(0),
},
SectionText {
text: "glyph_brush_layout",
scale: PxScale::from(25.0),
font_id: FontId(1),
},
],
);
assert_eq!(glyphs.len(), 24);
let SectionGlyph { glyph, font_id, section_index, byte_index } = &glyphs[4];
assert_eq!(glyph.id, fonts[0].glyph_id('o'));
assert_eq!(*font_id, FontId(0));
assert_eq!(*section_index, 0);
assert_eq!(*byte_index, 4);
let SectionGlyph { glyph, font_id, section_index, byte_index } = &glyphs[14];
assert_eq!(glyph.id, fonts[1].glyph_id('u'));
assert_eq!(*font_id, FontId(1));
assert_eq!(*section_index, 1);
assert_eq!(*byte_index, 8);