HBUINT16 actionClass; /* The JustClass value associated with this
* ActionSubrecord. */
HBUINT16 actionType; /* The type of postcompensation action. */
HBUINT16 actionLength; /* Length of this ActionSubrecord record, which
* must be a multiple of 4. */ public:
DEFINE_SIZE_STATIC (6);
};
ActionSubrecordHeader
header;
F16DOT16 lowerLimit; /* If the distance factor is less than this value,
* then the ligature is decomposed. */
F16DOT16 upperLimit; /* If the distance factor is greater than this value,
* then the ligature is decomposed. */
HBUINT16 order; /* Numerical order in which this ligature will *bedecomposed;youmaywantinfrequentligatures *todecomposebeforemorefrequentones.Theligatures *onthelineoftextwilldecomposeinincreasing
* value of this field. */
Array16Of<HBUINT16>
decomposedglyphs; /* Number of 16-bit glyph indexes that follow; *theligaturewillbedecomposedintotheseglyphs. *
* Array of decomposed glyphs. */ public:
DEFINE_SIZE_ARRAY (18, decomposedglyphs);
};
protected:
ActionSubrecordHeader
header;
F16DOT16 substThreshold; /* Distance growth factor (in ems) at which *thisglyphisreplacedandthegrowthfactor
* recalculated. */
HBGlyphID16 addGlyph; /* Glyph to be added as kashida. If this value is *0xFFFF,noextraglyphwillbeadded.Notethat *generallywhenaglyphisadded,justification
* will need to be redone. */
HBGlyphID16 substGlyph; /* Glyph to be substituted for this glyph if the *growthfactorequalsorexceedsthevalueof
* substThreshold. */ public:
DEFINE_SIZE_STATIC (14);
};
protected:
ActionSubrecordHeader
header;
HBUINT32 variationAxis; /* The 4-byte tag identifying the ductile axis. *Thiswouldnormallybe0x64756374('duct'),
* but you may use any axis the font contains. */
F16DOT16 minimumLimit; /* The lowest value for the ductility axis that *stillyieldsanacceptableappearance.Normally
* this will be 1.0. */
F16DOT16 noStretchValue; /* This is the default value that corresponds to *nochangeinappearance.Normally,thiswill
* be 1.0. */
F16DOT16 maximumLimit; /* The highest value for the ductility axis that
* still yields an acceptable appearance. */ public:
DEFINE_SIZE_STATIC (22);
};
protected:
ActionSubrecordHeader
header;
HBUINT16 flags; /* Currently unused; set to 0. */
HBGlyphID16 glyph; /* Glyph that should be added if the distance factor
* is growing. */ public:
DEFINE_SIZE_STATIC (10);
};
protected: union {
ActionSubrecordHeader header;
DecompositionAction decompositionAction;
UnconditionalAddGlyphAction unconditionalAddGlyphAction;
ConditionalAddGlyphAction conditionalAddGlyphAction; /* StretchGlyphAction stretchGlyphAction; -- Not supported by CoreText */
DuctileGlyphAction ductileGlyphAction;
RepeatedAddGlyphAction repeatedAddGlyphAction;
} u; /* Data. The format of this data depends on
* the value of the actionType field. */ public:
DEFINE_SIZE_UNION (6, header);
};
unsignedint offset = min_size; for (unsignedint i = 0; i < count; i++)
{ const ActionSubrecord& subrecord = StructAtOffset<ActionSubrecord> (this, offset); if (unlikely (!subrecord.sanitize (c))) return_trace (false);
offset += subrecord.get_length ();
}
return_trace (true);
}
protected:
HBUINT32 count;
public:
DEFINE_SIZE_STATIC (4);
};
struct JustWidthDeltaEntry
{ enum Flags
{
Reserved1 =0xE000,/* Reserved. You should set these bits to zero. */
UnlimiteGap =0x1000,/* The glyph can take unlimited gap. When this *glyphparticipatesinthejustificationprocess, *itandanyotherglyphsonthelinehavingthis
* bit set absorb all the remaining gap. */
Reserved2 =0x0FF0,/* Reserved. You should set these bits to zero. */
Priority =0x000F /* The justification priority of the glyph. */
};
enum Priority
{
Kashida = 0, /* Kashida priority. This is the highest priority
* during justification. */
Whitespace = 1, /* Whitespace priority. Any whitespace glyphs (as *identifiedintheglyphpropertiestable)will
* get this priority. */
InterCharacter = 2, /* Inter-character priority. Give this to any
* remaining glyphs. */
NullPriority = 3/* Null priority. You should set this priority for *glyphsthatonlyparticipateinjustification *aftertheabovepriorities.Normallyallglyphs *haveoneofthepreviousthreevalues.Ifyou *don'twantaglyphtoparticipateinjustification, *andyoudon'twanttosetitsfactorstozero,
* you may instead assign it to the null priority. */
};
protected:
F16DOT16 beforeGrowLimit;/* The ratio by which the advance width of the
* glyph is permitted to grow on the left or top side. */
F16DOT16 beforeShrinkLimit; /* The ratio by which the advance width of the
* glyph is permitted to shrink on the left or top side. */
F16DOT16 afterGrowLimit; /* The ratio by which the advance width of the glyph
* is permitted to shrink on the left or top side. */
F16DOT16 afterShrinkLimit; /* The ratio by which the advance width of the glyph *isatmostpermittedtoshrinkontherightor
* bottom side. */
HBUINT16 growFlags; /* Flags controlling the grow case. */
HBUINT16 shrinkFlags; /* Flags controlling the shrink case. */
protected:
HBUINT32 justClass; /* The justification category associated *withthewdRecordfield.Only7bitsof *thisfieldareused.(Theotherbitsare *usedaspaddingtoguaranteelongword
* alignment of the following record). */
JustWidthDeltaEntry
wdRecord; /* The actual width delta record. */
enum Flags
{
SetMark =0x8000,/* If set, make the current glyph the marked
* glyph. */
DontAdvance =0x4000,/* If set, don't advance to the next glyph before
* going to the new state. */
MarkCategory =0x3F80,/* The justification category for the marked
* glyph if nonzero. */
CurrentCategory =0x007F /* The justification category for the current
* glyph if nonzero. */
};
protected:
Offset16To<JustificationCategory>
justClassTable; /* Offset to the justification category state table. */
Offset16To<WidthDeltaCluster>
wdcTable; /* Offset from start of justification table to start *ofthesubtablecontainingthewidthdeltafactors *fortheglyphsinyourfont. *
* The width delta clusters table. */
Offset16To<PostcompensationActionChain>
pcTable; /* Offset from start of justification table to start *ofpostcompensationsubtable(settozeroifnone). *
* The postcompensation subtable, if present in the font. */
Lookup<Offset16To<WidthDeltaCluster>>
lookupTable; /* Lookup table associating glyphs with width delta *clusters.SeethedescriptionofWidthDeltaClusters
* table for details on how to interpret the lookup values. */
public:
DEFINE_SIZE_MIN (8);
};
struct just
{ static constexpr hb_tag_t tableTag = HB_AAT_TAG_just;
protected:
FixedVersion<>version; /* Version of the justification table
* (0x00010000u for version 1.0). */
HBUINT16 format; /* Format of the justification table (set to 0). */
Offset16To<JustificationHeader>
horizData; /* Byte offset from the start of the justification table *totheheaderfortablesthatcontainjustification *informationforhorizontaltext. *Ifyouarenotincludingthisinformation,
* store 0. */
Offset16To<JustificationHeader>
vertData; /* ditto, vertical */
public:
DEFINE_SIZE_STATIC (10);
};
} /* namespace AAT */
#endif/* HB_AAT_LAYOUT_JUST_TABLE_HH */
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.