Verbatim-safe typography, ^-punctuation quoting, full-range ^UUUU^, polyglot html

Typographic transforms (---, quote pairs, ~) no longer touch verbatim
text: @c/@code/@source_listing content and ^'...'^ spans show exactly the
characters written. "^" before any punctuation character quotes it in
every target (the apostrophe excepted: ^' opens a literal span), with the
new :resolve option on @@@target declaring per-target renderings. The
^UUUU^ code-point form accepts 4-6 hex digits, the full Unicode range.
The html output and transform spellings are polyglot (XML-valid), in
preparation for an EPUB target. New suites: transform_test, character_test
(engine), typography_test (SKS).

(from dev 07ce5ea86a0a)
This commit is contained in:
2026-08-23 20:48:26 +02:00
parent d982c0d6cc
commit 37b6ba1c4f
77 changed files with 1665 additions and 1608 deletions

View File

@@ -4,18 +4,23 @@
--serif: Libre Baskerville, serif;
--sans-serif: Open Sans, sans-serif;
--monospace: Inconsolata, monospace;
--sans-serif-scale: 1;
--monospace-scale: 1;
}
body {
font-family: var(--serif);
font-size: 1rem;
/* One normalization for every family switch: render each font so its
x-height is 0.5em (the design's anchor -- EB Garamond comes UP ~19%,
Open Sans down ~7%). Inherited, so headings, code, footnotes and any
future rule are covered with no per-site scale factors; this replaced
the --sans-serif-scale/--monospace-scale system (build-time metrics,
applied at four sites and silently missed everywhere else). The tex
target's equivalent is fontspec's MatchLowercase. */
font-size-adjust: ex-height 0.5;
}
tt, .tt, pre {
font-family: var(--monospace);
font-size: calc(1em * var(--monospace-scale));
}
h1, h2, h3, h4, h5 {
@@ -23,16 +28,11 @@ h1, h2, h3, h4, h5 {
font-weight: normal;
}
h1 {
font-size: calc(1.2rem * var(--sans-serif-scale));
}
h2, h3, h4, h5 {
font-size: calc(1.1rem * var(--sans-serif-scale));
}
/* Heading SIZES live in sks/section/css/section.css (one ladder, one
place); this file assigns only the family. */
p {
line-height: 1.3;
line-height: 1.5;
}
.plain {
@@ -50,7 +50,6 @@ p {
.sansserif {
font-family: var(--sans-serif);
font-size: calc(1em * var(--sans-serif-scale));
}
.ritalic {

View File

@@ -33,7 +33,7 @@ def html_fontify(text, font_symbol, font_size):
result = text
if cls:
if font_symbol == "c":
result = re.sub(" ", " ", result)
result = re.sub(" ", " ", result)
cls = f'class="{cls}"'
sty = ""
if font_size != 1: