Stroke-based font formats
Compose fonts are stroke-based, not outline-based. Instead of storing filled contours (like TrueType or OpenType), Compose fonts store the tool paths that create letterforms: pen strokes, brush strokes, or chisel cuts.
This enables:
Lingenic Compose font technology recovers something older than Multics Compose — the physical knowledge of how letters were made, across every major mark-making tradition (brush for CJK, pen for Western calligraphy, chisel for inscriptions, burin for engraving), encoded as machine-readable primitives so that knowledge isn't lost the way Compose was lost when Multics shut down.
pen-path (primitives) ──► lettering (.lettering format) └─► 字 (.字 format, with brush-path) brush-path (primitives) ──► 字 (.字 format) chisel-path (primitives) ──► lapidary (.lapidary format) └─► engraving (.engraving format)
Three primitive crates model different mark-making tools. Four format crates use these primitives to define fonts.
| Crate | Tool Model | Mark-Making |
|---|---|---|
pen-path | Rigid pen (circular, elliptical, rectangular) | Additive — ink on paper |
brush-path | Flexible brush (bristle geometry, bend, splay) | Additive — ink on paper, pressure-sensitive |
chisel-path | Chisel or burin (V-cut, U-cut, lozenge) | Subtractive — incising into substrate |
2D vector graphics primitives using a pen-and-path model. Points connected by Lines (⏤), Curves (⌒), or Corners (∠). Pens sweep along paths to create strokes. Coordinates in centipoints (7200/inch).
Brush mark-making primitives for CJK calligraphy. Models physical brush properties (tip width, belly width, bristle type, flexibility) and dynamics during strokes:
| Term | Chinese | Meaning |
|---|---|---|
| Pressure | 輕重 | Light-heavy variation |
| Press-pause | 頓 | Momentary press at direction change |
| Lift | 提 | Lighten pressure while moving |
| Sharp-turn | 折 | Abrupt direction change |
| Entry style | 入鋒 | How brush enters stroke |
| Exit style | 收鋒 | How brush leaves stroke |
Subtractive mark-making for incising into substrates. Two techniques:
| Technique | Tool | Substrate | Method |
|---|---|---|---|
| Carving | Chisel | Stone, wood | Struck with mallet |
| Engraving | Burin | Metal, end-grain wood | Pushed by hand |
Substrates have physical properties (hardness, ductility, grain) that affect cutting behavior. Serif cuts are functional techniques for cleanly terminating strokes in stone.
.letteringWestern stroke-based fonts using pen-path. Defines glyphs as sequences of pen strokes. Supports circular, elliptical, and rectangular pen shapes.
.font-begin MyFont
.circular-pen-begin mono
diameter 40
.circular-pen-end
.glyph-begin A U+0041
advance-width 650
stroke mono 50,0 ⏤ 325,750 ⏤ 600,0
stroke mono 150,250 ⏤ 500,250
.glyph-end
.font-end
.字CJK fonts using brush-path and/or pen-path. Supports Han (漢字), Kana (ひらがな/カタカナ), Hangul (한글), with regional variants (CN, TW, JP, KR) and multiple calligraphic styles:
| Style | Chinese | Primitives |
|---|---|---|
| Regular script | 楷書 | brush-path |
| Running script | 行書 | brush-path |
| Grass script | 草書 | brush-path |
| Song typeface | 宋體 | pen-path |
| Gothic typeface | 黑體 | pen-path |
.lapidaryInscriptional fonts using chisel-path. Models stone carving with V-cut and U-cut chisels, serif cuts, and substrate properties. For Roman inscriptions and monumental lettering.
.font-begin Trajan
.v-chisel-begin roman
angle 60
width 40
.v-chisel-end
.glyph-begin I U+0049
cut roman 200,0⌵30 ⏤ 200,700⌵30 serif-entry triangular serif-exit triangular
.glyph-end
.font-end
.engravingCopperplate and metal engraving fonts using chisel-path. Models burin tools with pressure-controlled line width, swelling strokes, and characteristic flick exits.
.font-begin Copperplate
.burin-begin fine
profile Lozenge
angle 45
.burin-end
.glyph-begin A U+0041
engrave fine 50,0 ◊20 ⏤ 300,720 ◊80 ⏤ 550,0 ◊20
.glyph-end
.font-end
All formats share a common path notation:
| Symbol | Unicode | Meaning |
|---|---|---|
⏤ | U+23E4 | Straight line segment |
⌒ | U+2312 | Smooth curve (Hobby's algorithm) |
∠ | U+2220 | Corner / inflection point |
↻ | U+21BB | Close path to start |
Format-specific symbols:
| Symbol | Unicode | Format | Meaning |
|---|---|---|---|
⌀ | U+2300 | lettering | Diameter at point |
⌵ | U+2335 | lapidary | Depth at point |
◊ | U+25CA | engraving | Pressure at point |
⤴ | U+2934 | engraving | Flick exit |
Primitive crates (pen-path, brush-path, chisel-path) use centipoints (Cp):
Font formats (.lettering, .字, .lapidary, .engraving) use em-units — coordinates relative to the em square defined by units-per-em (typically 1000). This matches OpenType/TrueType convention.
Em-units are scaled to centipoints at rendering time. Integer math throughout.