pub trait Loader: Clone + Sized {
type NativeFont;
Show 29 methods
// Required methods
fn from_bytes(
font_data: Arc<Vec<u8>>,
font_index: u32,
) -> Result<Self, FontLoadingError>;
fn from_file(
file: &mut File,
font_index: u32,
) -> Result<Self, FontLoadingError>;
unsafe fn from_native_font(native_font: Self::NativeFont) -> Self;
fn analyze_bytes(
font_data: Arc<Vec<u8>>,
) -> Result<FileType, FontLoadingError>;
fn analyze_file(file: &mut File) -> Result<FileType, FontLoadingError>;
fn native_font(&self) -> Self::NativeFont;
fn postscript_name(&self) -> Option<String>;
fn full_name(&self) -> String;
fn family_name(&self) -> String;
fn is_monospace(&self) -> bool;
fn properties(&self) -> Properties;
fn glyph_count(&self) -> u32;
fn glyph_for_char(&self, character: char) -> Option<u32>;
fn outline<S>(
&self,
glyph_id: u32,
hinting_mode: HintingOptions,
sink: &mut S,
) -> Result<(), GlyphLoadingError>
where S: OutlineSink;
fn typographic_bounds(
&self,
glyph_id: u32,
) -> Result<RectF, GlyphLoadingError>;
fn advance(&self, glyph_id: u32) -> Result<Vector2F, GlyphLoadingError>;
fn origin(&self, glyph_id: u32) -> Result<Vector2F, GlyphLoadingError>;
fn metrics(&self) -> Metrics;
fn copy_font_data(&self) -> Option<Arc<Vec<u8>>>;
fn supports_hinting_options(
&self,
hinting_options: HintingOptions,
for_rasterization: bool,
) -> bool;
fn rasterize_glyph(
&self,
canvas: &mut Canvas,
glyph_id: u32,
point_size: f32,
transform: Transform2F,
hinting_options: HintingOptions,
rasterization_options: RasterizationOptions,
) -> Result<(), GlyphLoadingError>;
fn get_fallbacks(&self, text: &str, locale: &str) -> FallbackResult<Self>;
fn load_font_table(&self, table_tag: u32) -> Option<Box<[u8]>>;
// Provided methods
fn from_path<P>(path: P, font_index: u32) -> Result<Self, FontLoadingError>
where P: AsRef<Path> { ... }
fn from_handle(handle: &Handle) -> Result<Self, FontLoadingError> { ... }
fn analyze_path<P>(path: P) -> Result<FileType, FontLoadingError>
where P: AsRef<Path> { ... }
fn glyph_by_name(&self, _name: &str) -> Option<u32> { ... }
fn handle(&self) -> Option<Handle> { ... }
fn raster_bounds(
&self,
glyph_id: u32,
point_size: f32,
transform: Transform2F,
_: HintingOptions,
_: RasterizationOptions,
) -> Result<RectI, GlyphLoadingError> { ... }
}
Expand description
Provides a common interface to the platform-specific API that loads, parses, and rasterizes fonts.
Required Associated Types§
sourcetype NativeFont
type NativeFont
The handle that the API natively uses to represent a font.
Required Methods§
sourcefn from_bytes(
font_data: Arc<Vec<u8>>,
font_index: u32,
) -> Result<Self, FontLoadingError>
fn from_bytes( font_data: Arc<Vec<u8>>, font_index: u32, ) -> Result<Self, FontLoadingError>
Loads a font from raw font data (the contents of a .ttf
/.otf
/etc. file).
If the data represents a collection (.ttc
/.otc
/etc.), font_index
specifies the index
of the font to load from it. If the data represents a single font, pass 0 for font_index
.
sourcefn from_file(file: &mut File, font_index: u32) -> Result<Self, FontLoadingError>
fn from_file(file: &mut File, font_index: u32) -> Result<Self, FontLoadingError>
Loads a font from a .ttf
/.otf
/etc. file.
If the file is a collection (.ttc
/.otc
/etc.), font_index
specifies the index of the
font to load from it. If the file represents a single font, pass 0 for font_index
.
sourceunsafe fn from_native_font(native_font: Self::NativeFont) -> Self
unsafe fn from_native_font(native_font: Self::NativeFont) -> Self
Creates a font from a native API handle.
sourcefn analyze_bytes(font_data: Arc<Vec<u8>>) -> Result<FileType, FontLoadingError>
fn analyze_bytes(font_data: Arc<Vec<u8>>) -> Result<FileType, FontLoadingError>
Determines whether a blob of raw font data represents a supported font, and, if so, what type of font it is.
sourcefn analyze_file(file: &mut File) -> Result<FileType, FontLoadingError>
fn analyze_file(file: &mut File) -> Result<FileType, FontLoadingError>
Determines whether a file represents a supported font, and, if so, what type of font it is.
sourcefn native_font(&self) -> Self::NativeFont
fn native_font(&self) -> Self::NativeFont
Returns the wrapped native font handle.
sourcefn postscript_name(&self) -> Option<String>
fn postscript_name(&self) -> Option<String>
Returns the PostScript name of the font. This should be globally unique.
sourcefn full_name(&self) -> String
fn full_name(&self) -> String
Returns the full name of the font (also known as “display name” on macOS).
sourcefn family_name(&self) -> String
fn family_name(&self) -> String
Returns the name of the font family.
sourcefn is_monospace(&self) -> bool
fn is_monospace(&self) -> bool
Returns true if and only if the font is monospace (fixed-width).
sourcefn properties(&self) -> Properties
fn properties(&self) -> Properties
Returns the values of various font properties, corresponding to those defined in CSS.
sourcefn glyph_count(&self) -> u32
fn glyph_count(&self) -> u32
Returns the number of glyphs in the font.
Glyph IDs range from 0 inclusive to this value exclusive.
sourcefn glyph_for_char(&self, character: char) -> Option<u32>
fn glyph_for_char(&self, character: char) -> Option<u32>
Returns the usual glyph ID for a Unicode character.
Be careful with this function; typographically correct character-to-glyph mapping must be done using a shaper such as HarfBuzz. This function is only useful for best-effort simple use cases like “what does character X look like on its own”.
sourcefn outline<S>(
&self,
glyph_id: u32,
hinting_mode: HintingOptions,
sink: &mut S,
) -> Result<(), GlyphLoadingError>where
S: OutlineSink,
fn outline<S>(
&self,
glyph_id: u32,
hinting_mode: HintingOptions,
sink: &mut S,
) -> Result<(), GlyphLoadingError>where
S: OutlineSink,
Sends the vector path for a glyph to a sink.
If hinting_mode
is not None, this function performs grid-fitting as requested before
sending the hinding outlines to the builder.
TODO(pcwalton): What should we do for bitmap glyphs?
sourcefn typographic_bounds(&self, glyph_id: u32) -> Result<RectF, GlyphLoadingError>
fn typographic_bounds(&self, glyph_id: u32) -> Result<RectF, GlyphLoadingError>
Returns the boundaries of a glyph in font units. The origin of the coordinate space is at the bottom left.
sourcefn advance(&self, glyph_id: u32) -> Result<Vector2F, GlyphLoadingError>
fn advance(&self, glyph_id: u32) -> Result<Vector2F, GlyphLoadingError>
Returns the distance from the origin of the glyph with the given ID to the next, in font units.
sourcefn origin(&self, glyph_id: u32) -> Result<Vector2F, GlyphLoadingError>
fn origin(&self, glyph_id: u32) -> Result<Vector2F, GlyphLoadingError>
Returns the amount that the given glyph should be displaced from the origin.
sourcefn copy_font_data(&self) -> Option<Arc<Vec<u8>>>
fn copy_font_data(&self) -> Option<Arc<Vec<u8>>>
Attempts to return the raw font data (contents of the font file).
If this font is a member of a collection, this function returns the data for the entire collection.
sourcefn supports_hinting_options(
&self,
hinting_options: HintingOptions,
for_rasterization: bool,
) -> bool
fn supports_hinting_options( &self, hinting_options: HintingOptions, for_rasterization: bool, ) -> bool
Returns true if and only if the font loader can perform hinting in the requested way.
Some APIs support only rasterizing glyphs with hinting, not retrieving hinted outlines. If
for_rasterization
is false, this function returns true if and only if the loader supports
retrieval of hinted outlines. If for_rasterization
is true, this function returns true
if and only if the loader supports rasterizing hinted glyphs.
sourcefn rasterize_glyph(
&self,
canvas: &mut Canvas,
glyph_id: u32,
point_size: f32,
transform: Transform2F,
hinting_options: HintingOptions,
rasterization_options: RasterizationOptions,
) -> Result<(), GlyphLoadingError>
fn rasterize_glyph( &self, canvas: &mut Canvas, glyph_id: u32, point_size: f32, transform: Transform2F, hinting_options: HintingOptions, rasterization_options: RasterizationOptions, ) -> Result<(), GlyphLoadingError>
Rasterizes a glyph to a canvas with the given size and transform.
Format conversion will be performed if the canvas format does not match the rasterization options. For example, if bilevel (black and white) rendering is requested to an RGBA surface, this function will automatically convert the 1-bit raster image to the 32-bit format of the canvas. Note that this may result in a performance penalty, depending on the loader.
If hinting_options
is not None, the requested grid fitting is performed.
sourcefn get_fallbacks(&self, text: &str, locale: &str) -> FallbackResult<Self>
fn get_fallbacks(&self, text: &str, locale: &str) -> FallbackResult<Self>
Get font fallback results for the given text and locale.
The locale
argument is a language tag such as "en-US"
or "zh-Hans-CN"
.
Provided Methods§
sourcefn from_path<P>(path: P, font_index: u32) -> Result<Self, FontLoadingError>
fn from_path<P>(path: P, font_index: u32) -> Result<Self, FontLoadingError>
Loads a font from the path to a .ttf
/.otf
/etc. file.
If the file is a collection (.ttc
/.otc
/etc.), font_index
specifies the index of the
font to load from it. If the file represents a single font, pass 0 for font_index
.
sourcefn from_handle(handle: &Handle) -> Result<Self, FontLoadingError>
fn from_handle(handle: &Handle) -> Result<Self, FontLoadingError>
Loads the font pointed to by a handle.
sourcefn analyze_path<P>(path: P) -> Result<FileType, FontLoadingError>
fn analyze_path<P>(path: P) -> Result<FileType, FontLoadingError>
Determines whether a path points to a supported font, and, if so, what type of font it is.
sourcefn glyph_by_name(&self, _name: &str) -> Option<u32>
fn glyph_by_name(&self, _name: &str) -> Option<u32>
Returns the glyph ID for the specified glyph name.
sourcefn handle(&self) -> Option<Handle>
fn handle(&self) -> Option<Handle>
Returns a handle to this font, if possible.
This is useful if you want to open the font with a different loader.
sourcefn raster_bounds(
&self,
glyph_id: u32,
point_size: f32,
transform: Transform2F,
_: HintingOptions,
_: RasterizationOptions,
) -> Result<RectI, GlyphLoadingError>
fn raster_bounds( &self, glyph_id: u32, point_size: f32, transform: Transform2F, _: HintingOptions, _: RasterizationOptions, ) -> Result<RectI, GlyphLoadingError>
Returns the pixel boundaries that the glyph will take up when rendered using this loader’s
rasterizer at the given point_size
and transform
. The origin of the coordinate space is
at the top left.