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:
Alter Filename | Neuer 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 fontinst
an, 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:
- Die Installationsdatei instfgmx.tex
- Die Befehlsdatei tfmmake
- Alle von
fontinst
erzeugten Dateien, fgm.map und fgmd.map als zip-Datei - Das Style-File fsgaramond.sty
- 0. Terms - Begriffliches
- 1. Primitives - Commercial Script
- 2. Basics - Garamond
- 3. Experts - Garamond Experts, SmallCaps und OsF
- 4. Extensions - Gefakte slanted, upright italic, bessere Fußnoten
- 5. Magics - Der \latinfamily-Befehl