Skip to content

LingenicLLC/lingenic-compose-engraving

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

「‍」 Lingenic Compose Engraving

Parser and renderer for .engraving copperplate/intaglio font files.

Overview

This crate provides tools for defining fonts in the engraving tradition: copperplate, steel engraving, drypoint, and other intaglio printmaking techniques where a burin is pushed through metal to create incised lines.

Engraving vs Lapidary

  • Engraving: Burin pushed through ductile metal (copper, steel, zinc)
  • Lapidary: Chisel struck into brittle stone (marble, granite)

Both are subtractive mark-making, but the techniques and tools differ. This crate focuses on the pushed technique with pressure-varying strokes.

Format

The .engraving format uses a verbose, self-documenting syntax:

.font-begin Copperplate
  units-per-em 1000
  ascender 800
  descender -200

  .plate-begin copper
    material Copper
    hardness 35
  .plate-end

  .burin-begin fine
    profile Lozenge
    angle 45
    face-width 20
  .burin-end

  .glyph-begin A U+0041
    advance-width 600
    engrave fine 50,0◊20 ⏤ 300,720◊80 ⏤ 550,0◊20
  .glyph-end

.font-end

Symbols

Pressure Modifier

Symbol Unicode Name Description
U+25CA LOZENGE Pressure at point (0-100, affects line width)

Example: 300,720◊80 = point at (300,720) with pressure 80

Path Connectors

Symbol Unicode Name Description
U+23E4 STRAIGHTNESS Straight line segment
U+2312 ARC Smooth curve
U+2220 ANGLE Corner/sharp turn
U+21BB CLOCKWISE Close path
U+2934 ARROW CURVING UPWARDS Flick exit (lift-off)

Burin Profiles

Profile Description Use
Lozenge Diamond-shaped with angle Standard copperplate
Square Square cross-section Bold lines
Round Circular cross-section Stippling
Flat Wide flat edge Broad strokes
Spitsticker Sharp fine point Detail work
Onglette Angled flat Calligraphic effects

Plate Materials

Material Hardness Use
Copper 35 Traditional copperplate
Steel 65 Fine detail, longer runs
Zinc 25 Softer, easier cutting
Silver 28 Precious metalwork
Gold 24 Precious metalwork

Pressure and Line Width

Pressure values (0-100) control the line width:

  • 0-20: Hairlines, delicate strokes
  • 30-50: Medium weight
  • 60-80: Bold strokes
  • 80-100: Maximum width

The line width varies continuously along the stroke based on pressure, creating the characteristic swelling/thinning of engraved lines.

Drypoint and Burr

The burr keyword after a stroke enables burr rendering:

engrave fine 0,0◊30 ⏤ 200,0◊80 burr

In drypoint engraving, the burin throws up a ridge of metal (burr) that holds extra ink, creating rich, velvety lines. This effect can be simulated in rendering.

Flick Exits

The symbol creates a flick exit where the burin lifts smoothly:

engrave fine 0,0◊60 ⏤ 200,0◊60 ⤴

This creates the tapered end characteristic of calligraphic strokes.

Example

use lingenic_compose_engraving::{parse, render::RenderOptions};
use lingenic_compose_engraving::render::render_glyph_to_svg;

let source = r#"
.font-begin Script
  units-per-em 1000
  ascender 800
  descender -200

  .burin-begin main
    profile Lozenge
    angle 45
    face-width 25
  .burin-end

  .glyph-begin l U+006C
    advance-width 250
    engrave main 125,0◊30 ⏤ 125,720◊30
  .glyph-end

.font-end
"#;

let font = parse(source).unwrap();
let glyph = font.get_glyph(0x006C).unwrap();
let svg = render_glyph_to_svg(&font, glyph, &RenderOptions::default());

Rendering

The renderer creates SVG with variable-width strokes:

use lingenic_compose_engraving::render::{RenderOptions, render_glyph_to_svg};

// Classic copperplate look
let options = RenderOptions::copperplate();

// Drypoint with burr effect
let options = RenderOptions::drypoint();

// Custom ink color
let options = RenderOptions::copperplate()
    .with_ink_color(ColorRgb::rgb(60, 20, 10));

License

Apache-2.0

Part of 「‍」 Lingenic Compose

「‍」 Lingenic Compose Engraving is a component of the 「‍」 Lingenic Compose typesetting system.

https://compose.lingenic.com/

About

Parser and renderer for `.engraving` copperplate/intaglio font files.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages