Problem
- Beim Erstellen einer von Hand in HTML und CSS geschriebenen Website ist Syntaxhervorhebung schwierig
- Code-Snippets sollen farblich hervorgehoben werden, damit sie sich leichter lesen und verstehen lassen
- Üblicherweise muss man dafür komplexe Syntax-Highlighting-Bibliotheken wie Prism oder highlight.js verwenden
- Man möchte von Hand coden, ohne externe Skripte zu verwenden
Syntaxhervorhebung direkt in die Schriftart mit OpenType-Funktionen einbauen
- Eine Open-Source-Schriftart namens Monaspace Krypton wurde modifiziert, sodass sie farbige Varianten der einzelnen Zeichen enthält
- Mithilfe der COLR-Tabelle von OpenType und der Funktion für kontextbezogene Ersetzung werden bestimmte Zeichenfolgen gefunden und ersetzt
- Das Ergebnis ist ein einfacher Syntax-Highlighter, der direkt in die Schriftart eingebaut ist
Vor- und Nachteile
Vorteile
- Einfache Installation: Schriftart importieren und die OpenType-Funktionen COLR (Farbe) und CALT (kontextbezogene Ersetzung) aktivieren
- Kein JavaScript erforderlich
- Kein CSS-Theme erforderlich
- So schnell wie reiner Text
- Code-Snippets können in
<pre>- und <code>-Tags eingefügt werden
- Sauberer HTML-Quellcode
- Funktioniert überall dort, wo OpenType-Funktionen unterstützt werden, etwa in InDesign
- Keine Wartung oder Updates erforderlich
- Funktioniert auch in
<textarea> und <input>
Nachteile
- Wenn Änderungen nötig sind, etwa an der Farbpalette oder zur Unterstützung weiterer Sprachen, muss die Schriftdatei selbst angepasst werden
- Funktioniert nur dort, wo OpenType unterstützt wird
- Die Mustersuche über kontextbezogene OpenType-Ersetzung ist grundlegend und nicht mit Skripten auf Basis regulärer Ausdrücke vergleichbar
So funktioniert es tatsächlich
- Verwendet werden die OpenType-COLR-Tabelle und kontextbezogene Ersetzung
- Die COLR-Tabelle ermöglicht mehrfarbige Schriftarten
- Die kontextbezogene Ersetzung erkennt benachbarte Zeichen und ersetzt sie
- Beispiel: Das JavaScript-Schlüsselwort
if wird gefunden und durch eine farbige Variante ersetzt
Zusammenfassung von GN⁺
- Dieser Artikel stellt eine neue Methode vor, um beim manuellen Coden von Websites Syntaxhervorhebung umzusetzen
- Durch die Nutzung von OpenType-Funktionen wird die Syntaxhervorhebung direkt in die Schriftart eingebaut, sodass sie auch ohne JavaScript oder CSS-Themes möglich ist
- Diese Methode eignet sich für einfache Syntaxhervorhebung, hat aber im Vergleich zu komplexen Syntax-Highlighting-Bibliotheken ihre Grenzen
- Projekte mit ähnlicher Funktionalität sind unter anderem Prism und highlight.js
1 Kommentare
Hacker-News-Kommentare
Interessanter Hack
font-feature-settings: "colr", "calt";ergibt keinen Sinncolrexistiert nicht in den OpenType-Layout-Tabellencaltist standardmäßig aktiviertDer Originaltext bleibt unverändert erhalten
userContent.cssohne Tag-Wrapping oder JSIch bin kein OpenType-Experte, daher könnte die Fallback-Logik verbessert werden
Dieser Hack ist furchtbar, aber verblüffend
Großartiger Hack
highlight.jsUnten auf der Seite steht eine gute Botschaft
Es sieht so aus, als ließe sich das mit Code automatisieren
Es gibt einen Bug in Chromium-basierten Browsern
color: blueeingibt, wird nur dasrhervorgehobenWirklich coole Funktion
span- und HTML-Tags zu verwendenEs scheint etwas zu brauchen, das wie ein Parser-Generator arbeitet
Wirklich erstaunliche Funktion