Struct Font
pub struct Font { /* private fields */ }
dep_fontdue
only.Expand description
Represents a font. Fonts are immutable after creation and owns its own copy of the font data.
Implementations§
§impl Font
impl Font
pub fn from_bytes<Data>(
data: Data,
settings: FontSettings,
) -> Result<Font, &'static str> ⓘ
pub fn from_bytes<Data>( data: Data, settings: FontSettings, ) -> Result<Font, &'static str> ⓘ
Constructs a font from an array of bytes.
pub fn name(&self) -> Option<&str> ⓘ
pub fn name(&self) -> Option<&str> ⓘ
Returns the font’s face name if it has one. It is from Name ID 4
(Full Name) in the name table.
See https://learn.microsoft.com/en-us/typography/opentype/spec/name#name-ids for more info.
pub fn chars(&self) -> &HashMap<char, NonZero<u16>>
pub fn chars(&self) -> &HashMap<char, NonZero<u16>>
Returns all valid unicode codepoints that have mappings to glyph geometry in the font, along with their associated index. This does not include grapheme cluster mappings. The mapped NonZeroU16 index can be used in the _indexed font functions.
pub fn horizontal_line_metrics(&self, px: f32) -> Option<LineMetrics> ⓘ
pub fn horizontal_line_metrics(&self, px: f32) -> Option<LineMetrics> ⓘ
New line metrics for fonts that append characters to lines horizontally, and append new lines vertically (above or below the current line). Only populated for fonts with the appropriate metrics, none if it’s missing.
§Arguments
px
- The size to scale the line metrics by. The units of the scale are pixels per Em unit.
pub fn vertical_line_metrics(&self, px: f32) -> Option<LineMetrics> ⓘ
pub fn vertical_line_metrics(&self, px: f32) -> Option<LineMetrics> ⓘ
New line metrics for fonts that append characters to lines vertically, and append new lines horizontally (left or right of the current line). Only populated for fonts with the appropriate metrics, none if it’s missing.
§Arguments
px
- The size to scale the line metrics by. The units of the scale are pixels per Em unit.
pub fn units_per_em(&self) -> f32
pub fn units_per_em(&self) -> f32
Gets the font’s units per em.
pub fn scale_factor(&self, px: f32) -> f32
pub fn scale_factor(&self, px: f32) -> f32
Calculates the glyph’s outline scale factor for a given px size. The units of the scale are pixels per Em unit.
pub fn horizontal_kern(&self, left: char, right: char, px: f32) -> Option<f32> ⓘ
pub fn horizontal_kern(&self, left: char, right: char, px: f32) -> Option<f32> ⓘ
Retrieves the horizontal scaled kerning value for two adjacent characters.
§Arguments
left
- The character on the left hand side of the pairing.right
- The character on the right hand side of the pairing.px
- The size to scale the kerning value for. The units of the scale are pixels per Em unit.
§Returns
Option<f32>
- The horizontal scaled kerning value if one is present in the font for the given left and right pair, None otherwise.
pub fn horizontal_kern_indexed(
&self,
left: u16,
right: u16,
px: f32,
) -> Option<f32> ⓘ
pub fn horizontal_kern_indexed( &self, left: u16, right: u16, px: f32, ) -> Option<f32> ⓘ
Retrieves the horizontal scaled kerning value for two adjacent glyph indicies.
§Arguments
left
- The glyph index on the left hand side of the pairing.right
- The glyph index on the right hand side of the pairing.px
- The size to scale the kerning value for. The units of the scale are pixels per Em unit.
§Returns
Option<f32>
- The horizontal scaled kerning value if one is present in the font for the given left and right pair, None otherwise.
pub fn metrics(&self, character: char, px: f32) -> Metrics
pub fn metrics(&self, character: char, px: f32) -> Metrics
Retrieves the layout metrics for the given character. If the character isn’t present in the font, then the layout for the font’s default character is returned instead.
§Arguments
index
- The character in the font to to generate the layout metrics for.px
- The size to generate the layout metrics for the character at. Cannot be negative. The units of the scale are pixels per Em unit.
§Returns
Metrics
- Sizing and positioning metadata for the glyph.
pub fn metrics_indexed(&self, index: u16, px: f32) -> Metrics
pub fn metrics_indexed(&self, index: u16, px: f32) -> Metrics
Retrieves the layout metrics at the given index. You normally want to be using metrics(char, f32) instead, unless your glyphs are pre-indexed.
§Arguments
index
- The glyph index in the font to to generate the layout metrics for.px
- The size to generate the layout metrics for the glyph at. Cannot be negative. The units of the scale are pixels per Em unit.
§Returns
Metrics
- Sizing and positioning metadata for the glyph.
pub fn rasterize_config(&self, config: GlyphRasterConfig) -> (Metrics, Vec<u8>) ⓘ
pub fn rasterize_config(&self, config: GlyphRasterConfig) -> (Metrics, Vec<u8>) ⓘ
Retrieves the layout rasterized bitmap for the given raster config. If the raster config’s character isn’t present in the font, then the layout and bitmap for the font’s default character’s raster is returned instead.
§Arguments
config
- The settings to render the character at.
§Returns
Metrics
- Sizing and positioning metadata for the rasterized glyph.Vec<u8>
- Coverage vector for the glyph. Coverage is a linear scale where 0 represents 0% coverage of that pixel by the glyph and 255 represents 100% coverage. The vec starts at the top left corner of the glyph.
pub fn rasterize(&self, character: char, px: f32) -> (Metrics, Vec<u8>) ⓘ
pub fn rasterize(&self, character: char, px: f32) -> (Metrics, Vec<u8>) ⓘ
Retrieves the layout metrics and rasterized bitmap for the given character. If the character isn’t present in the font, then the layout and bitmap for the font’s default character is returned instead.
§Arguments
character
- The character to rasterize.px
- The size to render the character at. Cannot be negative. The units of the scale are pixels per Em unit.
§Returns
Metrics
- Sizing and positioning metadata for the rasterized glyph.Vec<u8>
- Coverage vector for the glyph. Coverage is a linear scale where 0 represents 0% coverage of that pixel by the glyph and 255 represents 100% coverage. The vec starts at the top left corner of the glyph.
pub fn rasterize_config_subpixel(
&self,
config: GlyphRasterConfig,
) -> (Metrics, Vec<u8>) ⓘ
pub fn rasterize_config_subpixel( &self, config: GlyphRasterConfig, ) -> (Metrics, Vec<u8>) ⓘ
Retrieves the layout rasterized bitmap for the given raster config. If the raster config’s character isn’t present in the font, then the layout and bitmap for the font’s default character’s raster is returned instead.
This will perform the operation with the width multiplied by 3, as to simulate subpixels. Taking these as RGB values will perform subpixel anti aliasing.
§Arguments
config
- The settings to render the character at.
§Returns
Metrics
- Sizing and positioning metadata for the rasterized glyph.Vec<u8>
- Swizzled RGB coverage vector for the glyph. Coverage is a linear scale where 0 represents 0% coverage of that subpixel by the glyph and 255 represents 100% coverage. The vec starts at the top left corner of the glyph.
pub fn rasterize_subpixel(&self, character: char, px: f32) -> (Metrics, Vec<u8>) ⓘ
pub fn rasterize_subpixel(&self, character: char, px: f32) -> (Metrics, Vec<u8>) ⓘ
Retrieves the layout metrics and rasterized bitmap for the given character. If the character isn’t present in the font, then the layout and bitmap for the font’s default character is returned instead.
This will perform the operation with the width multiplied by 3, as to simulate subpixels. Taking these as RGB values will perform subpixel anti aliasing.
§Arguments
character
- The character to rasterize.px
- The size to render the character at. Cannot be negative. The units of the scale are pixels per Em unit.
§Returns
Metrics
- Sizing and positioning metadata for the rasterized glyph.Vec<u8>
- Swizzled RGB coverage vector for the glyph. Coverage is a linear scale where 0 represents 0% coverage of that subpixel by the glyph and 255 represents 100% coverage. The vec starts at the top left corner of the glyph.
pub fn rasterize_indexed(&self, index: u16, px: f32) -> (Metrics, Vec<u8>) ⓘ
pub fn rasterize_indexed(&self, index: u16, px: f32) -> (Metrics, Vec<u8>) ⓘ
Retrieves the layout metrics and rasterized bitmap at the given index. You normally want to be using rasterize(char, f32) instead, unless your glyphs are pre-indexed.
§Arguments
index
- The glyph index in the font to rasterize.px
- The size to render the character at. Cannot be negative. The units of the scale are pixels per Em unit.
§Returns
Metrics
- Sizing and positioning metadata for the rasterized glyph.Vec<u8>
- Coverage vector for the glyph. Coverage is a linear scale where 0 represents 0% coverage of that pixel by the glyph and 255 represents 100% coverage. The vec starts at the top left corner of the glyph.
pub fn rasterize_indexed_subpixel(
&self,
index: u16,
px: f32,
) -> (Metrics, Vec<u8>) ⓘ
pub fn rasterize_indexed_subpixel( &self, index: u16, px: f32, ) -> (Metrics, Vec<u8>) ⓘ
Retrieves the layout metrics and rasterized bitmap at the given index. You normally want to be using rasterize(char, f32) instead, unless your glyphs are pre-indexed.
This will perform the operation with the width multiplied by 3, as to simulate subpixels. Taking these as RGB values will perform subpixel anti aliasing.
§Arguments
index
- The glyph index in the font to rasterize.px
- The size to render the character at. Cannot be negative. The units of the scale are pixels per Em unit.
§Returns
Metrics
- Sizing and positioning metadata for the rasterized glyph.Vec<u8>
- Swizzled RGB coverage vector for the glyph. Coverage is a linear scale where 0 represents 0% coverage of that subpixel by the glyph and 255 represents 100% coverage. The vec starts at the top left corner of the glyph.
pub fn has_glyph(&self, character: char) -> bool
pub fn has_glyph(&self, character: char) -> bool
Checks if the font has a glyph for the given character.
pub fn lookup_glyph_index(&self, character: char) -> u16
pub fn lookup_glyph_index(&self, character: char) -> u16
Finds the internal glyph index for the given character. If the character is not present in the font then 0 is returned.
pub fn glyph_count(&self) -> u16
pub fn glyph_count(&self) -> u16
Gets the total glyphs in the font.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Font
impl RefUnwindSafe for Font
impl Send for Font
impl Sync for Font
impl Unpin for Font
impl UnwindSafe for Font
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize
fn byte_align(&self) -> usize
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64
fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64
TypeId
of Self
using a custom hasher.Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of<T>() -> usize
fn mem_align_of<T>() -> usize
Source§fn mem_align_of_val(&self) -> usize
fn mem_align_of_val(&self) -> usize
Source§fn mem_size_of<T>() -> usize
fn mem_size_of<T>() -> usize
Source§fn mem_size_of_val(&self) -> usize
fn mem_size_of_val(&self) -> usize
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more