Monospace-Web
(owickstrom.github.io)- Eine experimentelle Seite, die Web-Elemente auf einem zeichenbasierten Raster ausrichtet und so Text, Tabellen, Diagramme und Medien in einer Ästhetik zeigt, die Terminals der 1970er-Jahre ähnelt
- Ein einfaches Markdown-Dokument wird mit Pandoc umgewandelt; semantisches HTML wird mit CSS und sehr wenig JavaScript auf einem Monospace-Raster gerendert
- Responsives Verhalten erfolgt nicht über Pixel, sondern über eine Verkleinerung in Zeichengrößen-Einheiten; Tabellen passen sich automatisch an das Raster an, allerdings ist nur eine Spalte als dehnbare Spalte erlaubt
- Behandelt Standardelemente wie normale Absätze, Trennlinien,
<details>, Listen, baumartige Listen, Tabellen, Formulare,grid-Container, ASCII-Zeichnungen auf Basis von<pre>sowie Bilder und Videos - Der gesamte Quellcode ist auf GitHub veröffentlicht, sodass man benötigte Teile unter Beachtung der Lizenzbedingungen forken oder kopieren kann
Webseiten aus einem Zeichenraster
- Monospace-Schriften können für manche Nutzer leichter lesbar, konsistenter und schöner wirken als Proportionalschriften
- Diese Seite ist ein technisches und kreatives Experiment, bei dem alle Elemente als Monospace-Web aufgebaut werden
- Die Umsetzung wandelt ein Markdown-Dokument mit Pandoc um und platziert anschließend semantisches HTML mit CSS und etwas JavaScript auf einem Zeichenraster
- Das responsive Layout schrumpft passend zur Bildschirmbreite nicht in Pixeln, sondern in Zeichengrößen-Einheiten
- Ziel ist, dass Standard-HTML-Elemente ohne zusätzliche komplexe Arbeit natürlich innerhalb eines Monospace-Rasters funktionieren
Unterstützte Elemente und Layout-Verfahren
- Das grundlegende Markup umfasst normale Absätze, horizontale Trennlinien und das Element
<details> - Listen unterstützen normale Aufzählungslisten und nummerierte Listen; mit einer ungeordneten Liste mit der Klasse
treelässt sich eine Baumstruktur darstellen, die wie ein Dateisystem aussieht - Tabellen werden automatisch an das Monospace-Raster angepasst und verhalten sich responsiv
- Allerdings ist die Zahl der dehnbaren Spalten auf eine Spalte begrenzt
- Auch Formulare werden unterstützt und zusammen mit anderen Standardelementen auf demselben Zeichenraster platziert
- Fügt man einem Container die Klasse
gridhinzu, teilen die Zellen den horizontalen Platz gleichmäßig untereinander auf- Da die Monospace-Eigenschaften erhalten bleiben, muss die Gesamtbreite nicht immer 100 % betragen
- Soll eine bestimmte Zelle den verbleibenden Platz ausfüllen, setzt man für diese Zelle
flex-grow: 1;
- Mit dem Tag
<pre>und Box-Drawing-Zeichen lassen sich Zeichnungen im ASCII-Stil erstellen- Mit
<figure>und<figcaption>kann man sie auffälliger gestalten - Als Beispiele sind ein Diagramm zur Nachrichtenübermittlung und ein Balkendiagramm enthalten
- Mit
- Auch Medienobjekte wie Bilder und Videos werden unterstützt
- Sie werden bis zur Seitenbreite erweitert, und unten wird zusätzliches Padding hinzugefügt, um das Monospace-Raster beizubehalten
- Der gesamte Quellcode ist unter github.com/owickstrom/the-monospace-web veröffentlicht
- Die Design-Inspiration stammt von U.S. Graphics Company
1 Kommentare
Meinungen auf Hacker News
Ich sammle eine Liste von Seiten mit Monospace-Layout: https://wonger.dev/posts/monospace-dump#web. Im Moment sind es etwa 50
Abstände sind schwierig, und wenn man auf proportionale Schriften verzichtet, verliert man auch ein Stück Lesbarkeit
Ich glaube, das Kerning proportionaler Schriften macht einen großen Unterschied dabei, wie das Auge die Formen von Buchstabengruppen erkennt
Monospace-Text ist in strukturierten und hervorgehobenen Bereichen wie Code-Editoren okay, aber bei langen Texten sollte man ihn eher vermeiden
Trotzdem sieht er besonders bei Unicode-Charts und ASCII-Art wirklich schön aus
Zum Beispiel
15 space, 1 V, 3 U, 1 V,15 space, 5 U,12 space, 2 x, 5 U, 2 x; nach etwa 250 Zeilen erschien dann ein Bild von Jordan beim Dunking, das man ausdrucken konnteDas scheint genau der richtige Thread für diese Frage zu sein. Vor ein paar Jahren habe ich etwas gesehen, vermutlich eine Komplettlösung für ein Videospiel, das so geschrieben war, dass es in einer Monospace-Schrift gelesen werden sollte; über Tausende von Zeilen hinweg war alles allein durch die Wortwahl perfekt im Blocksatz ausgerichtet
Weiß jemand, was das war, und hat einen Link?
[0] http://www.catb.org/esr/jargon/html/B/bricktext.html
Es ist etwas überraschend, dass dieses Konzept aus den Google-Suchergebnissen völlig verschwunden ist
https://github.com/laravel/laravel/blob/11.x/config/database...
Seit Jahren wollte ich eine Visual-Studio-Code-Erweiterung bauen, die Kommentare während der Eingabe im Blocksatz ausrichtet, inklusive Silbentrennung, aber bei Bedarf auch zusätzliche Leerzeichen zulässt
Abgesehen davon, dass ich mir ein paar verwandte Algorithmen und Bibliotheken angesehen habe, habe ich nicht angefangen, weil es ziemlich komplex wirkte
Ich habe versucht, Dinge wie
fmtoderparzu verwenden, aber am Ende habe ich akzeptiert, dass man schön ausgerichtete Kommentare aufgeben muss, sofern man es nicht manuell macht; oft führt schon eine kleine Änderung dazu, dass mehrere Zeilen überarbeitet werden müssen, was viel zu viel Zeit kostetLange Bezeichner möchte ich möglichst nicht mitten in der Zeile umbrechen, und man müsste auch verschachtelte Listen, Tabellen, Codeblöcke, ASCII-Art in Kommentaren, die Unterscheidung zwischen Bindestrichen innerhalb von Wörtern und Bindestrichen zur Silbentrennung sowie strukturierte Kommentare wie XML-Dokumentationskommentare oder Javadoc-Tags behandeln
Nachdem ich Tom7s Badness 0 gesehen hatte, dachte ich auch daran, ein LLM darauf anzusetzen, aber wenn es in Echtzeit funktionieren und keine halluzinierten Kommentare erzeugen soll, halte ich das noch nicht für praktisch
Gibt es so eine Funktion bereits, oder eine Grundlage, mit der der Bau einer Erweiterung nicht zu einem Ein-Jahres-Projekt wird?
Monospace an sich stört mich nicht
Was stört, sind erzwungene Zeilenumbrüche
Manche „Retro“-Websites verwenden im Grunde einfach ein
pre-TagAuf dem Handy wird daraus eine Textwand in kleiner Schrift, der Lesemodus funktioniert nicht, und wenn man es quer hält, bekommt man vielleicht eine Scrollbar, vielleicht auch nicht
Das ist auch fast meine einzige Beschwerde über heutige technische Mailinglisten: erzwungene Zeilenumbrüche und starre Layouts
In einem Video, das ich heute gesehen habe, wurde so etwas Indie Web genannt: eine Philosophie, die sich gegen Algorithmen stellt und die Dinge wieder aufgreifen will, die das frühere Web großartig gemacht haben
Dinge wie RSS, persönliche Blogs, Foren und Webrings
Ich habe selbst damit angefangen, und es fühlt sich ziemlich gut an
Dass es ansprechend, semantisch und responsiv ist, ist gut, aber grundsätzlich sind Monospace-Schriften für Fließtext nicht besonders geeignet.
Ich habe auf mehreren Websites Blogbeiträge mit Monospace-Fließtext gelesen, und es war okay, aber nach meinem Maßstab ist Proportionalschrift der richtige Weg.
Ich finde das viel besser als diese „schönen“ Seiten, die den Eindruck alter gedruckter Magazine erzeugen wollen.
In meinem Blog verwende ich Monospace, weil meine Sehkraft schlecht ist und ich Vergrößerungseinstellungen nutze, aber Barrierefreiheit ist mir wichtig, daher frage ich mich immer, welche Wahl für alle besser lesbar ist.
Von allem anderen abgesehen finde ich die CSS-Klasse
tree ul-listso gut, dass sie als Tag in die HTML-Spezifikation aufgenommen werden könnte. Ein unglaublich nützlicher Baustein.Der Zeilenabstand ist zu eng und beeinträchtigt die Lesbarkeit. Solche dicht gesetzten langen Absätze im Fließtext sind schwer zu lesen.
Tabellen und Zeichengrafiken brauchen allerdings genau diesen engen Zeilenabstand.
Das Problem ist, dass dasselbe Zeichengitter sowohl für Grafik als auch für Text verwendet wird.
Das ließe sich wohl abmildern, wenn man eine Schrift mit besonders niedriger x-Höhe verwendet, die ober- und unterhalb der Buchstaben mehr Raum lässt.
Beim Zeilenabstand stimme ich zu. 19,2 px bei 16 px Schriftgröße sind nur das 1,2-Fache und damit viel zu gedrängt. Mit 24 px wird es deutlich besser.
Allerdings scheint ein größerer Zeilenabstand für meine Augen Tabellen oder Zeichengrafiken nicht zu beeinflussen. Mit so einer Anpassung bleibt der Monospace-Stil ziemlich gut erhalten.
Nachtrag: Ich glaube, ich verstehe den Punkt. Es bricht das feste Rasterkonzept des Autors. Das sieht man, wenn man beim
p-Elementline-height: 24pxsetzt und den „debug mode“ des Autors einschaltet, um das Raster zu sehen.javascript: (function() {(function() {const textElements = document.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6, li, td, th');textElements.forEach((element) => {const textColor = getComputedStyle(element).getPropertyValue('color');element.style.fontFamily = 'system-ui, -apple-system, sans-serif';element.style.WebkitTextStroke = \0.4px ${textColor}`;});location.hash = "";history.replaceState("", "", location.pathname);})();})();`https://caiorss.github.io/bookmarklet-maker/
Denn Monospace-Wörter haben ähnlichere „Formen“ als Wörter in Proportionalschrift.
OpenBSD hat vor einigen Jahren begonnen, die Konsolenschrift auf Spleen umzustellen.
Schade, dass es keine TrueType-Version gibt.
https://github.com/fcambus/spleen
Der bis heute bekannte C64-Text, der sogenannte VIC article, wird in Monospace bereitgestellt.
https://www.cebix.net/VIC-Article.txt
Das Hauptproblem ist die Ausgabe.
Der Artikel verwendet Diagramme, die feste Bezüge im zweidimensionalen Raum benötigen; daher ist Monospace hier sehr wichtig.
Dieser Text ist eine der wichtigsten technischen Referenzen zum C64, und 99 % der Effekte technischer Demos lassen sich auf die grundlegenden Tricks darin zurückführen.
Ich überlege, die Schriftart meiner persönlichen Website auf Monospace umzustellen.
Kennt jemand eine Monospace-Schrift, die sich besonders gut für lange Texte lesen lässt?
Noch besser wäre es, wenn sie bei Google Fonts verfügbar ist.
Nicht bei Google Fonts, aber kostenlos; die Variable-Font-Version ist auch sehr günstig.