Commit Graph
6 Commits
Author SHA1 Message Date
bdeshiandClaude Opus 5 05c41040f7 Diacritic corrections, link styling, and a build lock
Eight diacritic corrections at seven sites, each verified against the page
image at 900 dpi:

  p0049  Nastaʿlīq -> Nasta`līq   the mark is a quote, not a ʿayn (Sammay)
  p0072  Cálidás   -> Cálidās
  p0256  Rajākṛṣṇa -> Rājākṛṣṇa
  p0260  Īsvaracandra -> Īśvaracandra  (x2)
  p0430  Iśvaracandra -> Īśvaracandra
  p0430  Gītā -> Gīta  (x2)
  p0430  Munṣī -> Munśī

Found by two nets over the transcription: a rare-character inventory
(U+02BF appeared exactly once in 431 pages — the tell) and a check for
names that appear with more than one accenting, 84 occurrences of which
~32 are now checked. Neither net catches a name mis-transcribed the SAME
way everywhere, so this is a partial sweep, not a clean bill.

The French accents are all handwritten additions in the scan — pen-drawn
cedillas and acutes — applied inconsistently by the author and reproduced
per instance. All of that cluster checks out.

Clickable regions now carry a 0.4pt hairline rule in RGB(95,125,165) on
the Contents/List-of-Plates page numbers and on resolved cross-references;
endnote superscripts and whole-line entries stay unmarked. polish.py emits
\xref for the former and \hyperlink for the latter so the two differ.

Also: plate 1's List-of-Plates entry uses \plx, which build_maps() did not
scan, so plate 1 was the one plate of 178 whose "pl. 1" references never
linked.

build.sh takes an atomic mkdir lock: two builds sharing work/ corrupt
main.aux and produce an error that names the wrong file entirely.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 00:50:04 +06:00
bdeshiandClaude Opus 5 9776331de0 Revert lever 3; record why the parfillskip lever cannot be tuned
A finite \parfillskip was tried at 0.75\textwidth (no effect) and then,
after deriving the threshold, at 0.15\textwidth (real effect, bad
trade). Badness is 100(G/X)^3 against tolerance 4000, so the threshold
is G ~ 3.4(X + 24pt): on a 430pt measure any X at or above
0.25\textwidth prescribes a threshold longer than the measure and can
never fire. The only values in range are 0.15 and 0.10, and 0.10 bites
harder — so the lever is effectively binary.

At 0.15 it did what it promised and cost more than it bought:

  paragraph-final   mean 161.7 -> 142.7, p90 319 -> 267, max 398 -> 341
  paragraph-internal median 22.8 -> 35.7pt, >3em short 29.4% -> 48.0%
  underfull boxes   123 -> 1902

There are far more interior lines than final ones. Back to ragged2e's
default, with the derivation kept in the preamble so this is not
rediscovered by experiment a third time.

Net of all five levers: 5 fixed a real conflict, 2 and 4 are harmless
and near-inert here (the ragged right margin is never reached, and only
1.6% of lines begin with a protrudable character), 1 and 3 were
reverted as measurably harmful. Rag is within ~1% of where it started.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 23:06:37 +06:00
bdeshiandClaude Opus 5 4116c4eca6 Plates full-measure inside quotations; rag levers measured
\platefullmeasure resets \parshape for a plate's own paragraph, so a
plate keeps the full text measure even where the original interrupts a
displayed quotation with one. Verified in the built PDF:

  plate  50 (p0130)  319.2 x 484.3 pt   height-limited, unchanged
  plate  51 (p0131)  430.5 x 356.0 pt   full measure (was 372.2)
  plate  97 (p0218)  430.2 x 274.8 pt   full measure (was 372.2)
  plate 165 (p0387)  351.1 x 484.5 pt   height-limited, unchanged

Line-breaking levers, measured with work/rag.py over 102
paragraph-internal lines on nine text pages:

  1. permitted rag 2em -> 4em: made every statistic WORSE (median rag
     22.8 -> 24.8pt, sd 79.6 -> 89.1, lines >3em short 29.4 -> 35.3%)
     and emptied the log of underfull warnings, which was the goalposts
     moving rather than a gain. Reverted; the preamble says not to try
     it again without measuring.
  2. \linepenalty=30: no measurable change on this sample. Kept.
  3. finite \RaggedRightParfillskip: inert as set — 0.75\textwidth is
     322.5pt of stretch, past the 90th percentile of last-line rag, so
     it never incurs badness. Kept, pending a value that bites.
  4. protrusion factor 1100 -> 1500: below the resolution of a
     line-ending metric; it changes how even the rag looks, not where
     lines break. Kept, unquantified.
  5. \emergencystretch was set to 3em and silently overridden to 1em
     lower down; the override is gone. No visual effect (zero overfull
     either way), but the conflict was real.

Also fixed: \RaggedRight assigns \rightskip, \parfillskip AND \parindent
from its own parameters at every invocation, so setting those directly
does nothing. All three are now set as \RaggedRight* before the call.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 21:33:42 +06:00
bdeshiandClaude Opus 5 1caa701057 Untrack src/main.tex — build.sh regenerates it on every run
It is assembled from src/preamble.tex, src/colophon.tex and work/pages
each build, so it churned in the diff and carried no information the
tracked sources do not.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:30:06 +06:00
bdeshiandClaude Opus 5 113d280103 Fix plate overhang inside quotations; clear the last build warnings
Four plates overhung the measure and displaced into the right margin.
On those pages the original interrupts a displayed quotation with a
plate (p0129/30/31/32, p0217/18, p0386/87), so \plateop ran inside
extract's \addmargin, where the paragraph is set by \parshape to
\linewidth — while the minipage was built at \textwidth. The quotation
indents 0.5in + 0.3in, so the overhang was exactly 0.8in, which is also
\marginparwidth; that coincidence made it look like a marginnote fault
for a long time. \plateop, \plate and \fig now build at \linewidth,
correct in any context and unchanged on the other 174 plates.

Also: \mdseries on the three \bnsignfont cells of the Scheme of
Transliteration, which inherited the table's \bfseries and asked for a
bold Tiro Bangla that does not exist.

The build log is now clean — no overfull boxes, no font warnings. The
remaining underfulls are the documented cost of ragged right with
hyphenation off.

Docs: PLAN.md's Type row carried four stale values (11pt, 5.2in measure,
leading 1.22, hyphenation on) and now records the measured leading and
its derivation; CLAUDE.md's macro table documents \chapstart's optional
short title and \toclnp; QUESTIONS.md splits the quotation slips by
whether the source can be consulted at all — five are unpublished
archive material and are a record, not a task.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 20:29:55 +06:00
bdeshiandClaude Opus 5 82849eb94d Initial commit: Ross 1988 re-typeset edition
A searchable, re-typeset edition of Fiona Ross, "The Evolution of the
Printed Bengali Character from 1778 to 1978" (Ph.D., SOAS, 1988),
transcribed from the 431-leaf ProQuest scan. All 431 pages done; 178
plates and 410 inline type specimens cut from the scan; 51 errata.

Tracked: the transcription (src/pages), the preamble and its typographic
decisions, the cut images (plates/ — not reliably regenerable, the crop
specs for the inline cuts were never scripted), tools, and the four
working documents.

Not tracked: the built PDF, which `make` remakes from src/ and plates/;
the ProQuest scan under source/, which is third-party and needed only by
`make prep` and `make plate`; scans/ and work/, both regenerable.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:03:25 +06:00