Erste Schritte mit XeTeX – Für Typographie-Fanatiker und Experimentierfreudige


Die Idee, das lang geschriebene S (ſ) im Antiqua-Satz unter LaTeX auszuprobieren brachte mich an den Punkt festzustellen, daß das nicht geht. Zumindest nicht mit pdfLaTeX, das einen großen Teil der OpenType-Möglichkeiten üppig designter Schriftarten wie die Linux Libertine gar nicht ausreizt, vor allem was zusätzliche Ligaturen und Buchstabenvariationen wie die des langen ſ betrifft.

Das hatte mich ohnehin schon des längeren gestört: LaTeX setzt Standard-Ligaturen wie fi und fl, sofern diese in der Schriftart enthalten sind. Aber weiterführende Ligaturen wie Qu, ffi, tz oder ck spricht pdfLaTeX gar nicht an, auch wenn sie – wie im Fall der Schriftart Linux Libertine – enthalten sind.

Nach etwas Recherche war die Lösung gefunden: XeTeX, eine Art Erweiterungspaket für LaTeX, das von J. Kew entwickelt wurde und wird. Offiziell ist XeTeX noch in der Testphase, kann aber schon produktiv eingesetzt werden. Und hinsichtlich seiner Vorteile sollten man wirklich mal einen Versuch riskieren.

Was kann denn nun XeTeX, das pdfLaTeX nicht kann?

XeLaTeX kann alternativ statt pdfLaTeX verwendet werden. Es bietet im Gegensatz zu diesem eine native Unicode-Unterstützung und reizt OpenType-Schriftarten mit ihrem vollständigen Glyphensatz und allen typographischen Möglichkeiten aus. Das sind meiner Meinung nach die zwei wichtigsten Vorteile.

Native Unicode-Unterstützung? Mache ich das nicht auch mit pdfLaTeX, indem ich als Eingabecodierung »utf8« eingebe?

Im Prinzip stimmt das. Allerdings muß man daran denken, daß pdfLaTeX aus einer Zeit kommt, als noch weithin ASCII verwendet wurde. Erst nachträglich wurde die Unicode-Unterstützung implementiert, sodaß man nun auch die gängigen Umlaute der europäischen Sprachen direkt eingeben kann: statt "A kann man nun direkt Ä verwenden usw. Das funktioniert auch mit anderen Unicode-Zeichen der vordefinierten Tabellen sehr gut. Ist beispielsweise der Unicode-Platz für die °C-Glyphe in der Schriftart belegt (bei der Schriftart Linux Libertine ist er das), kann die Glyphe aus der Zeichentabelle herauskopiert und sowohl im pdfLaTeX- als auch im XeTeX-Quellcode eingefügt werden. Beim Übersetzen erscheint entsprechend die Glyphe. So weit, so gut.

 

Nun gibt es aber auch den sog. Private-Area-Bereich in Unicode, einen Block von mehreren tausend Zeichen, der für kreative Schriftdesigner reserviert ist, d.h. der Schriftendesigner kann diese Plätze nutzen, um ihn mit ganz individuell gezeichneten Glyphen zu füllen. Dazu zählen geometrische Symbole, spezielle Smileys oder Ligaturen aus römischen Zahlzeichen. Kopiert man eine dieser Glyphen in den pdfLaTeX-Quellcode, gibt es beim Kompilieren eine Fehlermeldung. XeTeX übersetzt dagegen, egal was man aus der Zeichentabelle im Quellcode einbringt, eben weil XeTeX (und LuaTeX), als Weiterentwicklung von pdfLaTeX, von vornherein mit einer vollständigen Unicode-Unterstützung programmiert worden sind.

 

Mit XeTeX und LuaTeX kann also eine Schriftart mit vielen Unicode-Belegungen erst richtig ausgereizt werden.

Da war doch noch was mit »weiteren Ligaturen« aus OpenType-Schriftarten. Wie war das gleich?

Ein Vorteil der modernen OpenType-Schriftarten ist, daß zu ein- und demselben Buchstaben gleich mehrere Varianten gespeichert werden können, wie es z.B. bei der Zapfino-Schriftart der Fall ist (sog. kontextsensitive Alternativen). Diese werden manuell oder automatisch an Stellen gesetzt, wo besondere Buchstaben-Kombinationen auftreten, die ggf. einander stören. Zum Beispiel könnte bei zwei nebeneinanderstehenden Buchstaben mit langer Unterlänge (Minuskel-f und Minuskel-y) eine Glyphe gesetzt werden, die einer f-y-Kombination ohne sich überschneidende Anhänge entspricht. Oder man denke an einen Buchstaben mit langer Oberlänge und einem folgenden Trema wie in »ä«. Wenn die Oberlänge in einen Trema-Punkt hineinreicht, sieht das unschön aus; besser gelöst wird das mit einem speziellen Ersatz, wie ihn manche OpenType-Schriftarten mitbringen. Nach einer kurzen Anweisung im XeTeX-Dokument wird beim Kompilieren automatisch die Ersetzung vorgenommen, ohne daß man auf etwas zu achten hat.

Neben den bekannten Standard-Ligaturen f-i und f-l kann eine OpenType-Schriftart auch viele weitere Ligaturen gespeichert haben, z.B. t-z, f-b oder Schmuckligaturen.

In manchen Fällen gestattet die OpenType-Schriftart die Kontrolle über Texte, die in unterschiedlicher Sprache gesetzt wurden. Denn fast jeder Text (Englisch, Deutsch, Russisch) bringt seine eigenen Besonderheiten hinsichtlich typographischer Feinheiten, Ligaturen und Wortumbruch (Silbentrennung!) mit. Beispielsweise ist die f-b-Ligatur in englischen Texten recht häufig, während diese Buchstaben-Kombination in deutschen Texten fast immer an Wortfugen steht und daher nicht als Ligatur gesetzt werden sollte. Mit einer kurzen Anweisung im XeTeX-Dokument kann man die Sprache für einen bestimmten Abschnitt oder das ganze Dokument deklarieren, wodurch z.B. f-b-Ligaturen in deutschen Texten generell abgeschaltet werden.

Hm, sonst noch irgendwelche Vorteile und tollen Features?

Durchaus! OpenType-Schriftarten enthalten meistens mehrere Ziffern-Sets aus proportionalen oder gleichbreiten Mediäval- oder Versalziffern. Während in herkömmlichen Textverarbeitungen meist nur eines dieser Sets zugänglich ist (Voreinstellung), kann man in XeTeX beliebig umschalten. Auf diese Weise kann man proportionale Mediävalziffern für den Mengentext nutzen und in Tabellen gleichbreite Versalziffern, die perfekt untereinanderstehen und für Ordnung sorgen.

Ah ja. Und was noch?

Mit XeTeX sind nicht nur die in der TeX-Distribution mitgelieferten Schriftarten nutzbar, sondern alle auf dem System installierten Schriften (ttf oder otf)! Dafür wird einfach in der Präambel des XeTeX-Dokuments auf den Namen der Schriftart verwiesen und schon kann man in seiner Wunsch-Schriftart los-TeXen.

 

PS: Es ist eindeutig der im System hinterlegte Schriftartenname zu verwenden. Das ist manchmal knifflig. Wer mit Arial setzen will, kann »Arial« angeben; wer mit »Vollkorn« setzen will, kann »Vollkorn« angeben. Daneben gibt es aber auch Namen, die sich nicht sofort erschließen: »TheSans,TheSans 4\-SemiLight«, »Overpass,Overpass Light«, oder »Electrum ADF Exp«. Wer mit Linux arbeitet, kann sich eine Liste mit nutzbaren Schriftartennamen über die Konsole ausgeben lassen:

fc-list | cut -d\  -f2-99 | cut -d: -f1 | sort -u

Achtung: zwei Leerzeichen vor "-fs-99"!

Noch was Cooles?

Wird der gleiche Inhalt eines Quellcodes einmal mit pdfLaTeX und einmal mit XeTeX gesetzt, zeigt sich, daß die mit XeTeX-kompilierte PDF erheblich kleiner bezüglich Dateigröße ist. An mehreren Beispielen konnte ich feststellen, daß die Dateigröße zum Teil auf rund 10 % abgefallen ist (z.B. von 235 kb auf 15 kb). An dieser Stelle kann ich nur mutmaßen, daß das etwas damit zu tun hat, ob in das PDF nur ein Teil der Schriftart oder die gesamte Schriftart eingebettet wurde. (Wenn das irgendwer weiß, lasse ich mich gerne berichtigen!)

Wenn ich nun XeTeX ausprobieren will, was muß ich denn dazu installieren?

Prinzipiell sollte jede große TeX-Distribution (MikTeX, TeXLive) ein Paket namens xetex mitbringen. Wer unter GNU-Linux arbeitet und auf die Ubuntu-Paketquellen zugreift, kann z.B. das Paket texlive-xetex finden und installieren. Die Arbeit verläuft dann genauso wie bei pdfLaTeX: Quelldokument + Kompilieren ergibt PDF. Auch der Aufbau der Quellcode-Datei ist weitgehend identisch. In der Präambel gibt es eine kleine Änderung, die Zeilen für fontenc und inputenc sind überflüssig, dafür werden andere Pakete geladen (siehe Beispieldokument). Kompiliert wird das ganze entweder auf der Konsole per

xelatex Dokument.tex

oder man richtet sich direkt im Editor einen Starter fürs XeLaTeX-Kompilieren ein (manche Editoren haben so einen Button bereits – z.B. die aktuelle Version vom TeXMaker).

Gibt es auch irgendwelche Nachteile bei der Verwendung von XeTeX?

Nun, einige Pakete arbeiten noch nicht richtig mit XeTeX zusammen,

  • z.B. bin ich beim Experimentieren auf Probleme im Zusammenhang mit dem url-Paket gestoßen.
  • Wenn das Paket hyperref nicht geladen wird, habe ich Probleme mit dem dargestellten Seitenformat festgestellt.
  • Derzeitig arbeitet das so nützliche und sinnvolle microtype-Paket nur bedingt mit XeTeX zusammen; die offizielle Dokumentation gibt an, daß (momentan!) lediglich der optische Randausgleich funktioniert. Aber es wird dran gearbeitet. Ohne Gegenmaßnahmen wird man vermutlich einige Overfull-Boxes erzeugen. Um dem abzuhelfen, kann man den Befehl \sloppy am Dokumentanfang setzen.
  • Oftmals ist auch die Reihenfolge der Pakete entscheidend, z.B. bei Verwendung der Pakete amsmath und mathspec.

Ich habe selbst XeTeX noch nicht umfassend mit allen Paketen getestet und würde mich freuen, wenn wir über die Kommentare eine kleine Liste zusammenstellen könnten, was funktioniert und was nicht. Bisher liefen alle meine sonst verwendeten Pakete problemlos durch, url gebrauche ich ohnehin nur selten. Eine Fehlermeldung betraf ein eingebundenes PDF, das unter pdfLaTeX problemlos funktionierte, für XeTeX aber aus dem ursprünglichen SVG neu erzeugt werden mußte. Angeblich enthält die neue TeXLive-Version 2015 eine Überarbeitung des XeTeX-Pakets, bei dem Korrekturen an der Bild-Verarbeitung gelöst wurden.

Außerdem habe ich beobachtet, daß man sich häufiger verleitet fühlt, Unicode-Glyphen direkt in den Quelltext einzugeben, anstatt ein entsprechendes, aus ASCII-konformen Zeichen bestehendes Kommando einzutippen. Zum Beispiel die Glyphe für das Promille-Zeichen anstatt \textperthousand. Dadurch verliert man natürlich wieder etwas von der Unabhängigkeit, die LaTeX ja so auszeichnet. Auch kann der Text nicht mal so eben wieder mit pdfLaTeX kompiliert werden, wenn er voller Unicode-Glyphen steckt!

 

Noch ein nicht unwesentlicher Aspekt: Das Kompilieren des Quellcodes mit XeLaTeX dauert etwas länger als bei pdfLaTeX. Mit LuaLaTeX ist es sogar noch langsamer. Zuweilen dauert es einige Sekunden, bevor das Kompilieren überhaupt startet.

Beispiel-Dokument für XeTeX zum Download

Download
Beispieldokument für XeTeX
Dieses ZIP-Archiv enthält den Quellcode und ein mit XeTeX fertig kompiliertes PDF des Quellcodes. CC BY-NC-SA
XeTeX-Testumgebung.zip
Komprimiertes Archiv im ZIP Format 51.0 KB