Skip to content

Add glu typesetter with samples for all eleven demos - #23

Open
pgundlach wants to merge 1 commit into
alerque:masterfrom
pgundlach:feature/glu
Open

Add glu typesetter with samples for all eleven demos#23
pgundlach wants to merge 1 commit into
alerque:masterfrom
pgundlach:feature/glu

Conversation

@pgundlach

Copy link
Copy Markdown

This adds glu as a typesetter. glu renders
Markdown, HTML or Lua straight to PDF on top of the boxes and glue
typesetting library (OpenType shaping, Knuth-Plass line breaking, an
OpenType-MATH engine and CSS Paged Media support).

Included:

  • Makefile pattern rules for glu.md / glu.html / glu.lua inputs,
    mirroring the SILE multi-extension setup, plus a .fonts download
    target for the Libertinus faces the samples reference.
  • A buildGoModule package for glu in the Nix dev shell (glu is not
    in nixpkgs yet); unzip joins the shell inputs for the font target.
  • Samples for all eleven demos. Some highlights: title-case implements
    the casing rules (including Turkish i/İ) in an embedded Lua block,
    hieroglyphs exercises the engine's USE shaping of the Egyptian
    quadrat composition, and Willans' formula runs through stretchy
    fences built from glyph variants and assemblies. Where the engine
    has a known gap (the overline form of varlimsup) the sample says so
    in a source comment instead of faking the output.

All eleven glu samples (PDFs and AVIF previews) render in a pure Nix
environment (nix develop --ignore-environment).

glu renders Markdown, HTML or Lua straight to PDF on top of the
boxes and glue typesetting library (OpenType shaping, Knuth-Plass
line breaking, an OpenType MATH engine and CSS Paged Media support).

- Makefile pattern rules for glu.md / glu.html / glu.lua inputs and
  a .fonts download target for the Libertinus faces the samples use
- a buildGoModule package for glu in the Nix dev shell (glu is not
  in nixpkgs yet); unzip joins the shell inputs for the font target
- samples for all eleven demos
@alerque

alerque commented Aug 20, 2026

Copy link
Copy Markdown
Owner

This is fantastic, thanks for taking the time to put this together! I'm traveling right now (and currently on 1 bar of 2G cell data!) so it might take me until next week to review it properly, but from the sounds of things I expect to be able to make this work and get it online.

@pgundlach

Copy link
Copy Markdown
Author

Note: the failing gh-pages check is unrelated to the changes in this PR. Installing the pinned decasify.sile 0.11.2-1 pulls in its unpinned transitive dependency decasify, which now resolves to 0.11.4 and requires rustc 1.96 — but the nixpkgs revision pinned in flake.lock only provides rustc 1.91.1. A CI run on master would currently fail the same way (the last successful run was in December).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants