Schemas / Font (UFO / variable)

rig.font.cell

v0.31.0 · draft 2 fields 1 required

Fields

FieldTypeMeaning
baseAdv float required Required. Advance width at the default instance (matches glyph.width when both present)
terms array<object> optional Optional. Reconstruction terms; absent or empty = static glyph

Live variable-glyph reconstruction on a glyph entity. Format when present.

Default outline stays on rig.geometry.path (the default master). This component holds deltas that reconstruct other locations: base + Σ weight(term) · Δ. Used by lattice / morph hosts (VarFont, vFont). Static UFO faces omit it.

Term

Delta segment

Weighting is host fulfillment (e.g. |blend| for linear terms, tent for hats, product for crosses). Do not store GPU buffers, dirty flags, or sampled FreeType outlines here.

JSON Schema

Resolves at https://rig.works/schemas/rig.font.cell.schema.jsonraw file.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rig.works/schemas/rig.font.cell.schema.json",
  "title": "rig.font.cell",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "baseAdv": {
      "$ref": "./_defs.schema.json#/$defs/float"
    },
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "axisTag",
          "sign",
          "adv",
          "segs"
        ],
        "properties": {
          "axisTag": {
            "$ref": "./_defs.schema.json#/$defs/string"
          },
          "sign": {
            "type": "integer",
            "enum": [
              -1,
              1
            ]
          },
          "axisTag2": {
            "$ref": "./_defs.schema.json#/$defs/string"
          },
          "sign2": {
            "type": "integer",
            "enum": [
              -1,
              1
            ]
          },
          "axisTag3": {
            "$ref": "./_defs.schema.json#/$defs/string"
          },
          "sign3": {
            "type": "integer",
            "enum": [
              -1,
              1
            ]
          },
          "center": {
            "$ref": "./_defs.schema.json#/$defs/float"
          },
          "wl": {
            "$ref": "./_defs.schema.json#/$defs/float"
          },
          "wr": {
            "$ref": "./_defs.schema.json#/$defs/float"
          },
          "adv": {
            "$ref": "./_defs.schema.json#/$defs/float"
          },
          "segs": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "type",
                "points"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "line",
                    "quad"
                  ]
                },
                "points": {
                  "type": "array",
                  "items": {
                    "$ref": "./_defs.schema.json#/$defs/vec2"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "baseAdv"
  ]
}

Seen in

font-var.json