Schriften, die nur als `tfm`- und `mf`- oder auch nur als `mf`-Datei vorliegen korrekt für LaTeX zu installieren ist gar nicht so einfach. Zwar sind sie für TeX selbst (oder plainTeX) recht schnell installiert:
1. Im Unterverzeichnis `fonts/tfm/public/` des lokalen oder des persönlichen TEXMF-Baums ein Verzeichnis für den Font anlegen und die tfm-Dateien dort hin kopieren.
2. Im Unterverzeichnis `fonts/source/public/` des lokalen oder des persönlichen TEXMF-Baums ein Verzeichnis für den Font anlegen und die mf-Dateien dort hin kopieren.
Nun könnte man nach dem alten Font-Schema bzw. für plainTeX den Font bereits mit dem `\font`-Primitiv laden:
%!&tex
% Das ist ein plainTeX-Dokument, bitte mit tex nicht latex verarbeiten!
\font\dsevenseg d7seg
\dsevenseg ABCDEFGHIJKLMNOPQURSTUVWYZ\par
abcdefghijklmnopqrstuvwxyz\par
0123456789\par
.,:;-!"\$\%\&/()
\bye
Beim ersten TeX-Lauf sollte dann automatisch MetaFont anspringen und (ggf. über den Umweg eines `gf`-Fonts) einen `pk`-Font erzeugen. Das Ergebnis ist dann:
![plainTeX][1]
Verwendet man `pdftex` für den Lauf wird aber auch schon das erste Problem sichtbar. Der Font wird als Bitmap-Font für eine bestimmte Auflösung (normalerweise 600dpi) erzeugt. Bei Ausgabe auf dem Bildschirm wird das Ergebnis daher meist verwaschen oder pixelig aussehen, beim Druck in einer anderen Auflösung ist das Ergebnis ebenfalls suboptimal bis hin zu eher schlecht.
*Merksatz: `mf`-Fonts eignen sich nur für Verarbeitungsprozesse, bei denen man min. die Auflösung des Ausgabegeräts, besser das konkrete Ausgabegerät kennt!*
Für LaTeX funktioniert diese einfache Einbindung zwar auf den ersten Blick ebenfalls, allerdings bricht diese komplett das *New Font Selection Scheme 2* (aka NFSS2), das von LaTeX min. seit 1994 verwendet wird. Das mag für einen einfachen Font, der ohnehin nur in einem Schnitt vorliegt, tolerierbar sein, für einen ein wenig besser ausgebauten Font, genügt es jedoch nicht. Stattdessen muss man dann kontrollieren, in welchen Font-Encoding der Font vorliegt und eine entsprechende `fd`-Datei erstellen. Beim Font `d7seg` könnte man sagen, dass er – wenn auch unvollständig – im OT1-Encoding vorliegt. Zumindest sind die Zeichen und 33 bis 126 belegt.
Eine einfache einfache, passende `ot1d7seg.fd` könnte dann so aussehen:
% This is `ot1d7seg.fd`
% Wir gehen davon aus, dass d7seg.mf für die Entwurfsgröße 10pt erstellt wurde.
\ProvidesFile{ot1d7seg.fd}[2014/05/27 v0.1 Font defs for d7seg]
\DeclareFontFamily{OT1}{d7seg}{}
\DeclareFontShape{OT1}{d7seg}{m}{n}{<-> d7seg}{}
Jetzt kann man schon einmal mit `\fontfamily{d7seg}` auf diesen neuen Font umschalten:
\documentclass{article}
\begin{document}
\fontfamily{d7seg}\selectfont
\centering
ABCDEFGHIJKLMNOPQURSTUVWYZ\\
abcdefghijklmnopqrstuvwxyz\\
0123456789\\
.,:;-!"\$\%\&/()
\end{document}
![latex test][2]
Sobald allerdings der Font in anderem Fontkontext verwendet wird, bekommen wir Probleme:
\documentclass{article}
\begin{document}
\fontfamily{d7seg}\bfseries
\centering
ABCDEFGHIJKLMNOPQURSTUVWYZ\\
abcdefghijklmnopqrstuvwxyz\\
0123456789\\
.,:;-!"\$\%\&/()
\end{document}
resultiert in der Font-Warnung:
<pre>
LaTeX Font Warning: Font shape `OT1/d7seg/bx/n' undefined
(Font) using `OT1/d7seg/m/n' instead on input line 4.
</pre>
Trotzdem ist die Entscheidung, die LaTeX hier trifft, vermutlich genau die, die wir auch selbst treffen würden: Da kein fetter Schnitt existiert, wird einfach der normale Schnitt der Schrift verwendet. Sooo groß ist das Problem also gar nicht. Wir könnten allenfalls noch dafür sorgen, dass das still und heimlich, also ohne Warnung geschieht. Dazu fügen wir in der `fd`-Datei die Zeile:
\DeclareFontShape{OT1}{d7seg}{bx}{n}{<->ssub * d7seg/m/n}{}
ein. Dabei steht `ssub` für *silent substitution*.
Näheres zu `fd`-Dateien und den verschiedenen Funktionen bei `\DeclareFontShapte` `\DeclareFontShape` findet sich in Abschnitt 4 von »[LaTeX2e Font Selection](http://www.ctan.org/pkg/fntguide)« (aka `fontguide`).
Wollte man nun, dass beispielsweise der Standard Typewriter-Font durch diesen neuen Font ersetzt wird, so bräuchte man im Dokument lediglich ein
\renewcommand\ttdefault{d7seg}
Allerdings würde das nur funktionieren, solange man das `OT1`-Encoding als Voreinstellung verwendet. Für `T1` müsste man ggf. erst eine weitere `fd`-Datei anlegen. Dort hätte man allerdings das Problem, dass dann die Hälfte der Zeichen tatsächlich fehlen würden. Oder man musste müsste eben im Dokument überall bei Verwendung von Typewriter lokal das Encoding mit `\fontencoding{OT1}` umschalten.
Eine Alternative und gleichzeitig so eine Art Analogon zur Verwendung des mit `\font` definierten Fonts unter plainTeX, wäre eine Anweisung, die `\usefont` verwendet:
\documentclass{article}
\usepackage[T1]{fontenc}
\DeclareRobustCommand{\dsevenseg}[1]{%
{\usefont{OT1}{d7seg}{m}{n}#1}%
}
\begin{document}
Ein paar Ziffern in d7seg \dsevenseg{0123456789} und dann wieder normal.
\end{document}
![\dsevenseg unter LaTeX][3]
Was man bei einem `pk`-Font, der zur Laufzeit aus einer `mf`-Datei erzeugt werden kann, nicht benötigt, ist eine `map`-Datei. Diese benötigt man erst, wenn man einen passenden Type-1- oder OpenType- oder TrueType-Font erzeugt hat. Hierzu gibt es mehrere Aufsätze, die beispielsweise dokumentieren, wie `cm-super` aus der MetaFont-Version der European Computer Modern entstanden ist.
[1]: http://texwelt.de/wissen/upfiles/testd7seg.png
[2]: http://texwelt.de/wissen/upfiles/testd8seg.png
[3]: http://texwelt.de/wissen/upfiles/testd9seg.png