LaTeX-Startseite Einleitung MiKTeX WinEdt ttf Links

TrueType Schriftarten für TeX (LaTeX) und pdfTeX (pdfLaTeX) verfügbar machen


Mit freundlicher Genehmigung von Damir Rakityansky ([email protected]).
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.


 1  Bevor es losgeht [(La)TeX]   7  Neue Schrift in LaTeX verwenden
 2  Erzeugen der TeX Font Metrics (tfm)   8  Bevor es losgeht [pdf(La)TeX]
 3  Erzeugen der Virtual Fonts (vf)   9  Erzeugen der Adobe Font Metrics (afm)
 4  Installation der Schriften unter (La)TeX    10  Erstellen der map-Datei
 5  Test der Installation in TeX 11  Installation der Schriften unter pdf(La)TeX
 6  Neue Schrift in TeX verwenden 12  Test der Installation in pdfTeX
13  Acrobat 3.01 "Bug Note"

1 Bevor es losgeht [(La)TeX]

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 ...

zum Seitenanfang

2 Erzeugen der TeX Font Metrics (tfm)

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

zum Seitenanfang

3 Erzeugen der Virtual Fonts (vf)

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

zum Seitenanfang

4 Installation der Schriften unter (La)TeX

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

zum Seitenanfang

5 Test der Installation in TeX

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.

zum Seitenanfang

6 Neue Schrift in TeX verwenden

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...

zum Seitenanfang

7 Neue Schrift in LaTeX verwenden

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.

zum Seitenanfang

8 Bevor es losgeht (pdfTeX)

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.

zum Seitenanfang

9 Erzeugen der Adobe Font Metrics (afm)

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.

zum Seitenanfang

10 Erstellen der map-Datei

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

zum Seitenanfang

11 Installation der Schriften unter pdf(La)TeX

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

zum Seitenanfang

12 Test der Installation in pdfTeX

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! ...

zum Seitenanfang

13 Acrobat 3.01 "Bug Note"

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:

zum Seitenanfang

LaTeX-Startseite Einleitung MiKTeX WinEdt ttf Links

+++   Jens Weißenburger   +++   http://www.weissenburger.de   +++

letzte Änderung: 28. M�rz 2003