Mit freundlicher Genehmigung von Damir Rakityansky (radamir@technologist.com).
Hier geht es zum Original: "Using TrueType fonts with TeX (LaTeX) and pdfTeX
(pdfLaTeX)"
Die Originalanleitung basiert auf MiKTeX 1.11 und Ghostscript+GSView 5.50.
Ich habe das ganze mit MiKTeX 2.2 und
Ghostscript 7.05 + GSview 4.3 nachvollzogen und dabei auf vielfachen
Wunsch gleich in Deutsch übersetzt. Sollte ich bei der Übersetzung gepatzt
haben, bitte ich um eine kurze Nachricht!
Auch wenn irgendwelche Lizenz- und Copyright-Bestimmungen mit den Ausführungen auf dieser Seite verletzt werden,
bitte ich um Benachrichtigung.
Nutzer von Adobe Acrobat 3.01 lesen bitte die "Bug Note" am Ende der Seite oder installieren die neuere Version 5.0.
Es wird davon ausgegangen, dass LaTeX so installiert wurde, wie im Abschnitt MiKTeX beschrieben. Bei Abweichungen müssen die Pfade entsprechend angepasst werden.
Nehmen wir an, dass wir statt der Standardschriftart Computer Modern Roman (cmr) den Text in Times New Roman setzen wollen. Times New Roman in Windows 9x/NT4/2k ist eine Unicode Schriftart, die fast alle Zeichen der Computer Modern enthält - allerdings an verschiedenen Positionen. Für die Verwendung der Schriftarten in TeX (LaTeX) und PDF Dokumenten, müssen zwei weitere Schriftarten erzeugt werden:
Die Datei einer Beispielschriftart habe für TrueType den Name
foo.ttf. Der "virtual tex font" in
T1 encoding erhält dann den Namen ecfoo und der "raw tex font"
den Namen recfoo. Die Times New Roman Schriftfamilie besteht
aus den Dateien times.ttf,
timesi.ttf, timesbd.ttf und timesbi.ttf,
welche im Systemunterordner fonts (normalerweise: c:\windows\fonts directory
für Windows 9x bzw. c:\winnt\fonts für Windows NT/2k) zu
finden sind. Die Schriftfamilie besteht aus Regular (normal), Italic (kursiv), Bold
(fett) und BoldItalic (fettkursiv). Mit dem Buchstaben "o" am Ende des
Namens werden die erzeugten oblique (slanted/geneigte) Varianten der Regular
und Bold Schriftarten bezeichnet.
Die folgende Tabelle fast die beiden vorherigen Absätze noch einmal zusammen:
TrueType Dateiname (.ttf) | TeX Name (virtual font; .vf, .tfm) | Raw TeX Name (.tfm, .afm, .pk) | |
Regular | times | ectimes | rectimes |
Italic | timesi | ectimesi | rectimesi |
Bold | timesbd | ectimesbd | rectimesbd |
BoldItalic | timesbi | ectimesbi | rectimesbi |
Oblique | - | ectimeso | rectimeso |
BoldOblique | - | ectimesbdo | rectimesbdo |
TeX und LaTeX benötigen für die Bearbeitung eines Textes nur die .tfm-Dateien. Die .tfm-Dateien enthalten nicht die Zeichensätze selbst, sondern nur Informationen über die einzelnen Zeichen der entsprechenden Zeichensätze, wie z. B. Abmessungen, Neigungen, Ligaturen usw. Die eigentlichen Zeichensätze werden erst für die Druckausgabe benötigt.
Neben den ttf-Dateien wird noch eine Datei mit den Informationen über die
Position der Zeichen in einer neuen Schriftart benötigt. Hierfür kann die
Datei T1-WGL4.enc
heruntergeladen werden, welche die Informationen für T1 encoding enthält. (Für
die Nutzung von kyrillischen Zeichen sollte die Datei T2A-mod0.enc
oder eine ähnliche aus dem T2 Packet verwendet werden.)
Nun noch ein temporäres Verzeichnis anlegen und die Schriftdateien (times.ttf,
timesbd.ttf, timesbi.ttf, timesi.ttf)
und die Datei T1-WGL4.enc dorthin kopieren
und es kann losgehen ...
Folgende Kommandos an der Eingabeaufforderung ausführen:
ttf2tfm times.ttf -q -T T1-WGL4.enc -v ectimes.vpl rectimes.tfm >> ttfonts.map
ttf2tfm timesi.ttf -q -T T1-WGL4.enc -v ectimesi.vpl rectimesi.tfm >> ttfonts.map
ttf2tfm timesbd.ttf -q -T T1-WGL4.enc -v ectimesbd.vpl rectimesbd.tfm >> ttfonts.map
ttf2tfm timesbi.ttf -q -T T1-WGL4.enc -v ectimesbi.vpl rectimesbi.tfm >> ttfonts.map
Es werden die tfm-Dateien der "raw fonts" und die vpl-Dateien der
"virtual fonts" erzeugt. Für die Erzeugung der slanted/geneigten Versionen der
regular/normalen und bold/fetten Schriftarten müssen folgende Kommandos
ausgeführt werden:
ttf2tfm times.ttf -q -T T1-WGL4.enc -s .167 -v ectimeso.vpl rectimeso.tfm >> ttfonts.map
ttf2tfm timesbd.ttf -q -T T1-WGL4.enc -s .167 -v ectimesbdo.vpl rectimesbdo.tfm >> ttfonts.map
Folgende Kommandos an der Eingabeaufforderung ausführen:
vptovf ectimes.vpl ectimes.vf ectimes.tfm
vptovf ectimesi.vpl ectimesi.vf ectimesi.tfm
vptovf ectimesbd.vpl ectimesbd.vf ectimesbd.tfm
vptovf ectimesbi.vpl ectimesbi.vf ectimesbi.tfm
vptovf ectimeso.vpl ectimeso.vf ectimeso.tfm
vptovf ectimesbdo.vpl ectimesbdo.vf ectimesbdo.tfm
Damit werden die vf- und tfm-Dateien der "virtual fonts" erzeugt.
Anschließend können alle
vpl-Dateien gelöscht werden:
del *.vpl
Die erzeugten vf- und tfm-Dateien müssen nun in die MiKTeX-Installation eingebunden werden. Die vf-Dateien werden dafür nach c:\localtexmf\fonts\vf\ms\times\ verschoben und alle tfm-Dateien nach c:\localtexmf\fonts\tfm\ms\times\. Die Unterordner ms\times sind nicht zwingend erforderlich, aber auf diese Weise (<Anbieter>\<Schriftfamilie>) behält man leichter den Überblick und außerdem entspricht es den üblichen Regeln.
Der Inhalt der Datei ttfonts.map aus dem temporären Verzeichnis muss nun in die Datei c:\texmf\ttf2tfm\base\ttfonts.map eingefügt werden. Am einfachsten per Copy&Paste mittels Notepad. Falls ein anderer Texteditor verwendet wird, ist darauf zu achten, dass dieser lange Zeilen nicht automatisch umgebricht. Abspeichern und Editor schließen.
Nun
noch die Datei T1-WGL4.enc in den Ordner
c:\texmf\pdftex\base\ kopieren und die Database updaten:
MiKTeX 1.x: Start=>Programme=>MiKTeX=>Maintenance=>Refresh Filename Database
MiKTeX 2.x: Start=>Programme=>MiKTeX=>MiKTeX Options und unter General auf Refresh Now klicken
Für den Test der Installation sollte das aktuelle temporäre Verzeichnis
verlassen und in ein Verzeichnis gewechselt werden in welchem keinerlei Dateien
mit Bezug zu den soeben erzeugten Schriftdateien liegen. Dann folgendes Kommando
ausführen:
tex testfont
Es wird abgefragt, welche Schrift getestet werden soll und man gibt nun "ectimes"
ein. Anschließend wird ein Kommando abgefragt, was man mit "\table\eject\init"
beantwortet. Das ganze wiederholt man mit der Schriftart "ectimeso",
dann mit "ectimesbd" usw. Zum Abschluss gibt man das Kommando "\bye"
ein und die Datei testfont.dvi
wird im aktuellen Verzeichnis erzeugt.
Sollten hierbei Probleme auftreten, liegt das normalerweise an Tippfehlern beim
Namen der Schriftarten oder an fehlenden tfm-, vf-Dateien.
Um eventuelle
Probleme mit YAP zu vermeiden, sollte besser noch die Konvertierung der
dvi-Datei in PostScript erfolgen:
dvips testfont.dvi
Die Ausgabe sollte dabei etwa folgendes zeigen:
- make_pk_font (rectimes, 600, 600, ljfour)
name: rectimes, dpi=600, bdpi=600, mag=magstep(0.0), mode=ljfour
C:\texmf\miktex\bin\makemf.exe --verbose rectimes
Cannot find rectimes source file.
C:\texmf\miktex\bin\ttf2pk.exe -q -n rectimes 600
ttf2pk: WARNING: Cannot map character `compwordmark'.
ttf2pk: WARNING: Cannot map character `perthousandzero'.
ttf2pk: WARNING: Cannot map character `dotlessj'.
ttf2pk: WARNING: Cannot map character `ff'.
ttf2pk: WARNING: Cannot map character `ffi'.
ttf2pk: WARNING: Cannot map character `ffl'.
ttf2pk: WARNING: Cannot map character `visualspace'.
ttf2pk: WARNING: Cannot map character `Germandbls'.
Creating rectimes.pk...
move rectimes.pk
C:\localtexmf\fonts\pk\modeless\ms\times\dpi600\rectimes.pk
Wie zu sehen, werden ein paar Zeichen mit nicht all zu großer Bedeutung (z.B. Promillezeichen,
ff, ffi und ffl Ligaturen) vermisst.
Die neuen Schriften können in TeX beispielsweise mit folgendem Kommando benutzt
werden:
\font\myfont=ectimes
\font\mybigfont=ectimes at 36pt
\myfont Hello, I am being typeset in Times New Roman
\mybigfont Me too...
Für die Verwendung in LaTeX ist etwas mehr Aufwand notwendig. Zunächst muss
die Datei t1tnr.fd
im Ordner c:\localtexmf\tex\latex\winfonts angelegt und mit
folgendem Inhalt gefüllt werden:
\ProvidesFile{t1tnr.fd}[Hier Schriftbeschreibung einfügen]
\DeclareFontFamily{T1}{tnr}{}
\DeclareFontShape{T1}{tnr}{b}{n}{<->ectimesbd}{}
\DeclareFontShape{T1}{tnr}{b}{sl}{<-> ectimesbdo}{}
\DeclareFontShape{T1}{tnr}{b}{it}{<-> ectimesbi}{}
\DeclareFontShape{T1}{tnr}{m}{n}{<-> ectimes}{}
\DeclareFontShape{T1}{tnr}{m}{sl}{<-> ectimeso}{}
\DeclareFontShape{T1}{tnr}{m}{it}{<-> ectimesi}{}
\DeclareFontShape{T1}{tnr}{bx}{n}{<->ssub * tnr/b/n}{}
\DeclareFontShape{T1}{tnr}{bx}{sl}{<->ssub * tnr/b/sl}{}
\DeclareFontShape{T1}{tnr}{bx}{it}{<->ssub * tnr/b/it}{}
\endinput
Nun können die neuen Schriften auf folgende Weise mit LaTeX verwendet werden:
\documentclass{article}
\begin{document}
\usefont{T1}{tnr}{m}{sl}
Hello, I am being typeset in Times New Roman Slanted
\end{document}
Soll die neu erzeugte Schriftart (Times New Roman) als Standard "roman font"
verwendet werden, können folgende zwei \renewcommand Befehle
in der Präambel eingefügt werden:
\documentclass{article}
\renewcommand{\encodingdefault}{T1}
\renewcommand{\rmdefault}{tnr}
\begin{document}
Hello, I am being typeset in \textsl{Times New Roman Slanted}
\end{document}
Erstellt man jetzt PDF-Dokumente mittels pdftex oder pdflatex werden die neuen
Schriften als (hässliche) Bitmaps eingebunden. Die nächsten Abschnitte
beschreiben wie TrueType Schriften in PDF-Dokumente eingebunden werden können.
Zuerst sollte überprüft werden, ob pdfTeX funktioniert. Durch Eingabe des
Befehls
pdftex story
erscheint die folgende Meldung:
C:\texmf>pdftex story
This is pdfTeX, Version 3.14159-12r (MiKTeX 1.11c)
(pdftex.cfg) (story.tex [1<cm.map>])
*
Jetzt das Kommando \bye eingeben und man erhält die Ausgabe
*\bye
<cmtext.enc><cmr10.pfb><cmsl10.pfb><cmbx10.pfb>
Output written on story.pdf (1 page, 31672 bytes).
Transcript written on story.log.
Zwei Zeilen sind hier besonders wichtig. Zum einen die Zeile mit (pdftex.cfg)
und <cm.map>, welche anzeigt,
dass
pdftex die Konfigurationsdatei gefunden und die "Computer Modern
fonts map" geladen hat. Zum anderen die Zeile mit <cmtext.enc><cmr10.pfb> ...,
was heißt, dass die Type 1 PostScript Schriften CMR10, CMSL10 und CMBX10 in das
Dokument eingebunden wurden.
Um die afm-Dateien zu erzeugen, geht man zurück in das temporäre
Arbeitsverzeichnis und führt folgende Kommandos aus:
ttf2afm -e T1-WGL4.enc -o rectimes.afm times.ttf
ttf2afm -e T1-WGL4.enc -o rectimesi.afm timesi.ttf
ttf2afm -e T1-WGL4.enc -o rectimesbd.afm timesbd.ttf
ttf2afm -e T1-WGL4.enc -o rectimesbi.afm timesbi.ttf
Dabei werden vom Programm einige fehlende Zeichen gemeldet, aber die
gewünschten afm-Dateien werden erzeugt.
Jetzt muss die map-Datei, welche die Namen der "raw tex fonts" auf die
aktuellen Namen TrueType Schriften abbildet, erstellt werden. Hierzu verwendet
man am besten das Programm afm2tfm. Wie der Programmname verrät, werden aus den
afm-Dateien die schon vorher einmal erzeugten tfm-Dateien erstellt. Allerdings
erzeugt afm2tfm noch einen Teil, der für die map-Datei notwendig ist. Folgende
Kommandos sind auszuführen:
afm2tfm rectimes.afm -T T1-WGL4.enc rectimes.tfm >>winfonts.map
afm2tfm rectimesi.afm -T T1-WGL4.enc rectimesi.tfm >>winfonts.map
afm2tfm rectimesbd.afm -T T1-WGL4.enc rectimesbd.tfm >>winfonts.map
afm2tfm rectimesbi.afm -T T1-WGL4.enc rectimesbi.tfm >>winfonts.map
afm2tfm rectimes.afm -T T1-WGL4.enc -s .167 rectimeso.tfm >>winfonts.map
afm2tfm rectimesbd.afm -T T1-WGL4.enc -s .167 rectimesbdo.tfm >>winfonts.map
Nun die Datei winfonts.map öffnen und am Ende jeder Zeile noch den zugehörigen
Namen der ttf-Datei einfügen:
rectimes TimesNewRomanPSMT " T1Encoding ReEncodeFont " <times.ttf T1-WGL4.enc
rectimesi TimesNewRomanPS-ItalicMT " T1Encoding ReEncodeFont " <timesi.ttf T1-WGL4.enc
rectimesbd TimesNewRomanPS-BoldMT " T1Encoding ReEncodeFont " <timesbd.ttf T1-WGL4.enc
rectimesbi TimesNewRomanPS-BoldItalicMT " T1Encoding ReEncodeFont " <timesbi.ttf T1-WGL4.enc
rectimeso TimesNewRomanPSMT " .167 SlantFont T1Encoding ReEncodeFont " <times.ttf T1-WGL4.enc
rectimesbdo TimesNewRomanPS-BoldMT " .167 SlantFont T1Encoding ReEncodeFont " <timesbd.ttf T1-WGL4.enc
Die erzeugten afm-Dateien werden in den Ordner c:\localtexmf\fonts\afm\ms\times verschoben und die Datei winfonts.map in das Verzeichnis c:\localtexmf\pdftex\base.
Jetzt
die
Datei c:\texmf\miktex\config\miktex.ini öffnen und die Zeile,
welche mit "TrueType Font Dirs=" (MiKTeX 1.x) bzw. "TTFPath=" (MiKTeX 2.x) beginnt, suchen und das Windows
Schriftverzeichnis hinzufügen:
MiKTeX 1.x: TrueType Font Dirs=.;%R\fonts\truetype//;c:\windows\fonts
MiKTeX 2.x: TTFPath=.;%R\fonts\truetype//;c:\windows\fonts
Nun noch die Datei c:\texmf\pdftex\config\pdftex.cfg
(unter MiKTeX 1.x ist die Datei eventuell im Verzeichnis c:\texmf\pdftex\base\ zu finden!)
öffnen und die folgende Zeile einfügen:
map +winfonts.map
und die Database updaten:
MiKTeX 1.x: Start=>Programme=>MiKTeX=>Maintenance=>Refresh Filename Database
MiKTeX 2.x: Start=>Programme=>MiKTeX=>MiKTeX Options und unter General auf Refresh Now klicken
Für den Test der Installation sollte das aktuelle temporäre Verzeichnis
verlassen und in ein Verzeichnis gewechselt werden in welchem keinerlei Dateien
mit Bezug zu den soeben erzeugten Schriftdateien liegen. Dann folgendes Kommando
ausführen:
pdftex testfont
Es wird abgefragt, welche Schrift getestet werden soll und man gibt nun "ectimes"
ein. Anschließend wird ein Kommando abgefragt, was man mit "\table\eject\init"
beantwortet. Das ganze wiederholt man mit der Schriftart "ectimeso",
dann mit
"ectimesbd" usw. Zum Abschluss gibt man das Kommando "\bye"
ein und folgende Zeilen erscheinen:
pdftex testfont
This is pdfTeX, Version 3.14159-12r (MiKTeX 1.11c)
(pdftex.cfg) (testfont.tex
Name of the font to test = ectimes
Now type a test command (\help for help):)
*\table\eject\init
[1<cm.map><winfonts.map>]
Name of the font to test = ectimesbdo
Now type a test command (\help for help):
*\table\bye
[2]<T1-WGL4.enc><timesbd.ttf><cmttext.enc><cmtt10.pfb><times.ttf><cmitext.enc><
cmti10.pfb><T1-WGL4.enc><cmr10.pfb><cmr7.pfb>
Output written on testfont.pdf (2 pages, 195888 bytes).
Transcript written on testfont.log.
Wie zu sehen, findet pdftex die Dateien winfonts.map
und T1-WGL4.enc sowie die TrueType Schriftarten times.ttf und
timesbd.ttf für das erzeugte PDF-Dokument. testfont.pdf kann nun mit
GSview geöffnet werden, was wie auf dem folgenden Bild aussehen sollte:
Nutzer von Adobe Acrobat 3.01 lesen bitte die "Bug Note" am Ende dieses Dokuments oder installieren die neuere Version 4.05.
Die Verwendung der neuen Schriften mit pdfTeX und pdfLaTeX erfolgt wie mit TeX und LaTeX.
Fertig! ...
PDF-Dokumente sind einfacher mit dem Adobe Acrobat Reader als mit GSview zu handhaben. Allerdings hat Acrobat in der Version 3.01 die Angewohnheit auf dem System installierte TrueType Schriftarten nicht korrekt anzuzeigen. Mit der neueren Version 4.05 besteht dieses Problem nicht mehr! Wenn man das gleiche PDF-Dokument mit dem Acrobat Reader 3.01 öffnet sieht man folgendes:
Acrobat 3.01 zeigt nur die Zeichen, welche beim Reencoding nicht "angefasst" wurden, korrekt an! Wenn man die Schriftart aus dem Windows-System entfernt (WAS FÜR Times New Roman NICHT ZU EMPFEHLEN IST!), zeigt auch Acrobat 3.01 das gleiche PDF-Dokument vollständig an:
+++ Jens Weißenburger +++ http://www.weissenburger.de +++
letzte Änderung: 28. März 2003