GlyphRemapper

Struct GlyphRemapper 

Source
pub struct GlyphRemapper(/* private fields */);
Expand description

A remapper that allows to assign a new ordering to a subset of glyphs.

For example, let’s say that we want to subset a font that only contains the glyphs 4, 9 and 16. In this case, the remapper could yield a remapping that assigns the following glyph IDs:

  • 0 -> 0 (The .notdef glyph will always be included)
  • 4 -> 1
  • 9 -> 2
  • 16 -> 3

This is necessary because a font needs to have a contiguous sequence of glyph IDs that start from 0, so we cannot just reuse the old ones, but we need to define a mapping.

Implementations§

Source§

impl GlyphRemapper

Source

pub fn new() -> Self

Create a new instance of a glyph remapper. .notdef will always be a member of the subset.

Source

pub fn new_from_glyphs(glyphs: &[u16]) -> Self

Create a remapper from an existing set of glyphs

Source

pub fn new_from_glyphs_sorted(glyphs: &[u16]) -> Self

Create a remapper from an existing set of glyphs. The method will ensure that the mapping is monotonically increasing.

Source

pub fn num_gids(&self) -> u16

Get the number of gids that have been remapped.

Source

pub fn remap(&mut self, old: u16) -> u16

Remap a glyph ID, or return the existing mapping if the glyph ID has already been remapped before.

Source

pub fn get(&self, old: u16) -> Option<u16>

Get the mapping of a glyph ID, if it has been remapped before.

Source

pub fn remapped_gids(&self) -> impl Iterator<Item = u16> + '_

Return an iterator that yields the old glyphs, in ascending order that is defined by the remapping. For example, if we perform the following remappings: 3, 39, 8, 3, 10, 2

Then the iterator will yield the following items in the order below. The order also implicitly defines the glyph IDs in the new mapping:

0 (0), 3 (1), 39 (2), 8 (3), 10 (4), 2 (5)

Trait Implementations§

Source§

impl Clone for GlyphRemapper

Source§

fn clone(&self) -> GlyphRemapper

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GlyphRemapper

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for GlyphRemapper

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Hash for GlyphRemapper

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for GlyphRemapper

Source§

fn eq(&self, other: &GlyphRemapper) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for GlyphRemapper

Source§

impl StructuralPartialEq for GlyphRemapper

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<U, T> ToOwnedObj<U> for T
where U: FromObjRef<T>,

Source§

fn to_owned_obj(&self, data: FontData<'_>) -> U

Convert this type into T, using the provided data to resolve any offsets.
Source§

impl<U, T> ToOwnedTable<U> for T
where U: FromTableRef<T>,

Source§

fn to_owned_table(&self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.