None
Linux

Schriftarten finden, die ein bestimmtes Zeichen unterstützen

by Viktor Garske on Jan. 12, 2020, 9:50 a.m., with 6 comments

In Zeiten von Unicode passiert es gerne mal, dass bestimmte Zeichen von Schriftarten (noch) nicht unterstützt werden. Wird dann auf dem Rechner auch kein Fallback gefunden, wird das allseits bekannte � o.ä. angezeigt.

So auch vor gut einer Woche bei ubuntuusers.de passiert. Im ständigen Wandel und dem Übergang zu semantischeren Darstellungsformen wurde das Copyleft-Symbol im Footer gegen das Pendant im Unicode mit der Nummer U+1F12F ausgetauscht. 4 Byte UTF-8 im Vergleich zu 317 Byte PNG sind eine gute Ersparnis. Möglicherweise nicht der Rede wert, aber das Zeichen ist dann wenigstens maschinenlesbar.

Das Problem: viele Schriftarten unterstützen das Copyleft-Zeichen noch nicht. Mir ist das erst nicht aufgefallen, weil alles ordentlich funktionierte, aber in dem Zusammenhang kam die Frage auf, mal zu sehen, welche Schriftart das Zeichen denn ausliefert. Denn DejaVu Sans war es wohl nicht.

find /usr/share/fonts/ -name "*.ttf" -exec echo -n {} \; -exec hb-shape {} "A" \; | grep -v notdef

Das A tauscht ihr einfach gegen das zu suchende Zeichen aus. Aufgelistet werden dann alle Schrifarten, die das Zeichen unterstützen.

Warum ich das Copyleft-Zeichen selber hier nicht darstellen kann? Wohl, weil meine Datenbank keine 4-Byte-Unicode-Zeichen im utf8mb3 alias utf8 verarbeiten kann. :)

Tags:
Author image
Viktor Garske

Viktor Garske ist der Hauptautor des Blogs und schreibt gerne über Technologie, Panorama sowie Tipps & Tricks.

Comments (6)

Comments are not enabled for this entry.

Das Problem ist IMO, dass ubuntuusers.de keinen ordentlichen Fontstack verwendet. "Liberation Sans", sans-serif reicht einfach nicht, wenn man seine Seite überall ordentlich angezeigt haben will.

https://css-tricks.com/snippets/css/system-font-stack/

Ist nicht schwer und sorgt für ordentliches Rendering unabhängig vom OS.

Erstmal Anmerkungen am Rand:
• Zu den gesparten 317 Byte wegen des PNG kommen auch nochmal grob 300 Byte Ersparnis wegen der gesparten HTTP-Antwortkopfzeile (Anfragekopfzeile mal weggelassen). Das Verhältnis Nutzlast/Kopfzeilen ist da IMO auch nicht wirklich gut.
• Kür: otf-Fonts werden in dem find aktuell nicht berücksichtigt. Die nutzen die Browser ggf. auch noch. Zumindest nach https://caniuse.com/#feat=ttf kann es ein Großteil der Browser. ;)

Dann ubuntuusers.de nutzt noch nachladbare fonts via @font-face. Darin wirds noch ein wenig komplexer.
Entweder wird eine lokale Liberation Sans genommen oder es wird nachgeladen.
Dann gibt es noch die Unicode-ranges für u.a. Emojis und regional indicators. Das sans-serif war dann quasi nur für Leute gedacht, die Liberation Sans nicht installiert haben und auch alles mit font-face ignorieren.

Aber: Wie ich es das letzte Mal getestet hab, nahm Firefox notfalls eine x-beliebige installierte Schriftart, falls die aktuelle Schriftart das nicht darstellte. D.h. beim Firefox kommt eigentlich nur ein Kästchen, wenn lokal gar keine Schriftart das Zeichen darstellen kann. (Wäre mal interessant gewesen, ob das bei Viktor der Fall war) Chrome, Edge etc. kann sich da anders verhalten. Deren Verhalten darf dann jemand anderes in seiner Freizeit raus finden und drüber bloggen. Das Tolle ist: Es kann sich über die Zeit auch ändern. :)

Generell ist der Schriftarten-Tab vom Firefox-Inspektor recht nett. Der zeigt einmal, welche Schriftarten auf der kompletten Seite (hover markiert die jeweiligen Abschnitten) oder im aktuellen Abschnitt verwendet wird. Danach wird U+1F12F hier z.B. dank Source Sans Pro dargestellt.

(Nachdem hier scheinbar keine Absätze gewünscht sind, wurde das hier halt ein kleiner Thread ala Twitter)