PDF: Font-Fallback für Emoji und Sonderzeichen - 2070 Missing-character-Faelle behoben
This commit is contained in:
parent
9b461426fc
commit
abc7a5693f
8 changed files with 198 additions and 1 deletions
39
PROGRESS.md
39
PROGRESS.md
|
|
@ -2592,6 +2592,45 @@ eine **doppelte Nummer** — „Abbildung 21: Abb. 7.2: …". Die erste vergibt
|
|||
`nummeriere_marken()`. Das betrifft alle 48 Abbildungen und besteht seit Langem; behoben wäre
|
||||
es dadurch, dass die LaTeX-Nummerierung der Gleitumgebung unterdrückt wird.
|
||||
|
||||
### Sonderzeichen in der PDF-Fassung — ein stiller Font-Fehler behoben ✅
|
||||
|
||||
In der gesamten PDF-Fassung fehlten alle Zeichen, die Times New Roman nicht mitbringt: die
|
||||
Lernelemente-Symbole (⭐ ✏ ❓ 🎯 🚀 …), aber auch die Sub-/Superskripte (₀ ₁ ₂ ₜ ₙ ⁶ ᵀ) und die
|
||||
langen Pfeile (⟹ ⟶ ⟵ ⇒). Das alte LaTeX-Protokoll enthielt **rund 2 070**
|
||||
`Missing character`-Meldungen; die Zeichen fielen stillschweigend aus dem Druckbild.
|
||||
Zwei Ursachen, beide lange unentdeckt, weil die Website die Zeichen korrekt zeigt
|
||||
(der Browser weicht selbst auf eine Emoji-Schrift aus):
|
||||
|
||||
* xelatex hat keine automatische Font-Fallback-Kette — fehlt einem Zeichen der Glyph, wird
|
||||
es weggelassen, ohne dass der Bau fehlschlägt.
|
||||
* Die pandoc-Variable `emoji-font: "Noto Color Emoji"` wertet der LaTeX-Writer
|
||||
(pandoc 3.1.3) **nicht aus** — sie hat seit ihrer Einführung still nichts getan.
|
||||
|
||||
**Die Lösung ist zweistufig**, weil die Zeichen auf zwei Wegen in den PDF gelangen:
|
||||
|
||||
1. **`pandoc/emoji_fallback.lua`** (neu) — ein pandoc-Filter, der die betreffenden Zeichen
|
||||
im Fließtext in `{\texorpdfstring{\symfont{…}}{…}}` einschüttet. `\symfont` ist
|
||||
**Symbola** — die einzige Schrift auf dem Bausystem, die das komplette Set abdeckt
|
||||
(Noto Color Emoji funktioniert unter XeTeX nicht: die Zeichen landen im `nullfont`);
|
||||
monochrom, für den Drucksatz ohnehin passend. Der `\texorpdfstring`-Antil hält die
|
||||
PDF-Lesezeichen ruhig und erhalten. Variationsselektoren (U+FE0F) werden entfernt.
|
||||
Zwei pandoc-3.1.3-Eigenheiten unterwegs gefunden: Filterhandler funktionieren **nur als
|
||||
globale Funktionen** — ein vom Filter zurückgegebenes Table wird stillschweigend
|
||||
ignoriert; und der Einschub muss `RawInline` sein, als `Str` würde pandoc die
|
||||
Backslashes escapen.
|
||||
2. **`ucharclasses`** in `pandoc/header-includes.tex` — für den **Diagrammtext**: Das Paket
|
||||
`svg` exportiert die SVG-Texte (x₁, σᵀ, ∈ in Achsen- und Knotenbeschriftungen) als
|
||||
LaTeX-Text, dorthin reicht der AST-Filter nicht. Die Zurück-Umschaltung ist bewusst
|
||||
`\fontfamily{\familydefault}\selectfont` statt `\normalfont` — `\normalfont` würde den
|
||||
Fettdruck hinter dem Stern einer Aufgabentitel-Zeile zerstören (gemessen mit
|
||||
pdfminer: „Titel“ bleibt Bold).
|
||||
|
||||
Die tote `emoji-font`-Variable ist aus `pandoc-defaults-basis.yaml` entfernt (mit
|
||||
Begründung), und `baue_pdf()` zählt die `Missing character`-Meldungen im Protokoll:
|
||||
Der neue Lauf meldet **null fehlende Zeichen**; taucht die Warnung wieder auf, kennt Times
|
||||
New Roman ein Zeichen, das der Filter noch nicht umschaltet. Symbola ist damit eingebettet,
|
||||
der Buchumfang bleibt bei 792 Seiten; alle HTML-Seiten sind byteidentisch geblieben.
|
||||
|
||||
---
|
||||
|
||||
## 8. Commit-Historie des V04-Strangs
|
||||
|
|
|
|||
Loading…
Reference in a new issue