「‍」 Lingenic

「‍」 Lingenic Compose: Fonts In Development

Stroke-based font formats

GitHub: pen-path brush-path chisel-path lettering character lapidary engraving

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:

Architecture

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.

Primitives

CrateTool ModelMark-Making
pen-pathRigid pen (circular, elliptical, rectangular)Additive — ink on paper
brush-pathFlexible brush (bristle geometry, bend, splay)Additive — ink on paper, pressure-sensitive
chisel-pathChisel or burin (V-cut, U-cut, lozenge)Subtractive — incising into substrate

pen-path

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-path

Brush mark-making primitives for CJK calligraphy. Models physical brush properties (tip width, belly width, bristle type, flexibility) and dynamics during strokes:

TermChineseMeaning
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

chisel-path

Subtractive mark-making for incising into substrates. Two techniques:

TechniqueToolSubstrateMethod
CarvingChiselStone, woodStruck with mallet
EngravingBurinMetal, end-grain woodPushed by hand

Substrates have physical properties (hardness, ductility, grain) that affect cutting behavior. Serif cuts are functional techniques for cleanly terminating strokes in stone.

Font Formats

Lettering — .lettering

Western 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:

StyleChinesePrimitives
Regular script楷書brush-path
Running script行書brush-path
Grass script草書brush-path
Song typeface宋體pen-path
Gothic typeface黑體pen-path

Lapidary — .lapidary

Inscriptional 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

Engraving — .engraving

Copperplate 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

Path Symbols

All formats share a common path notation:

SymbolUnicodeMeaning
⏤U+23E4Straight line segment
⌒U+2312Smooth curve (Hobby's algorithm)
∠U+2220Corner / inflection point
↻U+21BBClose path to start

Format-specific symbols:

SymbolUnicodeFormatMeaning
⌀U+2300letteringDiameter at point
⌵U+2335lapidaryDepth at point
◊U+25CAengravingPressure at point
⤴U+2934engravingFlick exit

Units

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.