pub(crate) struct Outlines<'a> {
pub(crate) font: FontRef<'a>,
pub(crate) glyph_metrics: GlyphHMetrics<'a>,
offset_data: FontData<'a>,
global_subrs: Index<'a>,
top_dict: TopDict<'a>,
version: u16,
units_per_em: u16,
}
Expand description
Type for loading, scaling and hinting outlines in CFF/CFF2 tables.
The skrifa crate provides a higher level interface for this that handles caching and abstracting over the different outline formats. Consider using that if detailed control over resources is not required.
§Subfonts
CFF tables can contain multiple logical “subfonts” which determine the
state required for processing some subset of glyphs. This state is
accessed using the FDArray and FDSelect
operators to select an appropriate subfont for any given glyph identifier.
This process is exposed on this type with the
subfont_index
method to retrieve the subfont
index for the requested glyph followed by using the
subfont
method to create an appropriately configured
subfont for that glyph.
Fields§
§font: FontRef<'a>
§glyph_metrics: GlyphHMetrics<'a>
§offset_data: FontData<'a>
§global_subrs: Index<'a>
§top_dict: TopDict<'a>
§version: u16
§units_per_em: u16
Implementations§
Source§impl<'a> Outlines<'a>
impl<'a> Outlines<'a>
Sourcepub fn new(font: &FontRef<'a>) -> Option<Self>
pub fn new(font: &FontRef<'a>) -> Option<Self>
Creates a new scaler for the given font.
This will choose an underlying CFF2 or CFF table from the font, in that order.
pub fn from_cff(font: &FontRef<'a>, units_per_em: u16) -> Option<Self>
pub fn from_cff2(font: &FontRef<'a>, units_per_em: u16) -> Option<Self>
pub fn is_cff2(&self) -> bool
pub fn units_per_em(&self) -> u16
Sourcepub fn glyph_count(&self) -> usize
pub fn glyph_count(&self) -> usize
Returns the number of available glyphs.
Sourcepub fn subfont_count(&self) -> u32
pub fn subfont_count(&self) -> u32
Returns the number of available subfonts.
Sourcepub fn subfont_index(&self, glyph_id: GlyphId) -> u32
pub fn subfont_index(&self, glyph_id: GlyphId) -> u32
Returns the subfont (or Font DICT) index for the given glyph identifier.
Sourcepub fn subfont(
&self,
index: u32,
size: Option<f32>,
coords: &[F2Dot14],
) -> Result<Subfont, Error>
pub fn subfont( &self, index: u32, size: Option<f32>, coords: &[F2Dot14], ) -> Result<Subfont, Error>
Creates a new subfont for the given index, size, normalized variation coordinates and hinting state.
The index of a subfont for a particular glyph can be retrieved with
the subfont_index
method.
Sourcepub fn draw(
&self,
subfont: &Subfont,
glyph_id: GlyphId,
coords: &[F2Dot14],
hint: bool,
pen: &mut impl OutlinePen,
) -> Result<(), Error>
pub fn draw( &self, subfont: &Subfont, glyph_id: GlyphId, coords: &[F2Dot14], hint: bool, pen: &mut impl OutlinePen, ) -> Result<(), Error>
Loads and scales an outline for the given subfont instance, glyph identifier and normalized variation coordinates.
Before calling this method, use subfont_index
to retrieve the subfont index for the desired glyph and then
subfont
to create an instance of the subfont for a
particular size and location in variation space.
Creating subfont instances is not free, so this process is exposed in
discrete steps to allow for caching.
The result is emitted to the specified pen.