3. Experts - Garamond Expert, Small Caps, OsF

Wer die vorangegangenen Beispiele durchgearbeitet hat, statt sich nur die Files zu laden, kann einmal in das Logfile instfgm.log schauen: In allen verwendeten Codierungen wird das Fehlen von Zeichen angemeckert. In 8r fehlen nur die ff-Ligaturen, in OT1 einige griechische Großbuchstaben, in T1 vier und in TS1 57 Zeichen. Die Schriftfamilie FSGaramond entält - wie alle mir bekannten kommerziellen PostScript-Schriften - keine griechischen Buchstaben. Für nahezu alle anderen fehlenden Zeichen ist aber in dieser und in vielen anderen gut ausgebauten Familien gesorgt.

Ein Teil der fehlenden Zeichen kommt mit sog. Expert-Schriften. Hier sind die fehlenden Ligaturen, hoch- und tiefgestellte Ziffern, Brüche und weitere Sonderzeichen enthalten. Was dann noch fehlt, sind oldstyle figures (OsF), zu deutsch Mediävalziffern. Sie sind gewissermaßen die Kleinbuchstaben bei den Ziffern - 1, 2 und 0 haben x-Höhe, 3,4,5,7 und 9 Unterlänge, 6 und 8 Oberlänge -, während die in Textverarbeitungen üblichen und dadurch schon zur Gewohnheit gewordenen Versalziffern - sie haben wie Großbuchstaben die einheitliche GröTszlig;e von x-Höhe plus Oberlänge - eigentlich der aktiven Auszeichnung dienen, wie jeder Versalsatz. Mit den OsF gerne verknüpft sind Kapitälchen (small caps, SC), verkleinerte Versalien. SC sind aber nicht einfach Verkleinerungen, denn dabei würde ja auch die Strichdicke geringer und damit der Grauwert heller werden. Daher sollen SC nicht gefaked werden - wie es aber in nahezu allen Office-Paketen üblich ist -, sondern eigens designte SC verwendet werden.

Je nach Hersteller und Schriftfamilie kommen Expert-, SC- und OsF-Zeichen - so sie denn verfügbar sind - entweder im gleichen File oder getrennt in die Expert- einerseits und die SC+OsF-Schrift andererseits. Bei der FSGaramond ist letzteres der Fall. Wir finden auf der CD vier Expert-Schriften - regular+italic, bold+italic - und zwei SC+OsF-Schriften, regular und bold. Wir erstellen uns ein neues Arbeitsverzeichnis unterhalb des fontinst-Wurzelverzeichnisses - nennen wir es garamexp und kopieren zunächst einmal alle Schriftfiles hierher und benennen sie um. Das sind einmal die gleichen wie im vorigen Kapitel, und dann zusätzlich die .afm- und .pfb-Files zu folgender Tabelle:

Umbenennung von .pfb- und .afm-Files
Alter FilenameNeuer Filename
Garae___fgmr8x
Garaei__fgmri8x
Garaeb__fgmb8x
Garaebi_fgmbi8x
Garasc__fgmrc8a
Garascb_fgmbc8a

Neu sind hier zwei Dinge: erstens die Bezeichnung der Codierung der Expert-Schriften mit 8x, zweitens die Benennung der SC-Schriften mit dem c VOR der Codierung (danach stünde es für condensed). Nun kopieren wir das File instfgm.tex hierher und benennen es in instfgmx.tex um - da wir keine Erweiterungen zur Garamond Condensed besitzen, wird sich an den Einträgen für diese nichts mehr ändern. Auch die Einträge für die normale Schrift bleiben - mit kleinen oder auch großen Änderungen erhalten, so daß wir uns mit dem Kopieren viel Schreibarbeit erspart haben. Die alte Fassung des Installationsfiles verwenden wir künftig als Schablone für Schriften, die ohne Expertzeichen geliefert werden.

Wir wollen uns die Möglichkeit erhalten, die Schrift auch ohne Expert-Zeichen zu nutzen. Wir werden die Installationsbefehle für die normale Garamond kopieren und die Kopie verändern. Die Familie fgmc bleibt unverändert. Zunächst wählen wir wieder je einen Namen für die Familie mit beiden Laufweiten und für die Familie ohne die Condensed. Konvention, wenn auch keinesfalls verbindlich, ist das Anhängen eines x. Mit der "Suchen und Ersetzen"-Funktion unseres Lieblingseditors ändern wir also in allen neuen Kopien die {fgm}- und {fgmr}-Einträge zu {fgmx} bzw. {fgmrx}. Dadurch werden die Namen der Schriftfamilien in den \installfamily- und \install(raw)font-Befehlen angepaßt. Im weiteren Verlauf arbeitet es sich leichter, wenn wir die sechs Befehlsblöcke, die die Condensed-Schriften betreffen, ans Ende der Datei, aber noch vor die substitute-Befehle verschieben.

Die SC-Schriften der FSGaramond kommen in der normalen Adobe-Standardcodierung mit 244 Zeichen. Zum einen bedeutet das, daß keine besonderen Bemühungen notwendig sind, die Schrift zu vervollständigen, da ja alle Versalien und Sonderzeichen enthalten sind. Zum anderen sind die Kapitächen nicht, wie sie sollten, mit \Asmall ..., sondern mit \a ... benannt, die Zahlen mit \one ... statt mit \oneoldstyle ... Das bringt uns Vorteile, wie wir sehen werden, aber auch ein paar Nachteile. Nochmals der Hinweis: Bei anderen Herstellern mag die Benennung korrekt sein, oder es werden nur SC+OsF ohne Versalien und Sonderzeichen geliefert, oder SC+OsF sind inder Expertschrift enthalten. In allen diesen Fällen kann der nachfolgende Installationsweg nicht wörtlich übernommen werden.

Noch trivial: Wenn die SC-Schriften 8a-codiert sind, sollten sie zuerst nach 8r transformiert werden. Die Expert-Schriften brauchen nicht umcodiert zu werden, wir benötigen aber später ihre .tfm-Files. Daher weisen wir fontinstan, die entsprechenden .pl-Dateien zu erzeugen. Wir ergänzen also den transformfont-Block um die beiden Zeilen:

\transformfont{fgmrc8r}{\reencodefont{8r}{\fromafm{fgmrc8a}}}
\transformfont{fgmbc8r}{\reencodefont{8r}{\fromafm{fgmbc8a}}}

\transformfont{fgmr8x}{\fromafm{fgmr8x}}
\transformfont{fgmri8x}{\fromafm{fgmri8x}}
\transformfont{fgmb8x}{\fromafm{fgmb8x}}
\transformfont{fgmbi8x}{\fromafm{fgmbi8x}}

Zur Ergänzung der TS1-Codierung benötigen wir allerdings Mediävalziffern mit der korrekten Bezeichnung. Dafür schaffen wir uns .mtx-Files einer neuen SC-Schrift, in der alle Glyphen korrekt benannt sind. fontinst stellt dafür einen Mechanismus bereit; die Befehle sehen so aus:

\reglyphfonts
\input csc2x
\reglyphfont{fgmrcx8r}{fgmrc8r}
\reglyphfont{fgmbcx8r}{fgmbc8r}
\endreglyphfonts

Diese "Schrift" verwenden wir nur zum Füllen der TS1-Schriften, daher bedarf es auch nicht der Installation.

Die Expert-Zeichen fügen wir ohne weitere Bemühungen ein, indem wir einfach die .mtx-Liste erweitern. Bevor wir die installfont-Befehle anpassen, schauen wir noch einmal die Codierungsbezeichnungen nach: Die 8r-Codierung entfällt, da expertisierte Schriften immer virtuelle Schriften sind, die OT1-Codierung mit Expert-Zeichen wird mit 9t bezeichnet, T1 mit Expert als 9e und TS1 mit Expert als 9c. Eine unnötige Komplizierung, da die jeweiligen Codierungen ohne Expert-Zeichen ja nicht vollständig gefüllt werden können, aber so sind nunmal die Regeln. Mit Einfügen der Expert-Schriften, in der TS1-Codierung auch der oben erstellten SC-Metriken mit korrekter Bezeichnung der Mediävalziffern, in die .mtx-Liste sehen die Befehle für die fgmrx-Familie (die für die normalen Schriften in der fgmx-Familie sind natürlich identisch anzupassen) wie folgt aus:

\installfont{fgmr9t}{fgmr8r,fgmr8x,latin}{OT1}{OT1}{fgmrx}{m}{n}{}
\installfont{fgmr9e}{fgmr8r,fgmr8x,latin}{T1}{T1}{fgmrx}{m}{n}{}
\installfont{fgmr9c}{fgmr8r,fgmr8x,fgmrcx8r,textcomp}{TS1}{TS1}{fgmrx}{m}{n}{}

\installfont{fgmri9t}{fgmri8r,fgmri8x,latin}{OT1}{OT1}{fgmrx}{m}{it}{}
\installfont{fgmri9e}{fgmri8r,fgmri8x,latin}{T1}{T1}{fgmrx}{m}{it}{}
\installfont{fgmri9c}{fgmri8r,fgmri8x,textcomp}{TS1}{TS1}{fgmrx}{m}{it}{}

\installfont{fgmb9t}{fgmb8r,fgmb8x,latin}{OT1}{OT1}{fgmrx}{b}{n}{}
\installfont{fgmb9e}{fgmb8r,fgmb8x,latin}{T1}{T1}{fgmrx}{b}{n}{}
\installfont{fgmb9c}{fgmb8r,fgmb8x,fgmbcx8r,textcomp}{TS1}{TS1}{fgmrx}{b}{n}{}

\installfont{fgmbi9t}{fgmbi8r,fgmbi8x,latin}{OT1}{OT1}{fgmrx}{b}{it}{}
\installfont{fgmbi9e}{fgmbi8r,fgmbi8x,latin}{T1}{T1}{fgmrx}{b}{it}{}
\installfont{fgmbi9c}{fgmbi8r,fgmbi8x,textcomp}{TS1}{TS1}{fgmrx}{b}{it}{}

Dazu kommen dann noch die Befehle für die SC-Schriften. Hierfür gibt es keine Expert-Zeichen; die der Grundschrift bauen wir nicht ein, da sonst die ff-Ligaturen der Gemeinen mitten im Kapitälchensatz benutzt würden. Auch stellen wir keine TS1-Schrift her. Bei fehlenden Zeichen kann dann halt nicht die SC-Auszeichnung durchgehalten werden, sondern man muß in den normalen Textmodus zurück. Man beachte, daß als Encoding Files die normalen OT1, T1 und TS1 benutzt werden; hätten die SC-Zeichen die korrekten Bezeichnungen \Asmall ... \Zsmall statt \a ... \z, müßte hier OT1c und T1c benutzt werden. Anzumerken ist hier, daß, da zu den SC-Schriften ja keine Expert-Zeichen zur Verfügung stehen, die korrekte Codierungsbenennung 7t bzw. 8t wäre. Walter Schmitt hat mich darauf hingewiesen, daß gefakte Kapitälchen mit 7t/8t gekennzeichnet werden; um ein Upgrade von gefakten auf echte SC zu ermöglichen, ohne existierende Dokumente, die auf die gefakten zugreifen, zu verändern, benenne ich die Codierungen, als ob sie Expert-Zeichen enthielten, so werden evtl. vorhandene gefakte SCs nicht überschrieben.

\installrawfont{fgmrc8r}{fgmrc8r,8r}{8r}{8r}{fgmrx}{m}{sc}{}
\installfont{fgmrc9t}{fgmrc8r,latin}{OT1}{OT1}{fgmrx}{m}{sc}{}
\installfont{fgmrc9e}{fgmrc8r,latin}{T1}{T1}{fgmrx}{m}{sc}{}

\installrawfont{fgmbc8r}{fgmbc8r,8r}{8r}{8r}{fgmrx}{b}{sc}{}
\installfont{fgmbc9t}{fgmbc8r,latin}{OT1}{OT1}{fgmrx}{b}{sc}{}
\installfont{fgmbc9e}{fgmbc8r,latin}{T1}{T1}{fgmrx}{b}{sc}{}

In der Codierung T1 fehlt noch das Zeichen perthousendzero, OT1 ist ein Zeichen vollständiger, TS1 hat auch OsF. Jetzt noch fehlende Zeichen müssen aus anderen (Symbol-)Schriften genommen werden, sofern man das möchte; die .mtx-Liste ist dann entsprechend zu erweitern.

Mediävalziffern sind in diesen Familien durch Umschalten auf Kapitälchen zu erhalten. Zu wünschen wäre - wenigstens für nicht technische Dokumente -, daß die Mediävalziffern Standard und die Versalziffern Auszeichnung wären. Auch dies ist erreichbar. Dazu defninieren wir zwei neue Familien, bei denen laut Konvention ein j an den Namen der Stammfamilie angehängt wird, also fgmj und fgmrj. Also:

\installfamily{OT1}{fgmj}{}
\installfamily{T1}{fgmj}{}
\installfamily{TS1}{fgmj}{}
\installfamily{OT1}{fgmrj}{}
\installfamily{T1}{fgmrj}{}
\installfamily{TS1}{fgmrj}{}

Eine Schrift mit OsF, aber ohne Expert-Zeichen, die die Konvention durch eine angehängte 9 kennzeichnet, erstellen wir hier nicht, da wir uns ja nicht künstlich beschränken wollen. Die Zeilen für die Condensed kopieren wir einfach von der fgmx und ändern den Eintrag für die Familie.

Die Codierungskürzel für OT1 mit Expert und OsF sind 9o, für T1 mit Expert und OsF 9d. Eine eigene TS1-Codierung mit OsF gibts nicht, in TS1 sind OsF ohnehin enthalten. Wir erstellen die virtuellen TS1-Schriften hier einfach neu, diese Files werden dann auch von den Familien fgmx und fgmrx mitbenutzt. 8r-Schriften erstellen wir keine, denn wir haben ja keine Raw Fonts, sondern mischen aus mehreren. Abweichend vom Standard wollen wir die Versalziffern, die uns ja dann nicht mehr zur Verfügung stehen würden, in die SC-Schriften integrieren, um auf diesem Wege auf sie zugreifen zu können.

Die Vorgehensweise ist folgende: Wir beginnen mit unserer normalen Schrift und laden dann die Expert-Zeichen dazu. Dann löschen wir die Ziffern - fontinst bringt dafür die Datei unsetnum.mtx mit - und fügen die OsF aus der SC-Schrift ein:

\installfont{fgmr9o}{fgmr8r,fgmr8x,unsetnum,kernoff,fgmrc8r,kernon,latin}{OT1}{OT1}{fgmj}{m}{n}{}
\installfont{fgmr9d}{fgmr8r,fgmr8x,unsetnum,kernoff,fgmrc8r,kernon,latin}{T1}{T1}{fgmj}{m}{n}{}

Damit sieht die Installation der TS1-Schrift so aus:

\installfont{fgmr9c}{fgmr8r,fgmr8x,unsetnum,kernoff,fgmrc8r,kernon,osfhax,textcomp}{TS1}{TS1}{fgmj}{m}{n}{}

Entsprechend wird die Fette installiert, während die entsprechenden Kursiven mangels OsF unverändert übernommen werden. Für die SC-Schriften tun wir das Gegenteil: wir löschen die OsF und fügen die Versalziffern aus der regulären Schrift ein:

\installfont{fgmrc9o}{fgmrc8r,unsetnum,kernoff,fgmr8r,kernon,latin}{OT1}{OT1}{fgmj}{m}{sc}{}
\installfont{fgmr8t}{fgmrc9d,unsetnum,kernoff,fgmr8r,kernon,latin}{T1}{T1}{fgmj}{m}{sc}{}

Auch dies tun wir entsprechend für die Fette. Nun noch tex instfgmx.tex und tfmmake laufen lassen und die entstandenen Files an die passenden Orte kopieren.

Die DVI-Treiber müssen noch erfahren, wie sie die neuen Zeichen darzustellen haben. Die entsprechenden Einträge für die fgm.map für pdftex und dvips:

fgmrc8r FSGaramondSmCaps " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmrc8a.pfb
fgmbc8r FSGaramondSmCaps-Bold " TeXBase1Encoding ReEncodeFont " <8r.enc <fgmbc8a.pfb

Entsprechend für dvipdfm:

fgmrc8r 8r.enc fgmrc8a.pfb
fgmbc8r 8r.enc fgmbc8a.pfb

Die Expert-Schriften brauchen also keine eigenen Einträge, ihre Zeichen werden ja aus der ursprünglichen Codierung genommen. Woher können wir das erfahren? fontinst bietet auch dafür einen Mechanismus, der noch keine vollständigen map-Files erstellt, aber alle Informationen dafür liefert. Wir fügen gleich unter dem \input-Befehl diese Zeile ein:

\recordtransforms{fgmxmap.tex}

und direkt über dem \bye:

\endrecordtransforms

Damit werden Informationen über alle eingesetzten Schriften in der Datei fgmxmap.tex gesammelt. Das ganze muß dann noch lesbar gemacht werden: Wir erstellen folgende Datei mapinstfgm.tex:

\input finstmsc.sty
\adddriver{debug}{fgmxmap.txt}
\input fgmxmap.tex
\donedrivers
\bye

und finden nach tex mapinstfgm.tex in der Datei fgmxmap.txt eine Beschreibung der Schriften, die in die map-Dateien eingetragen werden müssen.

Nach Aktualisieren der Datenliste sind diese Anpassungen nun unter LaTeX verfügbar. Um sie verwenden zu können, spendieren wir dem Stylefile - wir nennen es jetzt fsgaramond.sty - ein paar neue Optionen: standardmäßig sollen die Expert-Schriften mit Versalziffern verwendet werden. Mit noexpert sollen die Expert-Zeichen ausgeschaltet werden, mit osf können die Mediävalziffern als Standardziffern verwendet werden. Damit sieht der Anfang des Styles so aus:

\NeedsTeXFormat{LaTeX2e}[1998/06/01]
\ProvidesPackage{fsgaramond}
[2002/02/13 v0.3alpha FontSite FSGaramond font package]

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

\newif\if@fgmcomp
\DeclareOption{compressed}{\@fgmcomptrue}

\newif\if@fgmdef
\DeclareOption{default}{\@fgmdeftrue}

\newif\if@fgmnot
\DeclareOption{nodefault}{\@fgmnottrue}

\newif\if@fgmnox
\DeclareOption{noexpert}{\@fgmnoxtrue}

\newif\if@fgmosf
\DeclareOption{osf}{\@fgmosftrue}

\ProcessOptions\relax

% Choice of the family
\if@fgmnot
% If Option nodefault is used, nothing has to be done here
\else
\if@fgmcomp
\renewcommand{\rmdefault}{fgmc}
\else
\if@fgmnox % no expert fonts?
\renewcommand{\rmdefault}{fgmr}
\else % expert fonts
\if@fgmosf % oldstyle figures?
\renewcommand{\rmdefault}{fgmrj}
\else % regular figures?
\renewcommand{\rmdefault}{fgmrx}
\fi
\fi
\fi
\if@fgmdef
\renewcommand{\familydefault}{\rmdefault}
\fi
\fi

Die durch die Optionen gewählte Standardschrift wollen wir auch durch Befehl verfügbar machen. Der Befehl soll \Fsgaramond heißen und die durch die Optionen vorgegebene Schrift auch dann anwählen, wenn die Option nodefault aktiv ist. Gleichzeitig wird für den Fall, daß die Compressed gewählt ist, eine Umgebung \textli{} und ein Befehl \liseries definiert, mit denen die leichte Version der Compressed angesprochen werden kann.

\if@fgmcomp
\providecommand{\liseries}{\fontseries{l}\selectfont}
\providecommand{\textli}[1]{{\liseries #1}}
\newcommand{\Fsgaramond}{\fontfamily{fgmc}\selectfont}
\else
% noexpert and osf are only available in the regular width
\if@fgmnox % no expert fonts?
\newcommand{\Fsgaramond}{\fontfamily{fgmr}\selectfont}
\else % expert fonts
\if@fgmosf % oldstyle figures?
\newcommand{\Fsgaramond}{\fontfamily{fgmrj}\selectfont}
\else % regular figures?
\newcommand{\Fsgaramond}{\fontfamily{fgmrx}\selectfont}
\fi
\fi
\fi

\providecommand{\textfgm}[1]{{\Fsgaramond #1}}

Die letzte Zeile legt außerdem noch eine Umgebung \textfgm{} fest, in der unabhängig von sonst gewählten Schriften die durch die Optionen festgelegte Garamond verwendet wird. Abschließend ermöglichen wir noch dem Anwender, bei Bedarf alle oben installierten Schriftfamilien mit ihrem Namen anzusprechen, und wir geben eine Warnung zur Ästhetik der Garamond im Zusammenspiel mit anderen Schriften aus:

\newcommand{\Fgm}{\fontfamily{fgm}\selectfont}
\newcommand{\Fgmr}{\fontfamily{fgmr}\selectfont}
\newcommand{\Fgmc}{\fontfamily{fgmc}\selectfont}
\newcommand{\Fgmx}{\fontfamily{fgmx}\selectfont}
\newcommand{\Fgmj}{\fontfamily{fgmj}\selectfont}
\newcommand{\Fgmrx}{\fontfamily{fgmrx}\selectfont}
\newcommand{\Fgmrj}{\fontfamily{fgmrj}\selectfont}

\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

Auch dieses Paket muß LaTeX noch bekannt gemacht werden, dann können alle Varianten der FSGaramond durch bequeme Befehle eingesetzt werden.

Die Standard-Installation der Schrift ist nun abgeschlossen, wer bis hierhin gelesen hat, sollte jede Schrift mit den ihm vorliegenden Gewichten, Laufweiten, Varianten verwenden können. Das folgende Kapitel behandelt einige Veränderungen, die nicht notwendig, mitunter aber hilfreich sind.

Auch hier noch einmal die Dateien zum Download: