Glyphhanger Docker Image

In meinem letzten Beitrag zum Thema Font Subsetting habe ich dir gezeigt, wie du mit Glyphhanger in wenigen Schritten unbenutzte Zeichen aus einer Webfont entfernen kannst. Im Gegensatz zur Anwendung von Glyphhanger war die Installation jedoch nicht ganz so einfach. In diesem Beitrag möchte ich dir deshalb zeigen wie du mit Hilfe von Docker sehr schnell zu einer lauffähigen Glyphhanger Installation kommst.

Docker Installation vorausgesetzt

Um den Beschreibungen in diesem Beitrag zu folgen benötigst du Docker. Ich gehe davon aus dass du Docker bereits installiert hast. Sollte dies nicht der Fall sein kannst du den Installer für Docker von der Docker Webseite herunterladen.

Glyphhanger in einem Docker Image installieren

Um die Installation von Glyphhanger zu vereinfachen, werden wir Glyphhanger anstatt auf unserem Rechner in einem Docker Image installieren. Dafür müssen wir ein Dockerfile erstellen, das als Bau-Anleitung für das Docker Image dient:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
FROM node:12

WORKDIR /app

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true

RUN apt-get update \
  # install python & pip
  && apt-get install -y \
  python3 \
  python3-pip \
  # install fonttools & brotli & zopfli
  && pip3 install fonttools \
  && pip3 install brotli \
  && pip3 install zopfli \
  # install glyphhanger
  && npm i -g glyphhanger

ENTRYPOINT [ "glyphhanger" ]

In unserem Dockerfile installieren wir zuerst Python und dann die drei Bibliotheken, die von Glyphhanger vorausgesetzt werden. Anschliessend installieren wir Glyphhanger selbst. Mit dieser Bau-Anleitung können wir das Docker Image nun von Docker erstellen lassen:

1
docker build . -t glyphhanger

Docker führt nun alle Anweisungen die wir in der Bau-Anleitung angegeben haben automatisch aus und erstellt daraus ein Docker Image.

Das Docker Image verwenden

Nachdem wir das Docker Image erstellt haben können wir dieses verwenden. Dabei ist zu beachten, dass Glyphhanger nun innerhalb eines Docker Containers ausgeführt wird. Wir müssen also die Fonts, mit denen Glyphhanger arbeiten soll, in den Docker Container hinein bekommen und die von Glyphhanger erstellten Subsets wiederum aus dem Container heraus, damit wir diese verwenden können. Dies lässt sich sehr einfach machen, indem wir ein Verzeichnis auf unserem Rechner im Container mounten. Glyphhanger kann dann auf die Dateien in diesem Verzeichnis zugreifen und Änderungen an den Dateien werden automatisch auch ausserhalb des Containers verfügbar.

Ich gehe in diesem Beispiel davon aus, dass wir unsere Fonts im Ordner D:\website\fonts abgelegt haben. In diesem Fall können wir Glyphhanger wie folgt ausführen:

1
docker run -v "D:\website\fonts:/app" glyphhanger --subset=*.woff --whitelist=U+0-FF

Mit docker run weissen wir Docker an einen Container zu starten. Mit -v "D:\website\fonts:/app" mounten wir das Verzeichnis mit unseren Fonts in den Container. glyphhanger ist der Name des Images, das wir zuvor erstellt haben und alle folgenden Parameter werden direkt an Glyphhanger weitergegeben.

Das ist alles. Mit diesem Befehl können wir Glyphhanger nutzen ohne das Tool und seine Abhängigkeiten selbst auf unserem Rechner installieren zu müssen.

Die Vorteile im Überblick

Nun fragst du dich bestimmt inwiefern das alles einfacher ist als die Installation von Glyphhanger auf deinem Rechner selbst?

Wenn du das Docker Image selber erstellen musst dann ist dies natürlich komplizierter als Glyphhanger lokal zu installieren. Aber das musst du nicht. Ich habe die Bau-Anleitung für das Docker Image auf Github und das fertige Docker Image auf Docker Hub veröffentlicht. Du kannst also direkt loslegen und musst dich nicht um die Erstellung des Docker Images kümmern. Das einzige was du tun musst, ist den Namen des verwendeten Docker Images anzupassen damit das Image von Docker Hub geladen wird:

1
docker run -v "D:\website\fonts:/app" raeffs/glyphhanger --subset=*.woff --whitelist=U+0-FF

Natürlich musst du Docker selbst installiert haben. Aber wenn dir Docker ein Begriff ist, dann gehe ich davon aus dass du dies bereits gemacht hast. Und wenn das der Fall ist, dann kannst du mit Hilfe des Docker Images direkt loslegen und musst dich um keine Installation kümmern.

Zudem kannst du davon ausgehen, dass die Verwendung des Images sehr wahrscheinlich auch in 5 Jahren noch funktionieren wird, weil das Docker Image in sich abgeschlossen ist und mit allen Abhängigkeiten ausgeliefert wird, die zur Ausführung von Glyphhanger benötigt werden. Eine niedergeschriebene Installationsanleitung wird dann höchst wahrscheinlich nicht mehr funktionieren.