Set the edition in XCharter

ScholaX read as too decorative (Sammay), and the font metrics agree: of
the faces considered it sets the smallest lowercase relative to its
capitals — x-height/cap 0.645 against XCharter's 0.717 — so its caps and
ascenders dominate while the lowercase does the reading.

Chosen on measured grounds, not taste alone. All 35 non-ASCII characters
this text uses are covered; the dots-below transliteration set
(ḍ ḥ ṃ ṅ ṇ Ṛ ṛ ṣ ṭ) disqualifies ETbb, Domitian, STEP and Tempora, which
are otherwise reasonable book faces. Real small caps and oldstyle figures
confirmed present, so the acronym setting is unaffected. XCharter ships
with TeX Live, so no font is added. Erewhon was the runner-up until the
metrics showed its x-height is smaller than the current face, which would
have moved readability the wrong way.

Bengali needed no manual adjustment: Scale=MatchLowercase re-derives Tiro
Bangla from the main font's x-height, and the Bengali-to-Latin height
ratio measured off the Scheme of Transliteration held at 2.12 -> 2.08
across the switch, within the ±1px noise of a 300 dpi read.

455 pages, down from 470. Underfull boxes 123 -> 84: XCharter's narrower
set gives the line-breaker more room at the same measure. Zero overfull,
zero font warnings, reprocheck 0 tokens short.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 01:15:55 +06:00
co-authored by Claude Opus 5
parent 05c41040f7
commit 1979450c82
4 changed files with 20 additions and 7 deletions
+2 -2
View File
@@ -72,8 +72,8 @@ Read those three files first, every session.
| `\emph{}` for italics, `` ` '' `` for quotes, `\ldots\ ` for …, `\&`, `\%`. | Typewriter conventions of the original (no ligatures etc.) need no special handling. |
## Typography (set once in `src/preamble.tex` — do not re-litigate per page)
12pt **TeX Gyre ScholaX** (Century Schoolbook; loaded by path from the TeX tree, which fontconfig does
not index) on a 5.95in measure; Liberation Sans for margin marks and running
12pt **XCharter** (Carter's Charter, extended; loaded by path from the TeX tree, which fontconfig does
not index — note the upright face is `*-Roman`, not `*-Regular`) on a 5.95in measure, ~73 characters a line; Liberation Sans for margin marks and running
heads; Tiro Bangla for Bengali. **Leading 1.59 — a 22.9pt line, the original's own, measured off the scan
at 300 dpi; the inline specimens set it, not the text** (see CONTINUATION.md). Inline specimens at native
size (`\igscale` = 72.27/300), which is the 74% of the line the original gives them. First line indented
+1 -1
View File
@@ -9,7 +9,7 @@ Character from 1778 to 1978*, Ph.D., SOAS, 1988. ProQuest scan, 431 PDF pages,
|---|---|
| Layout | **Reflowed** text. `\origpage{N}` marks where original page N begins: bold sans number in the outer margin + thin bar in the line + `page.N` hyper-target. Running head shows the original page range on each edition page; edition page number in the footer |
| Notes | Footnotes become **endnotes** (enotez) in a final *Notes* section, grouped "Notes to <Chapter>", keeping original numbers via `\fn{n}{text}`; marks link to notes, notes link back |
| Type | 12pt **TeX Gyre ScholaX** (Century Schoolbook) on a 5.95in measure; Liberation Sans for marks and heads. **Leading 1.59 — a 22.9pt line, which is the original's own, measured off the scan at 300 dpi by autocorrelating the row-ink profile; the inline specimens set it, not the text.** Inline specimens at **native size** (`\igscale` = 72.27/300), the 74% of the line the original gives them. First line indented 1.6em, `\parskip` 0.15em (ragged2e resets `\parindent` from `\RaggedRightParindent`, so both are set). **Ragged right and unhyphenated** (`\RaggedRight`, `\hyphenpenalty=10000`, `\lefthyphenmin=62`) — the typescript breaks only at spaces and at hyphens it actually typed. Hanging punctuation (microtype protrusion, dashes hang far less); widows and orphans forbidden with `\raggedbottom`. **Tiro Bangla** for Bengali that shows the modern script (the Scheme of Transliteration). Bengali that shows a **historical** typeface is never typed: it is cut from the scan by `tools/crop_inline.py` and set with `\ig` |
| Type | 12pt **XCharter** (Matthew Carter's Charter, extended; TeX Live, loaded by path) on a 5.95in measure — about 73 characters a line. Replaced TeX Gyre ScholaX on 2026-09-15 (Sammay): measured off the metrics, ScholaX had the smallest lowercase relative to its capitals of the faces considered, x-height/cap 0.645 against XCharter's 0.717, so its caps and ascenders dominated the page. XCharter covers all 35 non-ASCII characters here (the dots-below set defeats ETbb, Domitian, STEP, Tempora) with real small caps and oldstyle figures; Liberation Sans for marks and heads. **Leading 1.59 — a 22.9pt line, which is the original's own, measured off the scan at 300 dpi by autocorrelating the row-ink profile; the inline specimens set it, not the text.** Inline specimens at **native size** (`\igscale` = 72.27/300), the 74% of the line the original gives them. First line indented 1.6em, `\parskip` 0.15em (ragged2e resets `\parindent` from `\RaggedRightParindent`, so both are set). **Ragged right and unhyphenated** (`\RaggedRight`, `\hyphenpenalty=10000`, `\lefthyphenmin=62`) — the typescript breaks only at spaces and at hyphens it actually typed. Hanging punctuation (microtype protrusion, dashes hang far less); widows and orphans forbidden with `\raggedbottom`. **Tiro Bangla** for Bengali that shows the modern script (the Scheme of Transliteration). Bengali that shows a **historical** typeface is never typed: it is cut from the scan by `tools/crop_inline.py` and set with `\ig` |
| Structure | `\chapstart{Title}` = new page + centred bold head + PDF bookmark + notes group. One `.tex` per original page in `src/pages/pNNNN.tex` (NNNN = PDF page); `\chapstart` must come *before* `\origpage` in a file |
| Plates | Cropped from the 300 dpi scan by `tools/crop_plate.py` (scanner bars, page number, caption stripped; gutter shadow swept; deskewed when the page is out of square — the one step that resamples), embedded lossless at native resolution. `\plateop{N}{no}{img}{caption}` for a plate that begins page N; `\plate{no}{img}{caption}` otherwise. Per-page crop recipe recorded in the manifest `notes` column |
| Colophon | `src/colophon.tex` = leaf 2: description of the conversion + ProQuest notice text. Blank stamped leaf (PDF p.3) dropped and noted there |
+1 -1
View File
@@ -100,7 +100,7 @@ table is the authoritative record.)
the title page, carried in `src/pages/p0001.tex` as `plates/seal-p0001.png`, is not the School's seal but a
fourth `BIBL. LONDIN. UNIV.` stamp. It is dropped with the rest, and the claim in `src/colophon.tex` that a
seal was kept is gone with it.
- **Text face**: TeX Gyre ScholaX, added to the Dockerfile and in use since 2026-09-14. (This closes the old
- **Text face**: **XCharter** since 2026-09-15 (Sammay), replacing TeX Gyre ScholaX, which read as too decorative; the metrics bear that out (x-height/cap 0.645 vs 0.717). Tiro Bangla needs no explicit `Scale`: `MatchLowercase` re-derives it from the main font, and the measured Bengali-to-Latin ratio held at 2.12 -> 2.08 across the switch. ScholaX was itself added to the Dockerfile on 2026-09-14. (This closes the old
open question about a more readable face.)
- **p.141 (PDF 143), plate 57** — the label is **VF1** (a Vincent Figgins fount), settled by the author's own
note 132 on p.143.
+16 -3
View File
@@ -9,11 +9,24 @@
% markedly more readable than the Times-alikes at this measure, and still in the
% classic serif idiom of the original typescript. It lives in the TeX tree, which
% fontconfig does not index, so it is loaded by path.
\setmainfont{TeXGyreScholaX}[
Path=/usr/share/texlive/texmf-dist/fonts/opentype/public/scholax/,
Extension=.otf, UprightFont=*-Regular, ItalicFont=*-Italic,
% XCharter (Matthew Carter's Charter, extended). Chosen over TeX Gyre ScholaX on
% 2026-09-15 (Sammay) for readability: measured off the font metrics, ScholaX sets
% the smallest lowercase relative to its capitals of the faces considered —
% x-height/cap 0.645 against XCharter's 0.717 — so its caps and ascenders dominate
% while the lowercase you actually read stays small. Charter was drawn for
% low-resolution output, which is why its serifs are nearly flat and unornamented.
% It covers all 35 non-ASCII characters this text uses (the dots-below
% transliteration set defeats ETbb, Domitian, STEP and Tempora) and has real small
% caps and oldstyle figures. It ships with TeX Live, so no font is added.
% NB the upright face is *-Roman here, not *-Regular.
\setmainfont{XCharter}[
Path=/usr/share/texlive/texmf-dist/fonts/opentype/public/xcharter/,
Extension=.otf, UprightFont=*-Roman, ItalicFont=*-Italic,
BoldFont=*-Bold, BoldItalicFont=*-BoldItalic]
\setsansfont{Liberation Sans}
% Scale=MatchLowercase re-derives the Bengali size from whatever the main font's
% x-height is, so the switch to XCharter (x-height 0.466 -> 0.481) rescales Tiro
% Bangla by +3.2% on its own. Verified against the Scheme of Transliteration.
\newfontfamily\bnfont{TiroBangla-Regular.ttf}[Path=fonts/,ItalicFont=TiroBangla-Italic.ttf,Script=Bengali,Scale=MatchLowercase]
\newfontfamily\bnsignfont{TiroBangla-Regular.ttf}[Path=fonts/,Script=Bengali,Scale=MatchLowercase,Renderer=OpenType]
% isolated combining signs: set by glyph index ({\bnsignfont\XeTeXglyph N}) to avoid the shaper's dotted circle