A FontGroup is a prioritised list of fonts for a given set of font styles. It is used by
TextRun to decide which font to render a character with. If none of the fonts listed in the
styles are suitable, a fallback font may be used.
A FontGroupFamily is a single font family in a FontGroup. It corresponds to one of the
families listed in the font-family CSS property. The corresponding font data is lazy-loaded,
only if actually needed. A single FontGroupFamily can have multiple fonts, in the case that
individual fonts only cover part of the Unicode range.
A FontGroupFamily can have multiple members if it is a βcomposite faceβ, meaning
that it is defined by multiple @font-face declarations which vary only by their
unicode-range descriptors. In this case, font selection will select a single member
that contains the necessary unicode character. Unicode ranges are specified by the
FontGroupFamilyMember::template member.
Given a mapping array mapping and a value, map that value onto
the value specified by the array. For instance, for FontConfig
values of weights, we would map these onto the CSS [0..1000] range
by creating an array as below. Values that fall between two mapped
values, will be adjusted by the weighted mean.