「‍」 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-pauseMomentary press at direction change
LiftLighten pressure while moving
Sharp-turnAbrupt 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.