Install
openclaw skills install @monikazapisekstudio/glyph-fidelityUse when checking that letterform-level detail survives a transform — all-caps tracking by a continuous formula, ligature collisions under negative tracking, and inline acronyms needing their own subrange treatment to keep paragraph color even.
openclaw skills install @monikazapisekstudio/glyph-fidelityProtect letterform structure from three specific failure modes that a naive tracking/case transform introduces: under- or over-tracked all-caps text, ligatures that collapse into illegible blobs under negative tracking, and inline acronyms that break the paragraph's even visual "color" (texture).
UPPERCASE/ALL CAPS, to compute the correct tracking rather than a guessed round number.text-typesetting Step 2 (Branch A/B) already decides whether tracking is positive or negative and by roughly how much. This skill only refines the number for all-caps specifically and covers structural side-effects (ligatures, acronym color) that Step 2 doesn't address.font-size (px).For any text-run transformed to UPPERCASE, tracking (TS) is a function of font-size (FS), not a fixed band:
TS = max(5%, min(12%, 160 / FS))
This produces roughly: 12% at very small sizes (10px), ~8% at 20px, tapering toward the floor as size grows. For large display headings (FS > 32px), compress further to a +3% to +5% range — the formula above starts overshooting once letterforms are large enough that spacing reads proportionally looser even at low percentages.
This refines, but does not replace, text-typesetting Step 2 Branch A's banded values (≤12px → +10%, 12–18px → +6%, >18px → +2%) — use this formula when a precise, continuously-scaled value is needed (e.g. a fluid type scale); use the bands when a simpler discrete system is preferred. Don't apply both to the same node.
If Small Caps styling is required, never simulate it by shrinking the base font (fontSize × 0.8) and capitalizing — this produces thin, spindly letterforms with the wrong stroke weight relative to true small caps, which are drawn by the type designer at the correct weight. Check for and use the native OpenType feature instead:
font-variant-caps: small-caps; (or all-small-caps if lowercase-context is needed too).textNode.textCase = "SMALL_CAPS".Negative tracking (TS < -2%, per text-typesetting Step 2 Branch B at large sizes) pulls letters closer together. Built-in ligatures (fi, fl, ffi, ffl) are pre-drawn as fused glyphs — at sufficiently negative tracking, the already-fused shape can start visually colliding with its neighbors, reading as a blob rather than two/three distinct letters.
-2% on a text containing ligature-prone pairs.text-typesetting was asked to do).
font-variant-ligatures: no-common-ligatures; on the affected range.textNode.setRangeFontFeatures(start, end, { liga: 0 }) (or textNode.opentypeFlags depending on API version — verify against the installed Figma API version rather than assuming).A run of 3+ consecutive capital letters (HTML, ZUS, USA) inside otherwise sentence-case prose reads visually heavier and denser than the surrounding lowercase text — it creates a dark "spot" that breaks the paragraph's even visual texture (what Bringhurst calls color).
+5% on that subrange only.1px relative to the surrounding body text (a small optical correction — full-size acronyms read as shouting relative to the lowercase around them).font-size shown.-2%; fix disables ligatures on the affected range only, doesn't further reduce tracking.+5% tracking and -1px size, not left at body-text default.liga (standard ligatures), smcp/c2sc (small caps).text-typesetting (base tracking direction/size — this skill refines edge cases on top of it), microtypography (character-level text rules independent of a design tool).