🔧 Auto-commit from sysupdate on 2026-05-19 21:49
This commit is contained in:
@@ -0,0 +1,217 @@
|
||||
---
|
||||
name: ARC web typography spec coverage — what still needs care
|
||||
description: Inventory of web-only and web-medium typography elements in ARC that have NOT been considered with the same care as the major spec sections. The link work of 2026-05-02 surfaced that "humble" typography (links) had been left to browser-defaults plus ad-hoc accumulation; the same is likely true for several other surfaces. Per steward direction 2026-05-02 — "the work needs to be bien-fait." Care is constitutive; no element is too humble for considered attention.
|
||||
type: project
|
||||
originSessionId: 8d9ac240-47df-4578-aec1-a9dd32965027
|
||||
---
|
||||
# ARC web typography spec coverage — what still needs care
|
||||
|
||||
**Date:** 2026-05-02
|
||||
**Discipline:** *bien-fait* — well-made. Care is constitutive of ARC; no typographic surface is too humble for considered first-principles attention. The link work surfaced that even "the humble link" had been treated ad-hoc; the same is likely true for several other surfaces.
|
||||
|
||||
**Origin:** After completing §VII.c Links spec + the migration that converged 14+ context-specific link rules to "one rule, two exceptions," steward asked: *"what other, web-only typography needs spec? We've been full of care for the typography in general, but the work we've just done on something so humble as the link shows that some areas have not been considered carefully enough."*
|
||||
|
||||
The pattern noticed: implementation existed (browser default + minor reset), but no first-principles consideration had been brought. The same diagnostic test applies to the items below: *has this been considered, or merely styled?*
|
||||
|
||||
---
|
||||
|
||||
## Tier 1 — almost certainly need attention soon
|
||||
|
||||
These are *foundational reading-flow furniture* — a reader will encounter them dozens of times per essay. Each currently sits on browser-defaults or near-defaults.
|
||||
|
||||
### 1. Lists ✓ DONE 2026-05-02 — spec §I.b
|
||||
|
||||
Spec §I.b drafted + SCSS landed in commit `8980af9`. Unordered → en-dash via `list-style-type: '\2013\00a0'`; ordered → old-style figures via `font-variant-numeric: oldstyle-nums tabular-nums`; definition `<dt>` → italic (banish-bold posture). Dead `:before` rule in `_dark.scss` retired. Nested-list spec deferred until needed.
|
||||
|
||||
### 2. Inline `<code>` + code blocks ✓ DONE 2026-05-02 — spec §I.c
|
||||
|
||||
Spec §I.c drafted + SCSS landed in commit `36e5d08`. Inline + block treatments separated; Pandoc/Skylighting class targeting (the previous `_syntax.scss` was 172 lines of dead Jekyll/Rouge code targeting `.highlight .c` etc. that Pandoc never emits — replaced wholesale, net -88 lines). Quiet palette per Rutter's simplification: gray + italic for comments; Pompeian green (terre verte, color-wheel opposite of Pompeian red — no link confusion) for keywords; italic alone for strings. New `$code-keyword-color` variable (light/dark pair) added to `_variables.scss`, exposed as `var(--code-keyword)` in theme cascade. Code-captions / language-indicators not specced — defer until needed.
|
||||
|
||||
### 3. Headings hierarchy beyond H1 ✓ DONE 2026-05-02 — spec §I.d
|
||||
|
||||
Spec §I.d drafted + SCSS landed in commit `9ce607e`. Minor-third modular scale (ratio 1.2) per Rutter — h6 = body floor (previous SCSS had h5/h6 *smaller* than body, typographically wrong); chained variables (`$heading-scale-ratio` + `$h1-size`...`$h6-size`) so one ratio change updates entire scale. Per-level line-height tuned (1.2 → 1.5 from h1 to h6); letter-spacing -0.01em on h1-h2 for optical compensation. Style: upright across all levels (h3 italic removed per steward direction — no strong precedent for that level specifically; size differential alone carries hierarchy). New "Banish-bold — lineage" subsection naming Tschichold/Penguin/Bringhurst-restraint and the literary-contemplative tradition that ARC inherits. New "Font stack — current and future" subsection: ARC currently loads Regular (400), Italic (400), Bold (700) of EB Garamond; Bold unused per banish-bold (audit candidate); Medium (500) and Semibold (600) available in typeface, can be added selectively if heading-emphasis-via-weight ever wanted (the principled path that doesn't break banish-bold — intermediate cuts of the same typeface, not full bold).
|
||||
|
||||
---
|
||||
|
||||
## Tier 2 — worth considering when the moment fits
|
||||
|
||||
### 4. Smart quotes, em-dash, en-dash conventions
|
||||
|
||||
- Bringhurst's territory exactly (*Elements* §5)
|
||||
- Currently relying on Pandoc defaults
|
||||
- Explicit ARC convention worth specifying:
|
||||
- English: curly quotes (primary "..." secondary '...'), em-dash usage (spaced or unspaced — steward to decide), en-dash for ranges
|
||||
- Multi-language extends: French guillemets «..», German „..." — per the multi-language spec already pending
|
||||
- Connects to the multi-language spec project memory
|
||||
|
||||
### 5. Numerals — lining vs old-style + tabular
|
||||
|
||||
- Currently `lining-nums tabular-nums` in apparatus contexts (sequence-listing-numeral, dateline)
|
||||
- Body text numerals (footnote markers, dates inline, ages, counts) probably default
|
||||
- Bringhurst is firm: old-style figures (oldstyle-nums) for body prose; lining-nums for technical/apparatus
|
||||
- A unified numeral spec would clarify when each variant is right
|
||||
- EB Garamond has both sets available; needs `font-variant-numeric` declarations per context
|
||||
|
||||
### 6. Selection styling (`::selection`) ✓ DONE 2026-05-02 — spec §III.b
|
||||
|
||||
Spec §III.b drafted + SCSS landed in commit `04944eb`. Quiet Pompeian-tint highlight: 25% accent + 75% bg (light), 35% accent + 65% bg (dark), via SCSS compile-time mix() — solid color, no opacity ambiguity. Text color not overridden — body color flows through; browser handles contrast naturally across themes. Treatment principle: selection is an interaction state of the typography, not separate apparatus; its color belongs to the existing palette family (same Pompeian red that carries links + future register markers extends to "this is what you've selected").
|
||||
|
||||
---
|
||||
|
||||
## Tier 3 — corners worth at least naming
|
||||
|
||||
### 7. `<abbr>` / `<mark>` — already styled, never specced
|
||||
|
||||
- `<abbr>` has dotted-underline + cursor:help treatment in `_typography.scss:97-101` — needs spec home
|
||||
- `<mark>` has rgba background-color treatment in `_typography.scss:104-108` — needs spec home
|
||||
- Both work; need spec articulation for consistency and future-proofing
|
||||
|
||||
### 8. `<table>` and table-related elements ✓ DONE 2026-05-03 — spec §I.g
|
||||
|
||||
Spec §I.g drafted + SCSS landed in commit `b73bda7`. Header weight: Medium (500), NOT Bold (banish-bold honored even though tables are exempt from body-prose reasoning; Bold still too loud for ARC's restrained register). Italic alone insufficient for scanning per Rutter (tables consulted not read). Small caps NOT used (governed elsewhere; principle: typographic marks with governed meaning are reserved). Three header signals: Medium weight + heavier border-bottom + heading color. Striped rows avoided (Bringhurst-firm). Mobile scrollable. Caption styling deferred until first ARC table uses `<caption>`.
|
||||
|
||||
### 9. Print stylesheet
|
||||
|
||||
- Does ARC have one? Likely not, or minimal
|
||||
- Reader-printing-an-essay is a real use case (long-form reading, archive)
|
||||
- Print needs distinct treatment for: apparatus glyphs, sidenotes (margin disappears at narrow paper widths — stack inline?), links (URL appended? small-caps? footnote-style?), Reading Compass (probably suppress), backgrounds (suppress)
|
||||
- `@media print` block in dedicated `_print.scss` partial
|
||||
|
||||
### 10. `prefers-reduced-motion`
|
||||
|
||||
- Small accessibility hook
|
||||
- Current `transition` declarations in `_typography.scss` (link hover) and elsewhere should honor `@media (prefers-reduced-motion: reduce)` to disable
|
||||
- Not just accessibility — a quieter contemplative-default move
|
||||
|
||||
---
|
||||
|
||||
## Font stack inventory (2026-05-02 — survey + actions)
|
||||
|
||||
### Currently loaded (all self-hosted under `static/fonts/`; no runtime CDN; GDPR/privacy preserved)
|
||||
|
||||
| Family | Weight | Style | Subsets | Provenance |
|
||||
|---|---|---|---|---|
|
||||
| EB Garamond | 400 | normal | combined (incl. Greek per After-the-Reply rendering) | original ARC |
|
||||
| EB Garamond | 400 | italic | combined | original ARC |
|
||||
| EB Garamond | **500** | normal | latin + latin-ext (separate, unicode-range) | added 2026-05-02 from fontsource |
|
||||
| EB Garamond | **600** | normal | latin + latin-ext (separate, unicode-range) | added 2026-05-02 from fontsource |
|
||||
| EB Garamond | 700 | normal | combined | original ARC; **banish-bold candidate** |
|
||||
| EB Garamond SC | 400 | normal | small-caps subset | original ARC |
|
||||
| EB Garamond SC Display | 400 | normal | small-caps display subset | **@font-face declared 2026-05-02** (file was on disk + referenced in `_utilities.scss:10` but undeclared — silent rendering bug) |
|
||||
| IBM Plex Sans | 400 | normal | basic | original ARC |
|
||||
| IBM Plex Sans | 500 | normal | basic | original ARC |
|
||||
| IBM Plex Sans | 700 | normal | basic | original ARC |
|
||||
| IBM Plex Mono | 400 | normal | basic | original ARC |
|
||||
|
||||
### Bugs fixed this session (commit `5753fd7`)
|
||||
|
||||
1. **EB Garamond SC Display silent-bug** — file on disk, referenced in `_utilities.scss:10`, never @font-face declared. Wherever the rule fired, rendering silently degraded to regular `$serif-family`. Fixed: @font-face declaration added.
|
||||
2. **font-weight 600 inconsistent fallback** — `_chamber.scss:14, 162` referenced Semibold but no Semibold loaded; browser fell back to either Medium (500) or Bold (700) depending on rendering algorithm. Fixed: Semibold loaded.
|
||||
|
||||
### Held for future (NOT loaded)
|
||||
|
||||
- **EB Garamond Medium Italic / Semibold Italic** — only useful if italic+emphasis simultaneously; rare, no current need
|
||||
- **EB Garamond Bold Italic** — moot if banish-bold persists
|
||||
- **EB Garamond Italic Small Caps** — useful for some apparatus contexts; deferred until needed
|
||||
- **IBM Plex Mono Italic** — no current SCSS reference; could be useful for italicized apparatus mono if a future convention wants it
|
||||
- **IBM Plex Mono Medium / Bold** — no current need
|
||||
|
||||
### Audit candidates (remaining)
|
||||
|
||||
1. **`IBMPlexSans-Italic.woff2`** — file on disk, never referenced anywhere in SCSS, no @font-face. Pure dead weight. Either declare @font-face + use OR remove from disk.
|
||||
2. **EB Garamond Bold (700) @font-face** — loaded but should be unused per banish-bold posture. Becomes removable dead load AFTER the 17 banish-bold violations are cleaned.
|
||||
3. **17 banish-bold violations across SCSS** — `$bold-weight` / `font-weight: 700` references that should retire per banish-bold posture (Tschichold/Penguin/Bringhurst-restraint). Includes `_post.scss:154+` anchor-link `#` `::before { font-weight: $bold-weight }`.
|
||||
4. **`$font-size-xxl` / `$font-size-xl` / `$font-size-lg`** — may be unused after §I.d heading-scale variables took over. Verify usage; remove if dead.
|
||||
5. **`_dark.scss` heading rule (`h1, h2, h3, h4, h5, h6 { color: var(--heading) }`)** — no-op; the bare-base heading rule already sets `color: var(--heading)` and the cascade will pick up the dark-mode value automatically through the custom-property change. Removable.
|
||||
|
||||
### Long-term option (held)
|
||||
|
||||
- **Variable-font migration** — EB Garamond ships as a variable .woff2 with weight + italic axes. A single variable file could replace multiple static-weight files. Tradeoffs: single file ~150-300 KB vs 3-5 separate ~70 KB files; gives weight-axis flexibility for any heading-emphasis tuning without additional fetch. The `@font-face` syntax differs slightly (`font-weight: 400 700` ranges vs single values). Architectural decision deferred.
|
||||
|
||||
### Format
|
||||
|
||||
WOFF2 confirmed correct — modern web standard, Brotli-compressed, universal browser support since 2018+. ARC's choice is right; nothing to change.
|
||||
|
||||
---
|
||||
|
||||
## Cross-cutting — exhaustive SCSS audit
|
||||
|
||||
Steward direction 2026-05-02 (after the lists spec landed): *"at some point an exhaustive scss audit would be a good idea, I'd be very surprised if there weren't other stale/dead/blocking/conflicting code in there. I'd like to know that what is there is all used and that there is no unnecessary cruft."*
|
||||
|
||||
**Why this is warranted:** the §VII.c Links work + Lists work together surfaced multiple categories of cruft in just the partials we touched:
|
||||
|
||||
- **Dead code:** `_dark.scss` link block (overridden by `!important` and never cleaned up); `_dark.scss` `li:before` rule (never functional, `:before` doesn't exist on `<li>` by default); pseudo-element underline arms-race (`!important` in `_typography.scss` provoking `!important` in nav, frontispiece, avatar-link defenses)
|
||||
- **Conflicting rules:** the `.page-content a` block in `_post.scss` overriding the global link rule with red-text-on-hover-border instead of §VII.c
|
||||
- **Redundant rules:** the lex sidenote density-exception duplicated between line 101 (broad) and line 295-302 (narrower, inside @include desktop) — narrowed but the @include desktop duplicate kept
|
||||
- **Stale references:** the `voicesCtx` (already removed), other artifacts of retired branches; SCSS comments referencing systems that have been retired
|
||||
|
||||
Since these all surfaced in 4-5 hours of focused work on TWO elements (links + lists), the corpus-wide expectation is that significantly more cruft exists in untouched partials.
|
||||
|
||||
**Audit scope (when it happens):**
|
||||
|
||||
- Scan every `.scss` partial under `scss/AldineXXI/` (excluding `archive-v1/` and `*.bak`)
|
||||
- For each rule: is the selector still in use anywhere (templates, content, generated HTML)? Is the rule overridden universally by a later rule? Does any `!important` correspond to a real cascade conflict, or is it defensive against something now removed? Are there rules whose comments cite retired systems (UCE, voicesCtx, the old triptych, polyphonic marginalia, etc.)?
|
||||
- For each `!important`: justify or retire. The link migration showed that `!important` is almost always a sign of a cascade fight that should be reasoned, not enforced.
|
||||
- For each pseudo-element override (`::after`, `::before`, `::marker`): is the original rule still in place? If not, the override is dead.
|
||||
- Output: a categorized list of removable / consolidatable rules + a one-pass cleanup commit (or batched commits per file)
|
||||
|
||||
**Sequencing:** This is a 3-6 hour focused session. Best after the next handful of element specs land (so we don't audit then immediately add things). Could be sequenced after Tier 1 (lists ✓ done; code; headings) is complete — at that point the spec coverage is comprehensive enough that the audit can confidently say "if it doesn't match a spec section, it's a candidate for removal."
|
||||
|
||||
**Cross-references:** `feedback-arc-link-treatment-one-rule-two-exceptions.md` (the discipline that makes the audit possible — predictability lets you spot deviations); `project-arc-rework.md` (the broader cleanup landscape).
|
||||
|
||||
---
|
||||
|
||||
## Tier 0 — already in spec or in active progress (cross-reference)
|
||||
|
||||
These have been considered and are spec'd; included here so they don't get re-raised:
|
||||
|
||||
- §I.b **Lists** — spec'd 2026-05-02; SCSS landed; nested-list spec deferred until needed
|
||||
- §I.c **Code** — spec'd 2026-05-02; SCSS landed (`_syntax.scss` rewritten from dead Rouge to live Pandoc/Skylighting); Pompeian green for keywords; italic-alone for strings (Rutter simplification); `$code-keyword-color` added to palette
|
||||
- §I.d **Headings** — spec'd 2026-05-02; SCSS landed; minor-third modular scale (ratio 1.2); upright across all levels (h3 italic removed); banish-bold lineage paragraph (Tschichold/Penguin/Bringhurst); font-stack note re Medium/Semibold as future option
|
||||
- §I.e **Numerals** — spec'd 2026-05-03; articulates the existing oldstyle-default + lining-for-apparatus convention centrally (architecture was already correct in SCSS)
|
||||
- §I.f **Smart Punctuation** — spec'd 2026-05-03; convention switch from Chicago em-dash to Bringhurst spaced en-dash; 848 em-dashes converted in content + 344 in spec; Oxford comma + capitalization conventions added
|
||||
- §I.g **Tables** — spec'd 2026-05-03; SCSS landed; Medium (500) header weight per Rutter (tables scanned not read); small caps reserved for governed contexts; striped rows avoided
|
||||
- §III.b **Selection** — spec'd 2026-05-02 (retuned 2026-05-03 after duplicate-rule fix surfaced via §III.b not rendering)
|
||||
- §VII.c **Links** — spec'd 2026-05-02; SCSS migrated; tuning iteration ongoing
|
||||
- **Bold audit (posts/)** — done 2026-05-03; 58 bold→italic conversions in 3 posts; pages/ + chamber/ deferred
|
||||
- §VII.b **Sources** — spec'd 2026-05-01 (PROVISIONAL); first instance live on After the Reply
|
||||
- §XII **Sidenotes** + §XII.b Register Markers + §XII.c Preface + §XII.d Body-Block — all spec'd
|
||||
- §VII **Apparatus** (dateline, epigraph, footnotes, captions, post metadata, dedications) — spec'd
|
||||
- §IV **Ornament Taxonomy** (Pause + Close, section breaks) — spec'd
|
||||
- §VIII **Image System** (figure / figcaption) — spec'd
|
||||
- §XI **Awaiting Governance** — drop caps, polyphonic marginalia (deferred)
|
||||
|
||||
## Open question (from §VII.b note 2026-05-02)
|
||||
|
||||
**Source-glyph link (§)** in essay apparatus locator currently does NOT follow §VII.c (no underline; color-shift on hover only). Spec note logged in §VII.b. Decision deferred: formal exception status (alongside avatar-link + Reading Compass) OR bring into §VII.c conformance. Argument for exception: § already carries glyph weight; underline beneath would compete. Argument against: predictability principle.
|
||||
|
||||
---
|
||||
|
||||
## Genuinely-don't-need-it for ARC's content shape
|
||||
|
||||
Naming these so they don't get accidentally re-raised:
|
||||
|
||||
- **Forms** — none exist (no contact form, no comment system, no newsletter signup at the typographic level)
|
||||
- **`<kbd>`** — no keyboard-input register present in ARC's content
|
||||
- **Scrollbar styling** — purely cosmetic, distracting work
|
||||
- **`<details>` / `<summary>`** — no current use, but if introduced (progressive-disclosure footnotes?), would need spec
|
||||
- **`<address>`** — not used; colophon serves this function differently
|
||||
|
||||
---
|
||||
|
||||
## How this list is meant to be used
|
||||
|
||||
NOT a sweep-it-all backlog. Each item enters its own focused session when the moment fits — the same shape as the link work today (one piece, considered carefully, spec first, implementation flows, tuning iterates).
|
||||
|
||||
Suggested ordering: **Tier 1 first**, in roughly the order listed (lists → code → headings hierarchy). Tier 2 surfaces opportunistically (a piece that uses lots of inline code surfaces inline code; a multi-language spec session naturally surfaces smart-quote conventions). Tier 3 lives until the moment forces it.
|
||||
|
||||
The discipline: **bien-fait**. Care is the principle; the size of the surface doesn't determine the depth of the consideration. The link case proved this.
|
||||
|
||||
---
|
||||
|
||||
## Cross-references (so this doesn't get lost)
|
||||
|
||||
- **`project-arc-rework.md`** — main ARC todo / rework landscape. This memory is linked from there under the Style Guide section. When the rework doc is consulted, this list surfaces. When this list is consulted, the broader rework context is one hop away.
|
||||
- **`project-arc-breadcrumb-spec-pending.md`** — adjacent: type-pass + breadcrumb spec session. The About-enfilade siblings classification question (Hearth misclass + the broader "what `class:` should the door pages share") will surface during type-pass; this typography list and the type-pass should be sequenced together when the moment fits.
|
||||
- **`feedback-arc-link-treatment-one-rule-two-exceptions.md`** — the discipline that produced this list. *One rule, two named exceptions, everything else predictable* applies to lists / headings / code / etc. just as much as to links.
|
||||
- **AldineXXI specification** at `_Dev/animal-davidglidden-eu/docs/AldineXXI-Codex/AldineXXI-specification.md` — single source of truth; SCSS flows from it; new spec sections drafted here go in there, in the right §.
|
||||
Reference in New Issue
Block a user