Raise the text to 13pt; correct the characters-per-line figure

The line was 78 characters at 12pt, above the 60-75 band — not the "~73"
I had recorded. That figure came from a font-metric estimate (measure
divided by the unweighted mean lowercase advance, counting no spaces) and
was simply wrong. Measured directly off the built PDF — 79 full lines,
glyphs plus inter-word gaps — 12pt ran 78 and 13pt runs 73.

So this is not restoring a lost measure, it is fixing a line that was too
long, and raising the size is the better of the two fixes: narrowing the
measure to 5.7in would have shortened the line while leaving the type
small. (Sammay proposed the size bump.)

Set through fontspec Scale=1.0833 over the 12pt class, deliberately: it
scales every size in the family, including the plate captions, but leaves
\baselineskip class-derived, so \setstretch{1.59} still yields the 22.9pt
line measured off the original. That leading is anchored to the inline
specimens and must not drift with the type size.

Verified after the build:
  characters per line   78 -> 73        (target band 60-75)
  pages                455 -> 479
  underfull boxes       84 -> 71
  Bengali/Latin ratio  2.08 -> 2.11     Scale=MatchLowercase is applied
                                        after the main font's Scale, so
                                        Tiro Bangla needed no adjustment
  specimens            still clear of the lines above and below
  overfull 0, font warnings 0, reprocheck 0 tokens short

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 11:01:23 +06:00
co-authored by Claude Opus 5
parent e602e7e631
commit 9b02bba985
3 changed files with 19 additions and 5 deletions
+4 -2
View File
@@ -72,8 +72,10 @@ 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 **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
13pt **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`; set via fontspec `Scale=1.0833` over a
12pt class, which scales every size in the family but leaves `\baselineskip` class-derived so the
leading stays put) on a 5.95in measure — **73 characters a line, measured off the built PDF**; 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 **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` |
| Type | 13pt **XCharter** (Matthew Carter's Charter, extended; TeX Live, loaded by path) on a 5.95in measure — **73 characters a line, measured** (79 full lines off the built PDF, glyphs plus inter-word gaps). At 12pt it ran 78, above the 60-75 comfortable band; raised to 13pt on 2026-09-15 (Sammay) via fontspec `Scale=1.0833` over the 12pt class, which leaves `\baselineskip` class-derived so the specimen-anchored 22.9pt leading does not drift. An earlier note in these files put the 12pt line at "~73 characters" — that was a font-metric estimate, unweighted over the lowercase alphabet and counting no spaces, and it was wrong. 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 |
+14 -2
View File
@@ -19,11 +19,23 @@
% 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.
% Scale=1.0833 sets the text at 13pt while the class stays 12pt. Measured off the
% built PDF (79 full lines, glyphs plus inter-word gaps) the 12pt line ran 78
% characters — above the 60-75 comfortable band. 13pt brings it to 72. The earlier
% figure of "~73 characters" in these notes was a font-metric estimate (measure
% divided by the unweighted mean lowercase advance, counting no spaces) and was
% simply wrong; only the direct measurement is trustworthy (work/cpl2.py).
%
% Scaling through fontspec rather than the class option is deliberate: it scales
% every size in the family (\small, \footnotesize, the plate captions) but leaves
% \baselineskip class-derived at 12pt, so \setstretch{1.59} still yields the 22.9pt
% line measured off the original. That leading is anchored to the inline specimens
% and must not drift with the type size.
\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}
BoldFont=*-Bold, BoldItalicFont=*-BoldItalic, Scale=1.0833]
\setsansfont{Liberation Sans}[Scale=1.0833] % margin marks and running heads track the text
% 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.