1. Primitives - Commercial Script

Für die ersten Gehversuche habe ich die Commercial Script ausgewählt. Hier gibt es nur eine einzige Schrift, keine komplette Schriftfamilie, was die Installation doch sehr übersichtlich bleiben läßt. Beginnen wir also:

Als erstes erstellen wir uns ein Arbeitsverzeichnis unterhalb des fontinst-Verzeichnisses. Den Namen können wir beliebig wählen, warum also nicht cscript. Hierher kopieren wir die Dateien comms___.pfb und comms___.afm. Die .pfb-Datei enthält Informationen über den Schriftzug der enthaltenen Zeichen, während die .afm-Datei Angaben über die Größe der Zeichen enthält.

Damit fontinst die Schriftdateien korrekt verarbeiten kann, sollten sie nach dem Karl-Berry-Schema umbenannt werden. Dazu entfernen wir zunächst den eventuell vorhandenen Schreibschutz der Dateien bzw. versorgen uns mit den notwendigen Rechten. Als erster Buchstabe des neuen Namens dient ein Code für den Hersteller der Schrift; SoftMaker und FontSite haben hier keinen eigenen Code, wir verwenden also den "Joker" f. Es folgt die Benennung der Schrift: Aus der Tabelle erfahren wir das Kürzel i0. Da wir nur ein Gewicht verwenden, könnten wir eigentlich frei wählen; sinnvoll wird es aber sein, als Gewicht regular roman anzugeben; das Kürzel ist dann r. Den Abschluß bildet die Bezeichnung der Codierung nach Schema. Untersuchen wir das .afm-file mit einem Texteditor, so finden wir die Zeile EncodingScheme StandardAdobeEncoding. Nach Tabelle ist der Code für diese Codierung 8a. Diese Informationen setzen wir nun zum neuen Dateinamen zusammen, unsere Files heißen also fi0r8a.pfb und fi0r8a.afm

Nun müssen wir fontinst anweisen, unsere Schrift zu bearbeiten. Da wir mehrere Befehle an fontinst weitergeben werden, legen wir hierfür eine Befehlsdatei instcomm.tex im gleichen Verzeichnis an. Diese beginnt mit

\input fontinst.sty

Hiermit wird fontinst in unser File eingefügt und stellt seine Befehle zur Verfügung. Der nächste Befehl

\installfonts

zeigt an, daß nun die Befehle zur Bearbeitung der Schriften kommen werden. Und da sind sie schon:

\transformfont{fi0r8r}{\reencodefont{8r}{\fromafm{fi0r8a}}}

Dieser Befehl wird gewissermaßen von hinten nach vorne abgearbeitet. Zunächst wird die Datei fi0r8a.afm verarbeitet. Hierfür muß sie in das für fontinst lesbare .mtx-Format umgeschrieben werden, in dem die interne Weiterverarbeitung erfolgt; es entsteht also eine Datei fi0r8a.mtx. Dann erfolgt die Umcodierung nach 8r; die Metriken werden in der nun richtigen Reihenfolge nach fi0r8r.mtx geschrieben. Anschließend wird zu den beiden .mtx-Dateien je ein .pl-Datei erzeugt.

\installfamily{8r}{fi0}{}
\installfamily{OT1}{fi0}{}
\installfamily{T1}{fi0}{}

Nun wird es ernst: Hier werden drei Schriftfamilien angelegt. Sie sind durch einen Namen und eine Codierung festgelegt. Der Name, unter dem sie in LaTeX angesprochen werden, muß nichts mit den sorfältig ausgesuchten File-Namen für unsere Schrift zu tun haben, aber es ist hilfreich, wenn diese Namen identisch sind. Allerdings passiert hier noch nichts: fontinst wird lediglich angewiesen, zu diesen Familien bei den nachfolgenden Installationsschritten Informationen zu sammeln. Zu den Codierungen: 8r haben wir ja schon kennen gelernt. OT1 bezeichnet die alte TeX-Codierung, die mit sieben Bit pro Zeichen auskam, damit aber nur 128 Zeichen pro Schrift ansprechen konnte. Die neue TeX-Codierung, das sog. Cork-Encoding, hat acht bit, umfaßt folglich 256 Zeichen und wird T1 genannt.

Zu jeder Schriftfamilie wird zu jeder Codierung ein font-definition-file .fd angelegt. Der Name dieses Files beginnt mit der Codierung, dann folgt der LaTeX-Name der Schriftfamilie. Für unsere Schriftfamilie fi0 und die T1-Codierung wäre der Name also t1fi0.fd. Im weiteren Verlauf werden die Informationen bereitgestellt, mit deren Hilfe LaTeX jeder angeforderten Schrift ein Metriken-File zuordnen kann. Diese Informationen werden dann in diese Files eingetragen.

\installrawfont{fi0r8r}{fi0r8r,8r}{8r}{8r}{fi0}{m}{n}{}

Als erstes wird die 8r-codierte Schrift bereitgestellt. Sie soll auch nach der Installation noch fi0r8r heißen, das sagt der erste Parameter. Der zweite gibt an, aus welchen Metric Files die neu installierte Schrift stammen soll. Hier steht nicht nur das ganz am Anfang erzeugte fi0r8r.mtx, sondern auch ein 8r.mtx, das zum System gehört und fontinst verrät, wo fehlende Zeichen her besorgt werden könnten. Der dritte Parameter gibt den Namen des zuständigen Encoding Files an; es überrascht uns nicht, daß er mit 8r beginnt, seine Endung ist .etx. Der vierte und fünfte Parameter ordnen die hier installierte Schrift einer der oben angelegten Familien zu, indem Codierung und Familienname angegeben werden. Die drei letzten Parameter treffen Aussagen über Schrift-Serie, -Aussehen und -Größe: hier m für medium (mittleres Gewicht im Gegensatz zu fett oder leicht) und n für normal (und nicht kursiv, geneigt, Kapitälchen, ...). Zur Größe werden keine Angaben gemacht, da bei Type-1-Schriften alle Schriftgrößen aus einem einzigen File dargestellt werden. Die Eigenschaften werden in ein Property List File .pl geschrieben. Im Gegensatz zum weiter oben bereits erzeugten fi0r8r.pl enthält diese Fassung Informationen übers Kerning, also über den Abstand zu benachbarten Zeichen.

\installfont{fi0r7t}{fi0r8r,latin}{OT1}{OT1}{fi0}{m}{n}{}
\installfont{fi0r8t}{fi0r8r,latin}{T1}{T1}{fi0}{m}{n}{}

Dies sind die Installationsbefehle für die OT1- und die T1-codierten Schriften. Im ersten Parameter findet sich nun die Endung 7t für das OT1-Encoding und 8t für das T1-Encoding. Im zweiten Parameter wird als Hilfsfile latin.mtx eingesetzt. Die sonstigen Änderungen sind selbsterklärend.

Durch den Einsatz von latin.mtx werden diese Schriften zu virtuellen Fonts: während die oben beschriebene Neucodierung sich immer noch auf ein und dieselbe Schrift bezog, ist es jetzt möglich, daß manche Zeichen aus anderen Schriften stammen. Die erzeugten Virtual Property List Files enden auf .vpl.

\endinstallfonts
\bye

So wird das File beendet: fontinst wird mitgeteilt, daß nun keine weiteren Befehle zur Schriftinstallation mehr folgen. Hier werden nun die zu den einzelnen Familien gesammelten Informationen abschließend in ein .fd-File eingetragen. Und auch TeX wird freundlich verabschiedet.

Nun starten wir in die Shell unserer Wahl, wechseln in das Verzeichnis, in dem unsere Commercial Script-Dateien liegen, und lassen TeX über unsere Installationsdatei laufen:

tex instcomm.tex

Nach diesem TeX-Lauf sind drei .fd-Files und je zwei .mtx-, .pl- und .vpl-Files erzeugt. Diese müssen noch in für LaTeX geeignete Formate umgewandelt werden. Wir erstellen also im gleichen Verzeichnis eine Datei tfmmake mit dem Inhalt:

#!/bin/sh
for f in *.pl; do pltotf $f ${f%%pl}tfm; done
for f in *.vpl; do vptovf $f ${f%%vpl}vf ${f%%vpl}tfm; done

und führen diese Datei unter der bash aus. Leider kann ich keinen entsprechenden Code für die MS-DOS-Shell angeben, hilfreiche Zuschriften sind willkommen. Hier werden nun von LaTeX verwertbare TeX Font Metric Files .tfm und Virtual Fonts .vf erzeugt. Jede Codierung - 8a, 8r, 7t und 8t - wird unter LaTeX verfügbar gemacht und bekommt ihr eigenes .tfm. Die Codierungen, die nicht unmittelbar auf den Font zugreifen können, also die virutellen Fonts in den Codierungen 7t und 8t, erhalten noch je ein .vf-File.

Alle Dateien sind vorhanden, sie müssen noch an den richtigen Platz. Das ist unterhalb von \localtexmf\fonts. Da SoftMaker im Karl-Berry-Schema kein eigenes Verzeichnis zugesprochen bekommen hat, gehören alle Dateien nach public, als Unterverzeichnis für unsere Schrift legen wir commscr fest. Nun kopieren wir die .afm-Datei nach \localtexmf\fonts\afm\public\commscr\, die .pfb-Datei nach \localtexmf\fonts\type1\public\commscr\, die .tfm-Dateien nach \localtexmf\fonts\tfm\public\commscr\, die .vf-Dateien nach \localtexmf\fonts\vf\public\commscr\ und die .fd-Dateien nach \localtexmf\tex\latex\public\commscr\. Erzeugte .mtx-, .pl- und .vpl-Dateien können gelöscht werden. Nach einer Aktualisierung der Fileliste der jeweiligen TeX-Distribution (texhash, initexmf, hier die Doku zum jeweils installierten System befragen) kann LaTeX die neue Schrift bereits verwenden. Um sie auch ausgeben zu können, müssen wir noch dvips, dvipdfm und auch pdflatex noch von unserer Neuerung in Kenntnis setzen.

Um die Änderungen in der Konfiguration dieser Programme nicht bei jeder Aktualisierung wiederholen zu müssen, verschieben wir die Verzeichnisse texmf\dvips\config nach localtexmf\dvips\config, \texmf\dvipdfm\config nach \localtexmf\dvipdfm\config und \texmf\pdftex\config nach \localtexmf\pdftex\config.

Wir erstellen nun fü die Konfiguration von dvips und pdftex ein File fi0.map, das folgende Zeile enthät:

fi0r8r CommercialScript " TeXBase1Encoding ReEncodeFont " <8r.enc <fi0r8a.pfb

dvipdfm benutzt eine andere Syntax, hier erstellen wir ein File fi0d.map mit der Zeile:

fi0r8r 8r.enc fi0r8a.pfb

Da LaTeX nach unserer Installation alle Zugriffe auf die Commercial Script über fi0r8r ausführt, wozu es aber kein entsprechendes .pfb-File gibt, wird dvips so darüber informiert, daß die Schrift fi0r8r CommercialScript heißt, eine neu codierte Schrift ist, die nach 8r neu codiert wurde und aus dem File fi0r8a.pfb stammt.

Dieses File fi0.map wird sowohl nach \localtexmf\dvips\config als auch nach \localtexmf\pdftex\config, fi0d.map nach \localtexmf\dvipdfm\config kopiert. Mit einem Texteditor wird am Ende der Datei \localtexmf\dvips\config\config.ps die Zeile

p +fi0.map

eingefügt, am Ende von \localtexmf\pdftex\config\pdftex.cfg die Zeile

map +fi0.map

und am Ende von \localtexmf\dvipdfm\config\config der Eintrag

f fi0d.map

Nach einem erneuten Aktualisieren der TeX-Datenbasis steht die neue Schrift nun zur Verfügung. Hier nochmal die Dateien zum Download:

Wir wollen an dieser Stelle kein Package basteln, um die Schrift einzusetzen, sondern begnügen uns vorerst mit der direkten Auswahl:

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\renewcommand{\sfdefault}{fi0}
\begin{document}
\textsf{Dies ist ein Test}
\end{document}

wird als beispiel.tex abgespeichert und erzeugt nach Eingabe von

latex beispiel.tex; dvips beispiel.dvi

eine PostScript-Datei, in der der Satz "Dies ist ein Test" in der Commercial Script gesetzt ist. In obigem Beispiel wird die CommercialScript als Standard-SansSerif-Schrift eingesetzt, was problematisch sein kann, wenn an anderen Textstellen tatsächlich SansSerif verwendet werden soll. Natürlich kann auch rmdefault auf die neue Schrift gesetzt werden; hier ergeben sich andere Nebenwirkungen. Soll die Schriftart nur einmal kurz eingesetzt werden, empfiehlt sich daher:

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\begin{document}
Hier steht Fließtext

\fontfamily{fi0}\selectfont
Dies ist ein Test
\end{document}