2. Basics - Garamond

Das nächste Beispiel behandelt eine komplette Schriftfamilie: Die SoftMaker Garamond. Auch hier erstellen wir uns zuerst ein Arbeitsverzeichnis, das wir garam nennen wollen. Hierher kopieren wir die Dateien Garb___.pfm, Garabi__.pfm, Garac___.pfm, Garacb__.pfm, Garacbi_.pfm, Garaci__.pfm, Garacl__.pfm, Garacli_.pfm, Garai___.pfm und Garamond.pfm sowie die gleichnamigen .afm-Files. Um uns beim Umbenennen die ständigen Fehlermeldungen zu ersparen, entfernen wir gleich bei allen Dateien den Schreibschutz.

Mit der Umbenennung müssen wir uns diesmal mehr Mühe geben. Wir halten uns streng ans Schema; es wird sehr empfohlen, diese Schritte anhand des Karl-Berry-Schemas nachzuvollziehen. Der erste Buchstabe bennent den Hersteller. SoftMaker und FontSite haben hier keinen eigenen Code, wir verwenden also den "Joker" f. Damit wird auch der Pfad für die erzeugten Files unterhalb \localtexmf\fonts\<filetyp> festgelegt: Unsere Files werden später nach public gelangen.

Die nächsten beiden Buchstaben bezeichnen die Schriftfamilie. Wenn wir einmal im Browser nach "garamond" suchen, werden wir viele verschiedene Einträge finden; wir verwenden den am wenigsten spezifischen: unsere Garamond bekommt den Code gm und den Pfad garamond. Die neuen Namen aller Files werden also mit fgm beginnen.

Die nächsten Zeichen sind für jede Schrift anders; hier muß mit dem Adobe Type Manager oder einem Texteditor nachgeschaut werden, welche Schrift sich jeweils hinter der Abkürzung verbirgt. Der vierte Buchstabe gibt das Gewicht an: r für normal, b für fett, l für leicht. Von den folgenden Varianten taucht hier nur eine auf: die Kursive, die, wo sie vorkommt, mit i gekennzeichnet wird. Nachfolgend erscheint die Codierung: hier einheitlich 8a. Abschließend taucht noch die Weite auf: die Compressed-Schriften bekommen hier ein c. Nachfolgend noch einmal als Tabelle (die Endungen .pfb und .afm bleiben natürlich erhalten):

Umbenennung von .pfb- und .afm-Files
Alter FilenameNeuer Filename
Garab___fgmb8a
Garabi__fgmbi8a
Garac___fgmr8ac
Garacb__fgmb8ac
Garacbi_fgmbi8ac
Garaci__fgmri8ac
Garacl__fgml8ac
Garacli_fgmli8ac
Garai___fgmri8a
Garamondfgmr8a

Als Befehlsdatei für fontinst legen wir die Datei instfgm.tex an und füllen sie wie gewohnt:

\input fontinst.sty
\installfonts

\transformfont{fgmr8r}{\reencodefont{8r}{\fromafm{fgmr8a}}}
\transformfont{fgmri8r}{\reencodefont{8r}{\fromafm{fgmri8a}}}
\transformfont{fgmb8r}{\reencodefont{8r}{\fromafm{fgmb8a}}}
\transformfont{fgmbi8r}{\reencodefont{8r}{\fromafm{fgmbi8a}}}
\transformfont{fgmr8rc}{\reencodefont{8r}{\fromafm{fgmr8ac}}}
\transformfont{fgmri8rc}{\reencodefont{8r}{\fromafm{fgmri8ac}}}
\transformfont{fgmb8rc}{\reencodefont{8r}{\fromafm{fgmb8ac}}}
\transformfont{fgmbi8rc}{\reencodefont{8r}{\fromafm{fgmbi8ac}}}
\transformfont{fgml8rc}{\reencodefont{8r}{\fromafm{fgml8ac}}}
\transformfont{fgmli8rc}{\reencodefont{8r}{\fromafm{fgmli8ac}}}

Jede Schrift wird zunächst nach 8r umcodiert.

\installfamily{8r}{fgm}{}
\installfamily{OT1}{fgm}{}
\installfamily{T1}{fgm}{}
\installfamily{TS1}{fgm}{}

Auch hier nicht viel neues: Wir erzeugen für jede Codierung eine Schriftfamilie. Neu ist die zusätzliche Verwendung der TS1-Codierung.

\installrawfont{fgmr8r}{fgmr8r,8r}{8r}{8r}{fgm}{m}{n}{}
\installfont{fgmr7t}{fgmr8r,latin}{OT1}{OT1}{fgm}{m}{n}{}
\installfont{fgmr8t}{fgmr8r,latin}{T1}{T1}{fgm}{m}{n}{}
\installfont{fgmr8c}{fgmr8r,textcomp}{TS1}{TS1}{fgm}{m}{n}{}

Keine Überraschung in den ersten drei Zeilen; für die vierte brauchen wir die Info, daß die TS1-Codierung mit 8c bezeichnet wird und das ergänzende Systemfile textcomp.mtx heißt. Das tun wir jetzt für jede Schrift und passen am Ende die Auswahlparameter an:

\installrawfont{fgmri8r}{fgmri8r,8r}{8r}{8r}{fgm}{m}{it}{}
\installfont{fgmri7t}{fgmri8r,latin}{OT1}{OT1}{fgm}{m}{it}{}
\installfont{fgmri8t}{fgmri8r,latin}{T1}{T1}{fgm}{m}{it}{}
\installfont{fgmri8c}{fgmri8r,textcomp}{TS1}{TS1}{fgm}{m}{it}{}

\installrawfont{fgmb8r}{fgmb8r,8r}{8r}{8r}{fgm}{b}{n}{}
\installfont{fgmb7t}{fgmb8r,latin}{OT1}{OT1}{fgm}{b}{n}{}
\installfont{fgmb8t}{fgmb8r,latin}{T1}{T1}{fgm}{b}{n}{}
\installfont{fgmb8c}{fgmb8r,textcomp}{TS1}{TS1}{fgm}{b}{n}{}

\installrawfont{fgmbi8r}{fgmbi8r,8r}{8r}{8r}{fgm}{b}{it}{}
\installfont{fgmbi7t}{fgmbi8r,latin}{OT1}{OT1}{fgm}{b}{it}{}
\installfont{fgmbi8t}{fgmbi8r,latin}{T1}{T1}{fgm}{b}{it}{}
\installfont{fgmbi8c}{fgmbi8r,textcomp}{TS1}{TS1}{fgm}{b}{it}{}

\installrawfont{fgmr8rc}{fgmr8rc,8r}{8r}{8r}{fgm}{mc}{n}{}
\installfont{fgmr7tc}{fgmr8rc,latin}{OT1}{OT1}{fgm}{mc}{n}{}
\installfont{fgmr8tc}{fgmr8rc,latin}{T1}{T1}{fgm}{mc}{n}{}
\installfont{fgmr8cc}{fgmr8rc,textcomp}{TS1}{TS1}{fgm}{mc}{n}{}

\installrawfont{fgmri8rc}{fgmri8rc,8r}{8r}{8r}{fgm}{mc}{it}{}
\installfont{fgmri7tc}{fgmri8rc,latin}{OT1}{OT1}{fgm}{mc}{it}{}
\installfont{fgmri8tc}{fgmri8rc,latin}{T1}{T1}{fgm}{mc}{it}{}
\installfont{fgmri8cc}{fgmri8rc,textcomp}{TS1}{TS1}{fgm}{mc}{it}{}

\installrawfont{fgmb8rc}{fgmb8rc,8r}{8r}{8r}{fgm}{bc}{n}{}
\installfont{fgmb7tc}{fgmb8rc,latin}{OT1}{OT1}{fgm}{bc}{n}{}
\installfont{fgmb8tc}{fgmb8rc,latin}{T1}{T1}{fgm}{bc}{n}{}
\installfont{fgmb8cc}{fgmb8rc,textcomp}{TS1}{TS1}{fgm}{bc}{n}{}

\installrawfont{fgmbi8rc}{fgmbi8rc,8r}{8r}{8r}{fgm}{bc}{it}{}
\installfont{fgmbii7tc}{fgmbi8rc,latin}{OT1}{OT1}{fgm}{bc}{it}{}
\installfont{fgmbii8tc}{fgmbi8rc,latin}{T1}{T1}{fgm}{bc}{it}{}
\installfont{fgmbii8cc}{fgmbi8rc,textcomp}{TS1}{TS1}{fgm}{bc}{it}{}

\installrawfont{fgml8rc}{fgml8rc,8r}{8r}{8r}{fgm}{lc}{n}{}
\installfont{fgml7tc}{fgml8rc,latin}{OT1}{OT1}{fgm}{lc}{n}{}
\installfont{fgml8tc}{fgml8rc,latin}{T1}{T1}{fgm}{lc}{n}{}
\installfont{fgml8cc}{fgml8rc,textcomp}{TS1}{TS1}{fgm}{lc}{n}{}

\installrawfont{fgmli8rc}{fgmli8rc,8r}{8r}{8r}{fgm}{lc}{it}{}
\installfont{fgmli7tc}{fgmli8rc,latin}{OT1}{OT1}{fgm}{lc}{it}{}
\installfont{fgmli8tc}{fgmli8rc,latin}{T1}{T1}{fgm}{lc}{it}{}
\installfont{fgmli8cc}{fgmli8rc,textcomp}{TS1}{TS1}{fgm}{lc}{it}{}

In Standard-Klassen wird für Überschriften oft eine extended bold statt einer Fetten verwendet. Eine extended bold haben wir hier nicht, statt dessen soll die Fette verwendet werden, ohne daß wir es jemandem sagen:

\substitutesilent{bx}{b}

\endinstallfonts
\bye

Den Schluß kennen wir schon. Nun wird das File von TeX ausgeführt, anschließend lassen wir tfmmake (aus dem vorigen Beispiel) laufen:

tex instfgm.tex; tfmmake

Aus den im fontinst-Lauf erstellten je zwanzig .mtx- und .pl-Files - für jede der zehn Fonts je eines für die 8a- und die 8r-Codierung - und den dreißig .vpl-Files - für jede der zehn Fonts je eines für die 7t-, 8t- und 8c-Codierung - entstehen dreißig .vf-Files - entsprechend den .vpls - und fünfzig .tfms, eines pro Font und Codierung.

Das .map-File - wir nennen es fgm.map - wird auch etwas größer, die zu verwendenden PostScript-Schriftnamen erhalten wir aus den Schrift-Files oder vom ATM:

fgmr8r FSGaramond " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmr8a.pfb
fgmri8r FSGaramond-Italic " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmri8a.pfb
fgmb8r FSGaramond-Bold " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmb8a.pfb
fgmbi8r FSGaramond-BoldItalic " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmbi8a.pfb
fgmr8rc GaramondCond " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmr8ac.pfb
fgmri8rc GaramondCond-Italic " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmri8ac.pfb
fgmb8rc GaramondCond-Bold " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmb8ac.pfb
fgmbi8rc GaramondCond-BoldItalic " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmbi8ac.pfb
fgml8rc GaramondCondLight " TeXBase1Encoding ReEncodeFont " <8r.enc <fgml8ac.pfb
fgmli8rc GaramondCondLight-Italic " TeXBase1Encoding ReEncodeFont "<8r.enc <fgmli8ac.pfb

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

p +fgm.map

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

map +fgm.map

Das entsprechende File für dvipdfm nennen wir fgmd.map, und es sieht so aus:

fgmr8r 8r.enc fgmr8a.pfb
fgmri8r 8r.enc fgmri8a.pfb
fgmb8r 8r.enc fgmb8a.pfb
fgmbi8r 8r.enc fgmbi8a.pfb
fgmr8rc 8r.enc fgmr8ac.pfb
fgmri8rc 8r.enc fgmri8ac.pfb
fgmb8rc 8r.enc fgmb8ac.pfb
fgmbi8rc 8r.enc fgmbi8ac.pfb
fgml8rc 8r.enc fgml8ac.pfb
fgmli8rc 8r.enc fgmli8ac.pfb

Das File wird nach \localtexmf\dvipdfm\config kopiert und in diesem Verzeichnis die Datei config um die Zeile

f fgmd.map

ergänzt.

Nun noch die Dateien an den richtigen Platz: Die .afm-Dateien nach \localtexmf\fonts\afm\public\garamond, wie wir ja weiter oben schon gezeigt haben, die .pfb-, .vf- und .tfm-Dateien entsprechend. Die .fd-Dateien kommen nach \localtexmf\tex\latex\public\garamond\. Dann noch die Datenbasis aktualisieren, und schon können wir die neue Schrift benutzen.

Die Wahl der Garamond als Brotschrift erfolgt nach bekanntem Muster:

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\renewcommand{\rmdefault}{fgm}
\begin{document}
Dies ist ein \textit{kursiver} \textbf{fetter} \textit{\textbf{kursivfetter}} Text
\end{document}

Problematischer wirds bei der Garamond Compressed. Die Laufweite wird in LaTeX nämlich nicht als eigene Eigenschaft behandelt, sie bildet zusammen mit dem Gewicht die Serie. Alle Wechsel des Gewichts können daher nur mit dem \selectfont-Befehl erreicht werden. Der \textit-Befehl hingegen funktioniert.

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\renewcommand{\rmdefault}{fgm}
\begin{document}
\fontseries{mc}\selectfont Dies ist ein \textit{kursiver} {\fontseries{bc}\selectfont fetter} {\fontseries{bc}\selectfont \textit{kursivfetter}} Text
\end{document}

Weil dies auf Dauer recht umständlich ist, bietet es sich an, die Garamond von der Garamond Compressed doch derart zu trennen, daß sie je eigene Familien bilden. Wir stellen eine Familie fgmc für die Compressed und eine fgmr für die normale her. Man beachte, daß diese Familienbezeichnungen reine Willkür sind und nichts mit den Schriftnamen zu tun haben müssen. Die Abbildung der internen LaTeX-Bezeichnungen auf die Schriftnamen findet in den .fd-Dateien statt. So sieht die Datei t1fgm.fd so aus:

\ProvidesFile{t1fgm.fd}

[2002/01/30 Fontinst v1.914 font definitions for T1/fgm.]
\DeclareFontFamily{T1}{fgm}{}
\DeclareFontShape{T1}{fgm}{m}{n}{<-> fgmr8t}{}
\DeclareFontShape{T1}{fgm}{m}{it}{<-> fgmri8t}{}
\DeclareFontShape{T1}{fgm}{b}{n}{<-> fgmb8t}{}
\DeclareFontShape{T1}{fgm}{b}{it}{<-> fgmbi8t}{}
\DeclareFontShape{T1}{fgm}{mc}{n}{<-> fgmr8tc}{}
\DeclareFontShape{T1}{fgm}{mc}{it}{<-> fgmri8tc}{}
\DeclareFontShape{T1}{fgm}{bc}{n}{<-> fgmb8tc}{}
\DeclareFontShape{T1}{fgm}{bc}{it}{<-> fgmbi8tc}{}
\DeclareFontShape{T1}{fgm}{lc}{n}{<-> fgml8tc}{}
\DeclareFontShape{T1}{fgm}{lc}{it}{<-> fgmli8tc}{}

\DeclareFontShape{T1}{fgm}{m}{sl}{<->ssub * fgm/m/it}{}
\DeclareFontShape{T1}{fgm}{bx}{n}{<->ssub * fgm/b/n}{}
\DeclareFontShape{T1}{fgm}{bx}{it}{<->ssub * fgm/b/it}{}
\DeclareFontShape{T1}{fgm}{b}{sl}{<->ssub * fgm/b/it}{}
\DeclareFontShape{T1}{fgm}{bx}{sl}{<->ssub * fgm/b/sl}{}
\DeclareFontShape{T1}{fgm}{mc}{sl}{<->ssub * fgm/mc/it}{}
\DeclareFontShape{T1}{fgm}{bc}{sl}{<->ssub * fgm/bc/it}{}
\DeclareFontShape{T1}{fgm}{lc}{sl}{<->ssub * fgm/lc/it}{}

\endinput

Der DeclareFontFamily-Befehl definiert, welche Schriftfamilie in welcher Codierung im folgenden definiert wird. Jeder Schriftschnitt hat nun seine eigene DeclareFontShape-Zeile. Die ersten vier definieren die normale FSGaramond. Sie könnten in ein File t1fgmr.fd kopiert werden, ebenso wie die nächsten sechs, die die Garamond Compressed betreffen, in ein File t1fgmc.fd. In beiden Fällen muß dann im neuen File der Familienname in den DeclareFontShape-Zeilen angepaßt werden, für die Compressed wird zusätzlich noch die Serie von Compressed auf normal geändert, schließlich ist die Information zur Laufweite bereits im Schriftnamen - das war ja der Sinn der Übung.

Dieses Verfahren ist korrekt, und wenn es nur einmal durchgeführt werden soll, ist es auch einfacher, die .fd-Files von Hand zu ändern. Wollen wir aber mit einer Schrift experimentieren, oder wollen wir ein File erstellen, mit dem wir durch schnellen Austausch des Schriftnamens über Suchen und Ersetzen mehrere Schriften installiert werden sollen, empfiehlt es sich, ein wenig Mehraufwand im Installationsfile zu betreiben und das Handling der .fd-Files fontinst zu überlassen. Wir gehen also noch mal zurück in das File instfgm.tex und ergänzen die \installfamily-Befehle wie folgt:

\installfamily{8r}{fgmr}{}
\installfamily{OT1}{fgmr}{}
\installfamily{T1}{fgmr}{}
\installfamily{TS1}{fgmr}{}
\installfamily{8r}{fgmc}{}
\installfamily{OT1}{fgmc}{}
\installfamily{T1}{fgmc}{}
\installfamily{TS1}{fgmc}{}

Es werden also - außer der schon oben definierten Familie fgm, die die normale und die compressed Garamond enthält - eine Familie fgmr für die normale und eine Familie fgmc für die compressed Garamond eingerichtet. Natürlich müssen nun auch die \install(raw)font-Befehle erweitert werden um folgenden Block:

\installrawfont{fgmr8r}{fgmr8r,8r}{8r}{8r}{fgmr}{m}{n}{}
\installfont{fgmr7t}{fgmr8r,latin}{OT1}{OT1}{fgmr}{m}{n}{}
\installfont{fgmr8t}{fgmr8r,latin}{T1}{T1}{fgmr}{m}{n}{}
\installfont{fgmr8c}{fgmr8r,textcomp}{TS1}{TS1}{fgmr}{m}{n}{}

\installrawfont{fgmri8r}{fgmri8r,8r}{8r}{8r}{fgmr}{m}{it}{}
\installfont{fgmri7t}{fgmri8r,latin}{OT1}{OT1}{fgmr}{m}{it}{}
\installfont{fgmri8t}{fgmri8r,latin}{T1}{T1}{fgmr}{m}{it}{}
\installfont{fgmri8c}{fgmri8r,textcomp}{TS1}{TS1}{fgmr}{m}{it}{}

\installrawfont{fgmb8r}{fgmb8r,8r}{8r}{8r}{fgmr}{b}{n}{}
\installfont{fgmb7t}{fgmb8r,latin}{OT1}{OT1}{fgmr}{b}{n}{}
\installfont{fgmb8t}{fgmb8r,latin}{T1}{T1}{fgmr}{b}{n}{}
\installfont{fgmb8c}{fgmb8r,textcomp}{TS1}{TS1}{fgmr}{b}{n}{}

\installrawfont{fgmbi8r}{fgmbi8r,8r}{8r}{8r}{fgmr}{b}{it}{}
\installfont{fgmbi7t}{fgmbi8r,latin}{OT1}{OT1}{fgmr}{b}{it}{}
\installfont{fgmbi8t}{fgmbi8r,latin}{T1}{T1}{fgmr}{b}{it}{}
\installfont{fgmbi8c}{fgmbi8r,textcomp}{TS1}{TS1}{fgmr}{b}{it}{}

\installrawfont{fgmr8rc}{fgmr8rc,8r}{8r}{8r}{fgmc}{m}{n}{}
\installfont{fgmr7tc}{fgmr8rc,latin}{OT1}{OT1}{fgmc}{m}{n}{}
\installfont{fgmr8tc}{fgmr8rc,latin}{T1}{T1}{fgmc}{m}{n}{}
\installfont{fgmr8cc}{fgmr8rc,textcomp}{TS1}{TS1}{fgmc}{m}{n}{}

\installrawfont{fgmri8rc}{fgmri8rc,8r}{8r}{8r}{fgmc}{m}{it}{}
\installfont{fgmri7tc}{fgmri8rc,latin}{OT1}{OT1}{fgmc}{m}{it}{}
\installfont{fgmri8tc}{fgmri8rc,latin}{T1}{T1}{fgmc}{m}{it}{}
\installfont{fgmri8cc}{fgmri8rc,textcomp}{TS1}{TS1}{fgmc}{m}{it}{}

\installrawfont{fgmb8rc}{fgmb8rc,8r}{8r}{8r}{fgmc}{b}{n}{}
\installfont{fgmb7tc}{fgmb8rc,latin}{OT1}{OT1}{fgmc}{b}{n}{}
\installfont{fgmb8tc}{fgmb8rc,latin}{T1}{T1}{fgmc}{b}{n}{}
\installfont{fgmb8cc}{fgmb8rc,textcomp}{TS1}{TS1}{fgmc}{b}{n}{}

\installrawfont{fgmbi8rc}{fgmbi8rc,8r}{8r}{8r}{fgmc}{b}{it}{}
\installfont{fgmbii7tc}{fgmbi8rc,latin}{OT1}{OT1}{fgmc}{b}{it}{}
\installfont{fgmbii8tc}{fgmbi8rc,latin}{T1}{T1}{fgmc}{b}{it}{}
\installfont{fgmbii8cc}{fgmbi8rc,textcomp}{TS1}{TS1}{fgmc}{b}{it}{}

\installrawfont{fgml8rc}{fgml8rc,8r}{8r}{8r}{fgmc}{l}{n}{}
\installfont{fgml7tc}{fgml8rc,latin}{OT1}{OT1}{fgmc}{l}{n}{}
\installfont{fgml8tc}{fgml8rc,latin}{T1}{T1}{fgmc}{l}{n}{}
\installfont{fgml8cc}{fgml8rc,textcomp}{TS1}{TS1}{fgmc}{l}{n}{}

\installrawfont{fgmli8rc}{fgmli8rc,8r}{8r}{8r}{fgmc}{l}{it}{}
\installfont{fgmli7tc}{fgmli8rc,latin}{OT1}{OT1}{fgmc}{l}{it}{}
\installfont{fgmli8tc}{fgmli8rc,latin}{T1}{T1}{fgmc}{l}{it}{}
\installfont{fgmli8cc}{fgmli8rc,textcomp}{TS1}{TS1}{fgmc}{l}{it}{}

Die Installation der so erzeugten Files (es sind lediglich acht zusätzliche .fd-Files erzeugt worden) verläuft wie oben beschrieben: tex instfgm.tex; tfmmake und kopieren der Dateien. Die .map-Datei muß nicht geändert werden.

Nach dieser Vorarbeit können wir ein Package schreiben, das uns die Schriftauswahl erleichtert. Wir wollen per Option entscheiden, ob wir die normale Laufweite oder die Compressed verwenden wollen. Die so ausgewählte Schrift wird als \rmdefault gesetzt. Eine Option default soll auswählen, ob Garamond auch \familydefault benutzt werden soll. Die Option nodefault hingegen legt fest, daß an den Schriftvoreinstellungen nichts verändert wird und lediglich noch hinzuzufügende Befehle zur leichteren Schriftwahl definiert werden. Wir erstellen also ein File fgaramond.sty mit folgendem Inhalt:

\NeedsTeXFormat{LaTeX2e}[1998/06/01] \ProvidesPackage{fgaramond} [2002/01/30 v0.1alpha FontSite FGaramond font package]

Das normale Vorgeplänkel: Welche LaTeX-Version wird zumindest benötigt? Und was tut dieses File überhaupt?

\RequirePackage[T1]{fontenc} \RequirePackage{textcomp}

Für den normalen Gebrauch empfiehlt sich die T1-Codierung mitsamt der textcomp-Erweiterung. Damit wir's nicht vergessen, werden die entsprechenden Packages gleich mitgeladen.

\newif\if@fgmcomp \DeclareOption{compressed}{\@fgmcomptrue} \newif\if@fgmdef \DeclareOption{default}{\@fgmdeftrue} \newif\if@fgmnot \DeclareOption{nodefault}{\@fgmnottrue}

Die erforderlichen Optionen werden definiert. Zu jeder Option wird ein Schalter definiert, der normal auf false initialisiert wird und bei benutzter Option auf true gesetzt wird.

\ProcessOptions\relax

Durch diesen Befehl werden die Optionen abgearbeitet und die Schalter gesetzt. Nach Ausführung ist zwar noch nichts geschehen, aber durch das Setzen der Schalter ist die Ausführung der richtigen Befehle im folgenden vorbereitet.

\if@fgmnot \else \if@fgmcomp \renewcommand{\rmdefault}{fgmc} \providecommand{\textli}[1]{{\fontseries{l}\selectfont #1}} \else \renewcommand{\rmdefault}{fgmr} \fi \if@fgmdef \renewcommand{\familydefault}{\rmdefault} \fi \fi

In diesem Block werden die Schriften-Default-Einstellungen gesetzt. Als erstes wird die Option nodefault abgefragt. Ist sie gesetzt, werden in diesem Block keine weiteren Befehle ausgeführt, es geht also direkt mit else weiter. Als nächstes die Entscheidung: compressed oder normal; dementsprechend wird \rmdefault auf fgmc oder fgmr gesetzt. Nur die Compressed kommt auch als light-Version, so daß wir hierfür einen Befehl \textli definieren, der analog zu \textbf arbeitet, aber die leichte statt der fetten Variante wählt. Schließlich wird noch die Option default verarbeitet: ist sie gesetzt, wird \familydefault angepaßt.

\PackageWarning{fgaramond}{This package provides SoftMaker/FontSite Garamond as a roman font. That font does not well mix with the Computer Modern Math, Sans Serif, or Typewriter fonts. It is recommended to use the package eulervm for the math fonts. Choose the sans serif and typewriter fonts according to the fonts you have installed and your taste.}
\endinput

Zum guten Schluß weisen wir noch darauf hin, daß die Verwendung von Garamond nicht nur Vorteile, sondern auch ästhetische Probleme mit sich bringt. Gegen ein automatisches Laden von eulervm, courier und helvetica habe ich mich entschieden, um ein Nebeneinander verschiedener Pakete zu ermöglichen und auch den Nutzer in seiner Wahlfreiheit nicht einzuschränken. Auch wenns manchmal besser wäre ;-)

Die Anwendung sieht beispielsweise so aus:

\documentclass{article}

\usepackage[compressed,nodefault]{fgaramond}

\begin{document}
FontSite Garamond compressed regular\\
abcdefghijklmnopqrstuvwxyz \"a\"o\"u\ss fi fl ff ffi ffl\\
ABCDEFGHIJKLMNOPQRSTUVWXYZ \"A\"O\"U 1234567890

\textit{FontSite Garamond compressed italic\\
abcdefghijklmnopqrstuvwxyz \"a\"o\"u\ss fi fl ff ffi ffl\\
ABCDEFGHIJKLMNOPQRSTUVWXYZ \"A\"O\"U 1234567890}

\textbf{FontSite Garamond compressed bold\\
abcdefghijklmnopqrstuvwxyz \"a\"o\"u\ss fi fl ff ffi ffl\\
ABCDEFGHIJKLMNOPQRSTUVWXYZ \"A\"O\"U 1234567890}

\textbf{\textit{FontSite Garamond compressed bold italic\\
abcdefghijklmnopqrstuvwxyz \"a\"o\"u\ss fi fl ff ffi ffl\\
ABCDEFGHIJKLMNOPQRSTUVWXYZ \"A\"O\"U 1234567890}}

\textli{FontSite Garamond compressed light\\
abcdefghijklmnopqrstuvwxyz \"a\"o\"u\ss fi fl ff ffi ffl\\
ABCDEFGHIJKLMNOPQRSTUVWXYZ \"A\"O\"U 1234567890}

\textli{\textit{FontSite Garamond compressed light italic\\
abcdefghijklmnopqrstuvwxyz \"a\"o\"u\ss fi fl ff ffi ffl\\
ABCDEFGHIJKLMNOPQRSTUVWXYZ \"A\"O\"U 1234567890}}

\end{document}

Auch hier die verwendeten und erzeugten Dateien zum Download: