docs(fonts): the README still called the standard-14 widths an estimate

F1 replaced the character-class approximation with the published standard-14 metrics, and
`helvetica_width` has delegated to `Std14::Helvetica` ever since. The README kept describing it as
PdfCraft's own estimate and, more importantly, said "No metrics file or font program from any
vendor is bundled" -- which stopped being true when the generated tables landed.

They are Adobe-authored non-visual technical data, the item AGENTS.md 1.1 permits, carried in
std14_metrics.rs with adobe_data = true in ATTRIBUTION.toml. A contributor reading the README
would have concluded there was no vendor data here at all, which is the one kind of error that
matters in a provenance claim. Says what is bundled now, and what still is not: widths and
encodings, never a font program or a typeface.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
Tanish MankuandClaude Opus 5 committed 2026-10-14 15:32:36 -07:00
1 parent e0c63546bb
commit f802257be6
1 file changed
+5 -3
+5 -3
View File
@@ -4,9 +4,11 @@ Layer L2. Font helpers for the appearance streams PdfCraft generates (comments,
Today it holds what generated appearances need without a font program:
- `helvetica_width`: an approximation of Helvetica's proportions by character class. No metrics
file or font program from any vendor is bundled; widths are PdfCraft's own estimates, good
enough for line breaking and alignment, not for typesetting.
- `helvetica_width`: the **exact** standard-14 advance widths, via `Std14::Helvetica`. It was an
estimate by character class until the generated tables landed; those tables are Adobe-authored
non-visual technical data, the item `AGENTS.md` §1.1 permits, carried in `std14_metrics.rs` with
`adobe_data = true` in `ATTRIBUTION.toml`. **No font program or typeface from any vendor is
bundled** — widths and encodings only. Reach for `Std14` directly for any other face.
- `wrap`: greedy line breaking with that measure (paragraphs on newlines, long words split).
- `win_ansi`: Unicode → WinAnsiEncoding bytes (`?` for characters it can't represent), and
`literal` to write bytes as a PDF literal string. Nothing writes that `?` silently. Callers