pub trait ScaleFont<F: Font> {
Show 20 methods fn scale(&self) -> PxScale;
fn font(&self) -> &F;
fn codepoint_ids(&self) -> CodepointIdIter<'_>Notable traits for CodepointIdIter<'a>impl<'a> Iterator for CodepointIdIter<'a> type Item = (GlyphId, char);; fn h_scale_factor(&self) -> f32 { ... }
fn v_scale_factor(&self) -> f32 { ... }
fn scale_factor(&self) -> PxScaleFactor { ... }
fn ascent(&self) -> f32 { ... }
fn descent(&self) -> f32 { ... }
fn height(&self) -> f32 { ... }
fn line_gap(&self) -> f32 { ... }
fn glyph_id(&self, c: char) -> GlyphId { ... }
fn scaled_glyph(&self, c: char) -> Glyph { ... }
fn h_advance(&self, id: GlyphId) -> f32 { ... }
fn h_side_bearing(&self, id: GlyphId) -> f32 { ... }
fn v_advance(&self, id: GlyphId) -> f32 { ... }
fn v_side_bearing(&self, id: GlyphId) -> f32 { ... }
fn kern(&self, first: GlyphId, second: GlyphId) -> f32 { ... }
fn glyph_bounds(&self, glyph: &Glyph) -> Rect { ... }
fn glyph_count(&self) -> usize { ... }
fn outline_glyph(&self, glyph: Glyph) -> Option<OutlinedGlyph> { ... }
}
Expand description

A Font with an associated pixel scale. This can be used to provide pixel scale values for glyph advances, heights etc.

Example

use ab_glyph::{Font, FontRef, PxScale, ScaleFont};

let font = FontRef::try_from_slice(include_bytes!("../../dev/fonts/Exo2-Light.otf"))?;

// Associate the font with a scale of 45px
let scaled_font = font.as_scaled(PxScale::from(45.0));

assert_eq!(scaled_font.height(), 45.0);
assert_eq!(scaled_font.h_advance(scaled_font.glyph_id('b')), 21.225);

// Replace associated scale with another
let scaled_font = scaled_font.with_scale(180.0);

assert_eq!(scaled_font.height(), 180.0);
assert_eq!(scaled_font.h_advance(scaled_font.glyph_id('b')), 84.9);

Required methods

Returns the pixel scale associated with this font.

Returns a font reference.

Returns an iterator of all distinct (GlyphId, char) pairs. Not ordered.

Same as Font::codepoint_ids.

Provided methods

Scale factor for unscaled font horizontal values.

Scale factor for unscaled font vertical values.

Pixel scaled glyph ascent.

Pixel scaled glyph descent.

Pixel scaled height ascent - descent.

By definition of PxScale, this is self.scale().y.

Pixel scaled line gap.

Lookup a GlyphId matching a given char.

Construct a Glyph with the font’s pixel scale at position point(0.0, 0.0).

Example
let scaled_font = font.as_scaled(50.0);

let a1 = scaled_font.scaled_glyph('a');
let a2 = font.glyph_id('a').with_scale(50.0); // equivalent

assert_eq!(a1.scale, PxScale::from(50.0));
assert_eq!(a1.position, point(0.0, 0.0));

Pixel scaled horizontal advance for a given glyph.

Pixel scaled horizontal side bearing for a given glyph.

Pixel scaled vertical advance for a given glyph.

Pixel scaled vertical side bearing for a given glyph.

Returns additional pixel scaled kerning to apply for a particular pair of glyphs.

Returns the layout bounds of this glyph. These are different to the outline px_bounds().

Horizontally: Glyph position +/- h_advance/h_side_bearing. Vertically: Glyph position +/- ascent/descent.

Note this method does not make use of the associated scale, as Glyph already includes one of it’s own.

The number of glyphs present in this font. Glyph identifiers for this font will always be in the range 0..self.glyph_count()

Compute glyph outline ready for drawing.

Note this method does not make use of the associated scale, as Glyph already includes one of it’s own.

Implementations on Foreign Types

Implementors