Docs / ufo
UFO
Rig names editable-font meaning as rig.font.*. Unified Font Object files stay host mappings at the boundary - same rule as IFC in openbim.md and SVG (design philosophy).
The Contract job is entities, POD components, and schema ids. A .ufo / .ufoz reader (RigKit rigUfo or a sibling tool) is fulfillment, not this catalog.
Thin layer
We do not invent rig.font.ttf or treat a compiled OT/TTF as the source face. A file on disk is rig.media.asset_ref kind font. A canvas run that uses a compiled face is rig.media.text. Outlines compose rig.geometry.path on the glyph entity - do not add a second contour type.
| UFO idea | Rig |
|---|---|
| Family / style / UPM / metrics | rig.font.face |
Layer (public.default, ...) |
rig.font.layer + rig.meta.named |
| Glyph name | rig.meta.named stableId |
| Unicodes / advance width | rig.font.glyph |
| Contours | rig.geometry.path on the glyph |
| Component (composite) | rig.font.component on a child entity |
| Anchor | rig.font.anchor on a child entity |
kerning.plist pair |
rig.font.kern (left / right are names) |
groups.plist |
rig.font.group |
features.fea |
rig.media.code language fea, pointed at by face.features |
fvar axis |
rig.font.axis (child of face) |
avar map |
rig.font.avar on the axis entity |
| Live lattice / morph cell | rig.font.cell on the glyph (default path stays on geometry.path) |
| Containment | rig.spatial.relationship parent (face, layer, glyph; face, axis) |
Encodings (fulfillment)
| File | Role |
|---|---|
.ufo / .ufoz |
Map into / out of rig.font.* + path |
.glif |
One glyph; same POD as rig.font.glyph + path / component / anchor |
.otf / .ttf / .woff2 |
Compiled instance - asset_ref or export, never the live source |
Do not put glyph caches, atlas slots, dirty epochs, or FreeType handles in portable components.
Host trips!
Two hosts that speak rig.font.face + glyph + kern can exchange a UFO-as-Rig document. Round-tripping every lib.plist key or UFO3 guideline is not required. Hosts that morph add axis / avar / cell.
Examples: examples/font-ufo.json, examples/font-var.json.