Fontsampler IBM Plex
Die Firma IBM hat seine neue Hausschrift IBM Plex auf Github unter einer OpenSource-Lizenz verfügbar gemacht. Sie kann ohne Einschränkungen (SIL Font License) benutzt werden.
Die Gelegenheit habe ich mal genutzt, um ein Beispielblatt mit den Schriftarten zu erstellen. Den Weg hierzu möchte ich kurz beschreiben:
Als erstes habe ich die Schriftarten heruntergeladen und entpackt. Da der
Publisher sowohl mit OpenType als auch mit TrueType umgehen kann, habe ich
mich für die erste Variante entschieden. Die Schriftdateien (*.otf) habe ich
einfach in ein Verzeichnis kopiert und mir die passende data.xml
und
layout.xml
(siehe unten) erstellt. Hier ist die Verzeichnisstruktur abgebildet:
$ tree
.
├── data.xml
├── fonts
│ ├── IBMPlexMono-Bold.otf
...
│ └── IBMPlexSerif-ThinItalic.otf
└── layout.xml
Datendatei (data.xml)
Die Datendatei lässt sich einfach erstellen. Mit sp --list-fonts
erhält man eine Ausgabe wie:
Filename PostScript Name
----------------------------------- ---------------
IBMPlexMono-Bold.otf IBMPlexMono-Bold
IBMPlexMono-BoldItalic.otf IBMPlexMono-BoldItalic
IBMPlexMono-ExtraLight.otf IBMPlexMono-ExtraLight
IBMPlexMono-ExtraLightItalic.otf IBMPlexMono-ExtraLightItalic
IBMPlexMono-Italic.otf IBMPlexMono-Italic
IBMPlexMono-Light.otf IBMPlexMono-Light
IBMPlexMono-LightItalic.otf IBMPlexMono-LightItalic
IBMPlexMono-Medium.otf IBMPlexMono-Medium
...
daraus kann man mit einem guten Texteditor leicht die folgende XML-Struktur erstellen:
<fonts>
<font filename="IBMPlexMono-Bold.otf" psname="IBMPlexMono-Bold" />
<font filename="IBMPlexMono-BoldItalic.otf" psname="IBMPlexMono-BoldItalic" />
<font filename="IBMPlexMono-ExtraLight.otf" psname="IBMPlexMono-ExtraLight" />
<font filename="IBMPlexMono-ExtraLightItalic.otf" psname="IBMPlexMono-ExtraLightItalic" />
<font filename="IBMPlexMono-Italic.otf" psname="IBMPlexMono-Italic" />
<font filename="IBMPlexMono-Light.otf" psname="IBMPlexMono-Light" />
<font filename="IBMPlexMono-LightItalic.otf" psname="IBMPlexMono-LightItalic" />
<font filename="IBMPlexMono-Medium.otf" psname="IBMPlexMono-Medium" />
...
</fonts>
Das ist dann die fertige Datendatei.
Layoutdatei (layout.xml)
Die Layoutdatei ist ähnlich einfach gestrickt.
<Layout xmlns="urn:speedata.de:2009/publisher/en"
xmlns:sd="urn:speedata:2009/publisher/functions/en">
<Record element="fonts">
<ProcessNode select="font"/>
</Record>
<Record element="font">
<LoadFontfile name="{@psname}" filename="{@filename}"/>
<DefineFontfamily name="text" fontsize="10" leading="12">
<Regular fontface="{@psname}"/>
</DefineFontfamily>
<PlaceObject>
<Textblock>
<Paragraph>
<Value select="@psname"/>
<Value>: Hello world! 1234567890 äöüß</Value>
</Paragraph>
</Textblock>
</PlaceObject>
</Record>
</Layout>
Hier wird für das Wurzelelement nur die Anweisung ausgeführt, für alle
Kindelemente (font
) weitere Anweisungen auszuführen.
Dort wird erst eine Schriftart geladen und dann eine Schriftfamilie definiert. Mit @psname
und @filename
greife ich auf die Attribute in der Datendatei des aktuellen Elements zu. Die geschweiften Klammern sind dann nötig, wenn der Befehl an dieser Stelle eigentlich einen festen Wert erwartet, ich aber einen dynamischen Wert angeben möchte.
Anschließend wird für jeden Font eine Textzeile ausgegeben.
Das Ergebnis
Nach dem Aufruf von sp
im aktuellen Verzeichnis wird das PDF erzeugt und sieht so aus:
Die Dateien (ohne die Schriftdateien) kann man hier herunter laden.