gvar: Glyph Variations Table

fontTools.ttLib.tables._g_v_a_r.compileGlyph_(variations, pointCount, axisTags, sharedCoordIndices)[source]
fontTools.ttLib.tables._g_v_a_r.decompileGlyph_(pointCount, sharedTuples, axisTags, data)[source]
class fontTools.ttLib.tables._g_v_a_r.table__g_v_a_r(tag=None)[source]
compile(ttFont)[source]
compileGlyphs_(ttFont, axisTags, sharedCoordIndices)[source]
static compileOffsets_(offsets)[source]

Packs a list of offsets into a ‘gvar’ offset table.

Returns a pair (bytestring, tableFormat). Bytestring is the packed offset table. Format indicates whether the table uses short (tableFormat=0) or long (tableFormat=1) integers. The returned tableFormat should get packed into the flags field of the ‘gvar’ header.

decompile(data, ttFont)[source]
static decompileOffsets_(data, tableFormat, glyphCount)[source]
dependencies = ['fvar', 'glyf']
ensureDecompiled(recurse=False)[source]
fromXML(name, attrs, content, ttFont)[source]
static getNumPoints_(glyph)[source]
merge(m, tables)
prune_pre_subset(font, options)
subset_glyphs(s)
toXML(writer, ttFont)[source]

TupleVariation

class fontTools.ttLib.tables.TupleVariation.TupleVariation(axes, coordinates)[source]
calcInferredDeltas(origCoords, endPts)[source]
compile(axisTags, sharedCoordIndices={}, pointData=None)[source]
compileCoord(axisTags)[source]
static compileDeltaValues_(deltas, bytearr=None)[source]

[value1, value2, value3, …] –> bytearray

Emits a sequence of runs. Each run starts with a byte-sized header whose 6 least significant bits (header & 0x3F) indicate how many values are encoded in this run. The stored length is the actual length minus one; run lengths are thus in the range [1..64]. If the header byte has its most significant bit (0x80) set, all values in this run are zero, and no data follows. Otherwise, the header byte is followed by ((header & 0x3F) + 1) signed values. If (header & 0x40) is clear, the delta values are stored as signed bytes; if (header & 0x40) is set, the delta values are signed 16-bit integers.

compileDeltas()[source]
compileIntermediateCoord(axisTags)[source]
static compilePoints(points)[source]
static decompileCoord_(axisTags, data, offset)[source]
static decompileDeltas_(numDeltas, data, offset)[source]

(numDeltas, data, offset) –> ([delta, delta, …], newOffset)

static decompilePoints_(numPoints, data, offset, tableTag)[source]

(numPoints, data, offset, tableTag) –> ([point1, point2, …], newOffset)

static encodeDeltaRunAsBytes_(deltas, offset, bytearr)[source]
static encodeDeltaRunAsWords_(deltas, offset, bytearr)[source]
static encodeDeltaRunAsZeroes_(deltas, offset, bytearr)[source]
fromXML(name, attrs, _content)[source]
getCoordWidth()[source]

Return 2 if coordinates are (x, y) as in gvar, 1 if single values as in cvar, or 0 if empty.

static getTupleSize_(flags, axisCount)[source]
getUsedPoints()[source]
hasImpact()[source]

Returns True if this TupleVariation has any visible impact.

If the result is False, the TupleVariation can be omitted from the font without making any visible difference.

optimize(origCoords, endPts, tolerance=0.5, isComposite=False)[source]
roundDeltas()[source]
scaleDeltas(scalar)[source]
toXML(writer, axisTags)[source]
fontTools.ttLib.tables.TupleVariation.compileSharedTuples(axisTags, variations, MAX_NUM_SHARED_COORDS=4096)[source]
fontTools.ttLib.tables.TupleVariation.compileTupleVariationStore(variations, pointCount, axisTags, sharedTupleIndices, useSharedPoints=True)[source]
fontTools.ttLib.tables.TupleVariation.decompileSharedTuples(axisTags, sharedTupleCount, data, offset)[source]
fontTools.ttLib.tables.TupleVariation.decompileTupleVariationStore(tableTag, axisTags, tupleVariationCount, pointCount, sharedTuples, data, pos, dataPos)[source]
fontTools.ttLib.tables.TupleVariation.decompileTupleVariation_(pointCount, sharedTuples, sharedPoints, tableTag, axisTags, data, tupleData)[source]
fontTools.ttLib.tables.TupleVariation.inferRegion_(peak)[source]

Infer start and end for a (non-intermediate) region

This helper function computes the applicability region for variation tuples whose INTERMEDIATE_REGION flag is not set in the TupleVariationHeader structure. Variation tuples apply only to certain regions of the variation space; outside that region, the tuple has no effect. To make the binary encoding more compact, TupleVariationHeaders can omit the intermediateStartTuple and intermediateEndTuple fields.