Examples / font-ufo
font-ufo.json
targets v0.16.0 13 entities 11 schemas
UFO source as Rig: face metrics, a foreground layer, glyphs A / V / space / acute / Aacute (composite), a top anchor, pair A/V, a left kerning group, and AFDKO features as rig.media.code. Outlines are rig.geometry.path on the glyph. .ufo stays a host encoding - docs/ufo.md.
Speaks
rig.font.anchor · rig.font.component · rig.font.face · rig.font.glyph · rig.font.group · rig.font.kern · rig.font.layer · rig.geometry.path · rig.media.code · rig.meta.named · rig.spatial.relationship
Document
Validates under npm run check —
raw file.
{
"rig": "0.16.0",
"document": {
"title": "UFO as Rig"
},
"entities": [
{
"id": "face",
"components": {
"rig.meta.named": {
"name": "LiveFace Regular",
"stableId": "LiveFace-Regular"
},
"rig.font.face": {
"family": "LiveFace",
"style": "Regular",
"unitsPerEm": 1000,
"ascender": 800,
"descender": -200,
"capHeight": 700,
"xHeight": 500,
"version": "0.1",
"features": "features-fea"
}
}
},
{
"id": "features-fea",
"components": {
"rig.meta.named": {
"name": "features.fea",
"stableId": "features.fea"
},
"rig.spatial.relationship": {
"parent": "face"
},
"rig.media.code": {
"text": "languagesystem DFLT dflt;\n",
"language": "fea"
}
}
},
{
"id": "layer-foreground",
"components": {
"rig.meta.named": {
"name": "public.default",
"stableId": "public.default"
},
"rig.spatial.relationship": {
"parent": "face"
},
"rig.font.layer": {
"role": "foreground"
}
}
},
{
"id": "glyph-A",
"components": {
"rig.meta.named": {
"name": "A",
"stableId": "A"
},
"rig.spatial.relationship": {
"parent": "layer-foreground"
},
"rig.font.glyph": {
"unicodes": [
65
],
"width": 600
},
"rig.geometry.path": {
"commands": [
{
"type": "move-to",
"point": [
50,
0
]
},
{
"type": "line-to",
"point": [
300,
700
]
},
{
"type": "line-to",
"point": [
550,
0
]
},
{
"type": "close"
}
]
}
}
},
{
"id": "anchor-A-top",
"components": {
"rig.meta.named": {
"name": "top",
"stableId": "top"
},
"rig.spatial.relationship": {
"parent": "glyph-A"
},
"rig.font.anchor": {
"point": [
300,
700
]
}
}
},
{
"id": "glyph-V",
"components": {
"rig.meta.named": {
"name": "V",
"stableId": "V"
},
"rig.spatial.relationship": {
"parent": "layer-foreground"
},
"rig.font.glyph": {
"unicodes": [
86
],
"width": 600
},
"rig.geometry.path": {
"commands": [
{
"type": "move-to",
"point": [
50,
700
]
},
{
"type": "line-to",
"point": [
300,
0
]
},
{
"type": "line-to",
"point": [
550,
700
]
}
]
}
}
},
{
"id": "glyph-space",
"components": {
"rig.meta.named": {
"name": "space",
"stableId": "space"
},
"rig.spatial.relationship": {
"parent": "layer-foreground"
},
"rig.font.glyph": {
"unicodes": [
32
],
"width": 250
}
}
},
{
"id": "glyph-acute",
"components": {
"rig.meta.named": {
"name": "acute",
"stableId": "acute"
},
"rig.spatial.relationship": {
"parent": "layer-foreground"
},
"rig.font.glyph": {
"width": 0
},
"rig.geometry.path": {
"commands": [
{
"type": "move-to",
"point": [
280,
720
]
},
{
"type": "line-to",
"point": [
340,
820
]
}
]
}
}
},
{
"id": "glyph-Aacute",
"components": {
"rig.meta.named": {
"name": "Aacute",
"stableId": "Aacute"
},
"rig.spatial.relationship": {
"parent": "layer-foreground"
},
"rig.font.glyph": {
"unicodes": [
193
],
"width": 600
}
}
},
{
"id": "component-Aacute-A",
"components": {
"rig.spatial.relationship": {
"parent": "glyph-Aacute"
},
"rig.font.component": {
"glyph": "glyph-A"
}
}
},
{
"id": "component-Aacute-acute",
"components": {
"rig.spatial.relationship": {
"parent": "glyph-Aacute"
},
"rig.font.component": {
"glyph": "glyph-acute"
}
}
},
{
"id": "kern-AV",
"components": {
"rig.spatial.relationship": {
"parent": "face"
},
"rig.font.kern": {
"left": "A",
"right": "V",
"value": -40
}
}
},
{
"id": "group-kern1-A",
"components": {
"rig.meta.named": {
"name": "public.kern1.A",
"stableId": "public.kern1.A"
},
"rig.spatial.relationship": {
"parent": "face"
},
"rig.font.group": {
"members": [
"A",
"Aacute"
],
"side": "left"
}
}
}
]
}