[][src]Trait font_kit::loader::Loader

pub trait Loader: Clone + Sized {
    type NativeFont;
    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<B>(
        &self,
        glyph_id: u32,
        hinting_mode: HintingOptions,
        path_builder: &mut B
    ) -> Result<(), GlyphLoadingError>
    where
        B: PathBuilder
;
fn typographic_bounds(
        &self,
        glyph_id: u32
    ) -> Result<Rect<f32>, GlyphLoadingError>;
fn advance(&self, glyph_id: u32) -> Result<Vector2D<f32>, GlyphLoadingError>;
fn origin(&self, glyph_id: u32) -> Result<Point2D<f32>, 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: &FontTransform,
        origin: &Point2D<f32>,
        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]>>; 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: &FontTransform,
        origin: &Point2D<f32>,
        _: HintingOptions,
        _: RasterizationOptions
    ) -> Result<Rect<i32>, GlyphLoadingError> { ... } }

Provides a common interface to the platform-specific API that loads, parses, and rasterizes fonts.

Associated Types

type NativeFont

The handle that the API natively uses to represent a font.

Loading content...

Required methods

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.

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.

unsafe fn from_native_font(native_font: Self::NativeFont) -> Self

Creates a font from a native API handle.

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.

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.

fn native_font(&self) -> Self::NativeFont

Returns the wrapped native font handle.

fn postscript_name(&self) -> Option<String>

Returns the PostScript name of the font. This should be globally unique.

fn full_name(&self) -> String

Returns the full name of the font (also known as "display name" on macOS).

fn family_name(&self) -> String

Returns the name of the font family.

fn is_monospace(&self) -> bool

Returns true if and only if the font is monospace (fixed-width).

fn properties(&self) -> Properties

Returns the values of various font properties, corresponding to those defined in CSS.

fn glyph_count(&self) -> u32

Returns the number of glyphs in the font.

Glyph IDs range from 0 inclusive to this value exclusive.

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".

fn outline<B>(
    &self,
    glyph_id: u32,
    hinting_mode: HintingOptions,
    path_builder: &mut B
) -> Result<(), GlyphLoadingError> where
    B: PathBuilder

Sends the vector path for a glyph to a path builder.

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?

fn typographic_bounds(
    &self,
    glyph_id: u32
) -> Result<Rect<f32>, GlyphLoadingError>

Returns the boundaries of a glyph in font units. The origin of the coordinate space is at the bottom left.

fn advance(&self, glyph_id: u32) -> Result<Vector2D<f32>, GlyphLoadingError>

Returns the distance from the origin of the glyph with the given ID to the next, in font units.

fn origin(&self, glyph_id: u32) -> Result<Point2D<f32>, GlyphLoadingError>

Returns the amount that the given glyph should be displaced from the origin.

fn metrics(&self) -> Metrics

Retrieves various metrics that apply to the entire font.

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.

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 retriving 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.

fn rasterize_glyph(
    &self,
    canvas: &mut Canvas,
    glyph_id: u32,
    point_size: f32,
    transform: &FontTransform,
    origin: &Point2D<f32>,
    hinting_options: HintingOptions,
    rasterization_options: RasterizationOptions
) -> Result<(), GlyphLoadingError>

Rasterizes a glyph to a canvas with the given size and origin.

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. origin is not transformed by transform.

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".

fn load_font_table(&self, table_tag: u32) -> Option<Box<[u8]>>

Returns the OpenType font table with the given tag, if the table exists.

Loading content...

Provided methods

fn from_path<P>(path: P, font_index: u32) -> Result<Self, FontLoadingError> where
    P: AsRef<Path>, 

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.

fn from_handle(handle: &Handle) -> Result<Self, FontLoadingError>

Loads the font pointed to by a handle.

fn analyze_path<P>(path: P) -> Result<FileType, FontLoadingError> where
    P: AsRef<Path>, 

Determines whether a path points to a supported font, and, if so, what type of font it is.

fn glyph_by_name(&self, _name: &str) -> Option<u32>

Returns the glyph ID for the specified glyph name.

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.

fn raster_bounds(
    &self,
    glyph_id: u32,
    point_size: f32,
    transform: &FontTransform,
    origin: &Point2D<f32>,
    _: HintingOptions,
    _: RasterizationOptions
) -> Result<Rect<i32>, GlyphLoadingError>

Returns the pixel boundaries that the glyph will take up when rendered using this loader's rasterizer at the given point_size, transform and origin. origin is not transformed by transform. The origin of the coordinate space is at the top left.

Loading content...

Implementors

impl Loader for Font[src]

type NativeFont = NativeFont

Loading content...