You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.7 KiB
115 lines
4.7 KiB
##################################
|
|
varLib: OpenType Variation Support
|
|
##################################
|
|
|
|
The ``fontTools.varLib`` package contains a number of classes and routines
|
|
for handling, building and interpolating variable font data. These routines
|
|
rely on a common set of concepts, many of which are equivalent to concepts
|
|
in the OpenType Specification, but some of which are unique to ``varLib``.
|
|
|
|
Terminology
|
|
-----------
|
|
|
|
axis
|
|
"A designer-determined variable in a font face design that can be used to
|
|
derive multiple, variant designs within a family." (OpenType Specification)
|
|
An axis has a minimum value, a maximum value and a default value.
|
|
|
|
designspace
|
|
The n-dimensional space formed by the font's axes. (OpenType Specification
|
|
calls this the "design-variation space")
|
|
|
|
scalar
|
|
A value which is able to be varied at different points in the designspace:
|
|
for example, the horizontal advance width of the glyph "a" is a scalar.
|
|
However, see also *support scalar* below.
|
|
|
|
default location
|
|
A point in the designspace whose coordinates are the default value of
|
|
all axes.
|
|
|
|
location
|
|
A point in the designspace, specified as a set of coordinates on one or
|
|
more axes. In the context of ``varLib``, a location is a dictionary with
|
|
the keys being the axis tags and the values being the coordinates on the
|
|
respective axis. A ``varLib`` location dictionary may be "sparse", in the
|
|
sense that axes defined in the font may be omitted from the location's
|
|
coordinates, in which case the default value of the axis is assumed.
|
|
For example, given a font having a ``wght`` axis ranging from 200-1000
|
|
with default 400, and a ``wdth`` axis ranging 100-300 with default 150,
|
|
the location ``{"wdth": 200}`` represents the point ``wght=400,wdth=200``.
|
|
|
|
master
|
|
The value of a scalar at a given location. **Note that this is a
|
|
considerably more general concept than the usual type design sense of
|
|
the term "master".**
|
|
|
|
normalized location
|
|
While the range of an axis is determined by its minimum and maximum values
|
|
as set by the designer, locations are specified internally to the font binary
|
|
in the range -1 to 1, with 0 being the default, -1 being the minimum and
|
|
1 being the maximum. A normalized location is one which is scaled to the
|
|
range (-1,1) on all of its axes. Note that as the range from minimum to
|
|
default and from default to maximum on a given axis may differ (for
|
|
example, given ``wght min=200 default=500 max=1000``, the difference
|
|
between a normalized location -1 of a normalized location of 0 represents a
|
|
difference of 300 units while the difference between a normalized location
|
|
of 0 and a normalized location of 1 represents a difference of 700 units),
|
|
a location is scaled by a different factor depending on whether it is above
|
|
or below the axis' default value.
|
|
|
|
support
|
|
While designers tend to think in terms of masters - that is, a precise
|
|
location having a particular value - OpenType Variations specifies the
|
|
variation of scalars in terms of deltas which are themselves composed of
|
|
the combined contributions of a set of triangular regions, each having
|
|
a contribution value of 0 at its minimum value, rising linearly to its
|
|
full contribution at the *peak* and falling linearly to zero from the
|
|
peak to the maximum value. The OpenType Specification calls these "regions",
|
|
while ``varLib`` calls them "supports" (a mathematical term used in real
|
|
analysis) and expresses them as a dictionary mapping each axis tag to a
|
|
tuple ``(min, peak, max)``.
|
|
|
|
box
|
|
``varLib`` uses the term "box" to denote the minimum and maximum "corners" of
|
|
a support, ignoring its peak value.
|
|
|
|
delta
|
|
The term "delta" is used in OpenType Variations in two senses. In the
|
|
more general sense, a delta is the difference between a scalar at a
|
|
given location and its value at the default location. Additionally, inside
|
|
the font, variation data is stored as a mapping between supports and deltas.
|
|
The delta (in the first sense) is computed by summing the product of the
|
|
delta of each support by a factor representing the support's contribution
|
|
at this location (see "support scalar" below).
|
|
|
|
support scalar
|
|
When interpolating a set of variation data, the support scalar represents
|
|
the scalar multiplier of the support's contribution at this location. For
|
|
example, the support scalar will be 1 at the support's peak location, and
|
|
0 below its minimum or above its maximum.
|
|
|
|
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
|
|
builder
|
|
cff
|
|
errors
|
|
featureVars
|
|
instancer
|
|
interpolatable
|
|
interpolate_layout
|
|
iup
|
|
merger
|
|
models
|
|
mutator
|
|
mvar
|
|
plot
|
|
varStore
|
|
|
|
.. automodule:: fontTools.varLib
|
|
:inherited-members:
|
|
:members:
|
|
:undoc-members:
|