Subject: TeX, LaTeX, DANTE e.V.: FAQ - Fragen und Antworten (Part 9 of 11)
From: [email-masked] (DANTE e.V., FAQ-Maintainer)
Date: 3 Feb 1997 11:28:06 GMT
Newsgroups: de.comp.text.tex,de.answers,news.answers

Posted-By: auto-faq 3.3 beta (Perl 5.003)
Archive-name: de-tex-faq/part9
Posting-Frequency: monthly
Copyright-Notice: siehe Abschnitt 1.1/see Section 1.1
URL: http://www.dante.de/dante/dante-faq.html

		Fragen und Antworten (FAQ) über

		   das Textsatzsystem TeX und
		       ~~~~~~~~~~~~~~~~~~
	DANTE, Deutschsprachige Anwendervereinigung TeX e.V.
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

		 (Version 24 vom Februar 1997)

		=== Teil 9: Metafont und Schriften ==

9.1) METAFONT und METAFONT-Tools
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

9.1.1) Was ist ein Meta-Font?

Um die einzelnen Zeichen einer Schrift, eines Font, auf Papier zu
bringen, muß man wissen, an welchen Stellen das Papier mit
Druckerfarbe geschwärzt werden soll und an welchen nicht.  Diese
Information kann auf verschiedene Arten repräsentiert werden:
   Die einfachste Form ist die `Bitmap' bzw. `Pixelmap', d.h. jedes
Zeichen wird gerastert und für jeden einzelnen Punkt im Raster (=
Pixel) wird abgespeichert, ob diese Stelle geschwärzt werden soll.
Eine Bitmap-Repräsentation hat jedoch den Nachteil, daß man diese
nicht ohne weiteres vergrößern, verkleinern oder die Rasterung an eine
andere Auflösung eines Ausgabegeräts anpassen kann, da man in den
meisten Fällen unerwünschte Seiteneffekte bekommt (Stufen,
Moiré-Effekte, dünnere Linien verschwinden bei Verkleinerung, als
regelmäßig oder unregelmäßige Muster sichtbare Rasterung, u.ä.).
   Man verwendet zur Beschreibung der Ausmaße und der Form eines
Zeichens daher besser eine rasterungs-, also auflösungsunabhängige
Repräsentation.  Dazu gibt es nun mehrere Verfahren:
   In METAFONT legt man Linienzüge durch Punkte und durch diese Punkte
festgelegte Spline-Kurven fest und zieht diese mit einem vorher
definierten ``Pinsel'' nach.  Durch die Form und die Lage des
verwendeten Pinsels können mit denselben Kurven sehr unterschiedliche
Zeichenformen erzeugt werden.  Nachdem das Zeichen aus einzelnen
Kurvenzügen definiert und mit unterschiedlichen Pinseln gezeichnet
wurde, rastert METAFONT die dadurch eingefärbten Flächenteile und
erzeugt daraus einen Font in Form einer Bitmap.  Da METAFONT zur
Programmierung einer solchen Font-Beschreibung eine Programmiersprache
definiert, kann ein Font-Designer einer Font-Beschreibung beliebig
viele Parameter mitgeben, die die Form und Ausmaße der einzelnen
Zeichen der erzeugten Schrift in unterschiedlichen Richtungen
verändern.  Wegen dieser Möglichkeit, aus einer einzigen Beschreibung
durch Wahl verschiedener Parameter viele verschiedene Schriften
erzeugen zu können, nennt man diese Font-Beschreibungen auch
`Meta-Font'.  Man kann also durch Wahl der in einem Meta-Font
definierten Parameter unterschiedliche Fonts in verschiedenen Größen
erzeugen.  Durch Angabe der gewünschten Auflösung und weiterer
Parameter des Ausgabegeräts kann wiederum für einen solchen Font eine
optimal an das jeweilige Ausgabegerät angepaßte Bitmap-Wiedergabe
dieses Fonts erzeugt werden.
  Neben dieser von METAFONT verwendeten Beschreibung eines Fonts in
Form von mit Pinseln gezeichneten Spline-Kurven kann man die Form
eines Zeichens auch durch die Angabe des Umrisses der zu schwärzenden
Fläche beschreiben.  Auch hier werden wiederum Spline-Kurven zur
Beschreibung der Umrisse eines Zeichens verwendet.  Diese Beschreibung
in Form eines sogenannten `Outline' wird beispielsweise in
PostScript-Schriften verwendet.

9.1.2) Was sind tfm-, pl-, gf-, pk-, pxl-Dateien?

Neben dem Aussehen der einzelnen Zeichen in einem Font werden noch
weitere Informationen über jedes einzelne Zeichen und über
schrift-globale Parameter benötigt: Von jedem Zeichen muß TeX die
Ausmaße in Form von Breite, Höhe und Tiefe in Bezug zur Grundlinie
wissen.  Zu bildende Ligaturen (z.B. f+f => ff), das Kerning zwischen
zwei Zeichen (z.B. Unterschneidung bei `Ta') und beispielsweise der zu
verwendende Wortabstand sind weitere Informationen, die über einen
Font abgelegt sein müssen, da sie von TeX benötigt werden.
  Diese Informationen liest TeX aus der `TeX Font Metric' oder kurz
tfm-Datei.  Die Tools `pltotf' und `tftopl' wandeln die Informationen
in einer tfm-Datei in eine lesbare Form, die `Property List' oder kurz
pl-Datei um.
  In den gf- (Generic Font), pxl- (Pixel) und pk- (Packed Pixel)
Dateien sind die Bitmap-Repräsentationen jedes Zeichens einer Schrift
abgelegt.  Da pk- und pxl-Dateien genau dieselben Informationen
enthalten, die pxl-Dateien jedoch mehr Platz benötigen, werden diese
heutzutage nicht mehr verwendet und unterstützt.  Mit den Tools
`gftopk' und `pktogf' können die Bitmap-Repräsentationen ineinander
umgewandelt werden.  Da gf-Dateien in der Lage sind, in einer Bitmap
neben den einzelnen Pixeln noch weitere Informationen zu enthalten
(z.B. `special'-Anweisungen), können bei dieser Umwandlung
Informationen verloren gehen.  Da jedoch nur sehr wenige Tools und
Gerätetreiber diese zusätzlichen Informationen verwenden und die
pk-Darstellung viel kompakter ist, sind gf-Dateien normalerweise nur
für METAFONT wichtig.

METAFONT erzeugt aus einer mf-Source eine tfm-Datei mit der
auflösungs_un_abhängigen `TeX Font Metric' und eine auflösungs-
abhängige gf-Datei.  Aus der gf-Datei wird üblicherweise mit `gftopk'
eine pk-Datei erzeugt.
  TeX verwendet nur die Informationen in der tfm-Datei, die Bitmap in
der gf- bzw. der pk-Datei wird von TeX _nicht_ gelesen.  Ein
Gerätetreiber, der eine dvi-Datei druckt oder darstellt, verwendet die
pk-Dateien und in einigen Fällen auch die tfm-Datei.

9.1.3) Was sind virtuelle Fonts, was vpl-, vf-Dateien?

Ein virtueller Font ist, wie der Name schon sagt, eine Schrift, die
keine real (in Form einer Bitmap) existierenden Zeichen enthält.
Stattdessen wird in einem virtuellen Font auf andere Schriften und die
dort enthaltene Zeichen verwiesen.  Durch diesen `Trick' kann man
beispielsweise die Kodierung der Zeichen in einer Schrift umdefinieren
oder eine Schrift aus Zeichen mehrerer Schriften zusammensetzen, um so
z.B. einzelne Zeichen durch andere zu ersetzen.  Darüberhinaus kann
man in virtuellen Fonts auch einzelne Zeichen aus mehreren Zeichen
zusammensetzen, indem man beispielsweise fertig akzentuierte Zeichen
aus dem entsprechenden Akzent- und Basiszeichen bildet.  Eine weitere
Anwendung für virtuelle Fonts ist die Verwendung einer Ersatzschrift
für eine nicht verfügbare Schrift, die dieser möglichst nahekommt und
dieselben TeX-Font-Metric-Informationen besitzt.
   Eine vf-Datei enthält die Definition eines solchen virtuellen Fonts
in binärer, sehr kompakter Form.  Dieser vf-Datei muß eine tfm-Datei
zugeordnet sein, in der TeX die `TeX Font Metric' für diese Schrift
finden kann.  Eine vpl-Datei ist eine für den Menschen lesbare
Darstellung der vf- und tfm-Datei in Form von `Property Lists'.  Mit
dem Tool `vptovf' kann aus einer vpl-Datei eine vf- und die zugehörige
tfm-Datei erzeugt werden, mit `vftovp' bekommt man aus diesen beiden
Dateien wieder die vpl-Datei.
   TeX `weiß' nichts von virtuellen Fonts.  TeX liest keine
vf-Dateien, sondern benötigt nur die zugehörige tfm-Datei, aus der
nicht ersichtlich ist, ob dies ein `realer' oder ein virtueller Font
ist.  vf-Dateien werden nur von den Gerätetreibern verwendet.  Für
Treiber, die (noch) keine virtuellen Fonts unterstützen, kann das Tool
`dvicopy' verwendet werden, um eine dvi-Datei in eine dvi-Datei
umzuwandeln, in der alle virtuellen Fonts `aufgelöst' worden sind,
also nur noch `reale' Fonts verwendet werden.  Achtung: Die meisten
verfügbaren virtuellen Fonts sind unabhängig vom Ausgabegerät, sie
können jedoch auch abhängig vom Ausgabegerät sein!

*9.1.4) Was ist MetaPost?
 
MetaPost ist ein aus METAFONT abgeleitetes Programm zum Erstellen von
PostScript-Zeichnungen, das von John Hobby, einem ehemaligen
Mitarbeiter von Donald E. Knuth, entwickelt wurde.  Die MetaPost-
Sprache ist sehr eng verwandt mit METAFONT, unterstützt aber einige
zusätzliche Features, wie beispielsweise das Beschriften von
Abbildungen in TeX über einen Präprozessor (dies setzt den dvi-Treiber
`dvips' voraus).
  Um eine Zeichnung zu erstellen, muss man ein MetaPost-Programm
schreiben und compilieren.  Diese Arbeitsweise ähnelt METAFONT, ist
somit eben ganz anders als die sonst gewohnten Grafik-/Malprogramme.
MetaPost ist dafür aber gut für berechnete Zeichnungen geeignet oder
zum Plotten von Funktionen oder Datenwerten.  Knuth benutzt es selbst
für Zeichnungen in seinen Büchern.
  MetaPost-Implementierungen existieren derzeit noch nicht für alle
Plattformen, da das Programm erst seit Anfang 1995 frei erhältlich ist
(vorher nur nach Abschluß eines `non-disclosure agreements'):

 - Unix:  CTAN: graphics/metapost/ (Original: John Hobby)
          beruht auf web2c 5.8xx, setzt den web2c Konverter voraus,
          ansonsten eigenständig, nicht integriert
 - teTeX (Unix): CTAN: systems/unix/teTeX/
	  teTeX-0.4 enthält MetaPost
 - Web2C: CTAN: graphics/metapost/contrib/systems/web2c/ (Ulrik Vieth)
          demnächst in web2c-7.0 enthalten
 - Amiga: CTAN: systems/amiga/amiweb2c/ (Andreas Scherer)
 - DOS:   CTAN: systems/msdos/metapost/ (Piet van Oostrum)
          passt zu emTeX
          CTAN: systems/msdos/dostp21/  (Peter Breitenlohner)
          integriert in PubliC (e-)TeX/MF/MP, TDS-kompatibel
 - OS2:   CTAN: graphics/metapost/MetaPost4OS2/ (???)

9.1.5) Beim Übersetzen einer mf-Datei erhalte ich immer eine gf-Datei
       mit Endung `.2602gf' (bzw. `.260' bei Filesystemen, die nur
       drei Zeichen als Datei-Extension zulassen).  Wieso?

Zur Erzeugung einer Schrift für ein bestimmtes Ausgabegerät benötigt
METAFONT eine Beschreibung in Form einer `Mode Definition' (kurz:
`mode_def'), in der u.a. die Auflösung des Ausgabegeräts festgelegt
wird.  METAFONT wird meist mit

    mf \mode:=<Mode-Name>; mag:=<Magnification>; input <Font-Filename>

aufgerufen (unter Unix Quote-Zeichen ' um die Argumente im MF-Aufruf
nicht vergessen!), wobei mit <Mode-Name> der Namen einer solchen
`mode_def' anzugeben ist.  Wird kein `mode' angegeben oder ist
<Mode-Name> unbekannt, verwendet METAFONT den Proof-Mode, der einen
Korrekturabzug der Schrift erstellt.  Damit die Zeichen in diesem
Korrekturabzug groß genug sind, verwendet METAFONT dazu die Auflösung
2602 dpi (= `dots per inch').  Falls dies nicht erwünscht war, sollte
man überprüfen, ob der `mode' korrekt gesetzt wurde, ob <Mode-Name>
beispielsweise korrekt angegeben wurde (Schreibfehler!) und ob
<Mode-Name> bei der Erstellung der base-Datei (`Dumpen' der Datei
``plain.mf'') mit `mode_def' definiert wurde.

9.1.6) Wozu benötige ich für jeden Druckertyp eine andere Anpassung in
       Form einer `mode_def'?  Wo finde ich für den Drucker XYZ eine
       solche Anpassung?

Jedes Ausgabegerät hat unterschiedliche Charakteristiken.  Zum einen
unterscheiden sie sich in der Auflösung, zum anderen beispielsweise
auch in der Größe eines gezeichneten Pixels.  So wird bei einem
Tintenstrahldrucker im Vergleich zu einem Laserdrucker in den meisten
Fällen ein einzelner Punkt etwas größer ausfallen.  Sehr große
Unterschiede treten prinzipbedingt beim Vergleich von sogenannten
`schwarz'- und `weiß'-schreibenden Laserdruckern auf.  Auch wird beim
Schnitt zweier Kurven (z.B. in der Mitte des Zeichens `X') die
geschwärzte Fläche etwas größer ausfallen, da die Druckerfarbe
abhängig vom Druckprinzip und vom Druckwerk mehr oder weniger
ineinander verlaufen kann.  Damit METAFONT all diese und weitere
Eigenschaften eines Ausgabegeräts bei der Erzeugung der Bitmap-
Rasterung eines Zeichens in Betracht ziehen kann, werden die einzelnen
Parameterwerte für ein Ausgabegerät in einer `Mode Definition' mit der
Anweisung `mode_def' abgelegt.
  Da die Erstellung einer neuen `Mode Definition' für ein Ausgabegerät
einiges an Arbeit (Testdruck, überprüfen, anpassen, Testdruck, usw.)
bedeutet, wurden von Karl Berry alle bisher für verschiedene
Ausgabegeräte gefundenen `Mode Definitions' in der Datei ``modes.mf''
gesammelt.  Da ``modes.mf'' neben den `Mode Definitions' noch dafür
sorgt, daß man verschiedene Informationen (z.B. `coding scheme') über
einen Font setzen kann und diese korrekt abgelegt werden, ist diese
Datei jedem empfohlen.

modes.mf:  CTAN:  fonts/modes/modes.mf
	   (Hinweis: Seit 8. Januar 1996 existiert Version 3.0 mit
	   neuer `mode_def' für Hires-Fax, HP Laserjet 5 u.a.;
	   seit 12. Oktober 1996 existiert Version 3.1 mit Epson SQ,
	   Epson Stylus Pro u.a.; seit November 1996 Version 3.2)

9.1.7) Kann ich aus einer vorhandenen tfm-Datei die mf-Source
       erzeugen?  Gibt es dafür ein Tool?

Nein.  tfm-Dateien enthalten keine Bitmap- oder ähnliche Information
über das Aussehen der Zeichen in einer Schrift.  Daher kann aus einem
tfm-File weder eine pk-Datei noch die mf-Source restauriert werden.
   Es ist jedoch möglich, aus einer pk- und der tfm-Datei einer
Schrift eine mf-Source zu erstellen.  Dabei ist das entstehende
Resultat jedoch kein _Meta_-Font mehr, sondern `nur' noch ein
mf-Programm für genau diese Schrift.  Das Ergebnis ist je nach Aufwand
mehr oder weniger gut und verlangt in den meisten Fällen noch einiges
an Handarbeit, sodaß sich der Aufwand nur in seltenen Fällen lohnt.

9.1.8) Wie kann ich nur die tfm-Dateien einer Schrift erzeugen?

In der Datei ``modes.mf'' ist dafür die Mode-Definition `nullmode'
gedacht, in der neben der tfm- zwar auch eine gf-Datei erzeugt wird,
jedoch in einer Auflösung von 101dpi, so daß dies schneller als mit
300dpi oder 600dpi geschieht.

9.2) Schriften -- allgemein
~~~~~~~~~~~~~~~~~~~~~~~~~~~

9.2.1) Gibt es eine Schrift XYZ?  Wo finde ich diese?

Als erste Informationsquelle sollte man die Liste `metafont-list' der
verfügbaren METAFONT-Schriften nach der gesuchten Schrift durchsehen.
Diese Liste enthält eine kurze Beschreibung und Klassifikation der
meisten Schriften, die man auf CTAN im Verzeichnis ``fonts/'' finden
kann.
  Beschränkt man sich nicht nur auf in METAFONT-Quellen vorhandene
Schriften, kann man auch Schriften in PostScript-Type-1- oder
Type-3-Form, PCL-Schriften u.a. auf verschiedenen ftp-Servern finden.
Existieren für diese Schriften Font-Metriken, die man in eine
tfm-Datei umwandeln kann, sind sie sehr einfach unter (La)TeX
verwendbar (evtl. nach Umkodierung mittels virtueller Fonts).
Verschiedene Tools dafür findet man auf CTAN im Verzeichnis
``fonts/utilities/'', fertige Anpassungen findet man für
weitverbreitete Schriften ebenso unter ``fonts/''.

metafont-list:  CTAN:  info/metafont-list

9.2.2) Gibt es eine Schönschrift/Handschrift?

Mit `calligra' gibt es eine kalligraphische Schrift, eine schön
ausgeführte Schmuckschrift, die leider noch kleinerer Verbesserungen
(falsche Abstände vor Großbuchstaben und ß, fehlender Bindestrich)
bedürfte.  `calligra' verwendet die Kodierung `T1'.  Um korrekte
Akzente und Umlaute zu erhalten, muß man in LaTeX2e deshalb auf
\fontencoding{T1} wechseln!

Eine weitere Schrift ist die `twcal', die ursprünglich auf der
vereinfachten Ausgangsschrift `va' basiert, jedoch durch viele
Änderungen und Ligaturen weichere, durchgezogene Übergänge erhalten
hat.

calligra:   CTAN:  fonts/calligra/
twcal:      CTAN:  fonts/twcal/

9.2.3) Ich suche eine Sütterlin, Fraktur, Schwabacher, Gotische
       Schrift.

Yannis Haralambous hat einen Satz dieser altdeutschen Schriften auf
der Tagung EuroTeX'91 in Cork/Irland vorgestellt.  Neben den reinen
Brotschriften hat er auch noch mit der Schrift `yinit' große Initialen
als Schmuckschrift hinzugefügt.  Die Einbindung dieser Schriften ist
für LaTeX2e im Paket `oldgerm', das Bestandteil von `mfnfss' ist,
enthalten.
  Zu der Sütterlin-Schrift `suet14' und ihrer schräggestellten
Variante `schwell' wurde in der Newsgroup `de.comp.tex' (dem damaligen
Vorgänger von `de.comp.text.tex') angemerkt: ``Die Fonts sehen
wirklich klasse aus.  Allerdings hat das kleine `a' keinen Kringel
(Schleifchen) rechts oben, was es nach Brockhaus und alten
Schulunterlagen haben sollte.  Auch das `k' scheint etwas
abzuweichen.''

Y.H.:    CTAN:  fonts/gothic/{yfrak,yswab,ygoth,yinit}/
mfnfss:  CTAN:  macros/latex/packages/mfnfss/     (LaTeX2e)
cmfrak:  CTAN:  fonts/gothic/cmfrak/
sueterlin/schwell:  CTAN:  fonts/gothic/sueterlin/

9.2.4) Gibt es die lateinische bzw. die vereinfachte Ausgangsschrift,
       mit der man das Schreiben in der ersten Klasse begonnen hat?

la:  CTAN:  fonts/la/
va:  CTAN:  fonts/va/

--- DE-TeX-FAQ Ende Teil 9 ---