Frakturschriften in LaTeX verwenden

  • Hallo liebe Freunde der Typographie,


    nachdem ich gesehen habe, daß sich hier auch einige mit dem Thema Frakturschrift unter LaTeX beschäftigen, habe ich dazu mal eine Frage (meine erste in diesem Forum ... :) :(
    Weiß jemand, ob sich die Frakturschriften von G. Helzel auch unter LaTeX verwenden lassen bzw. ob es dafür ein Style-Paket gibt? Denn diese Fonts sind ja sehr "eigenartig" kodiert (d.h., die Zuordnung z.B. der Ligaturen in der Zeichensatztabelle ist sehr speziell und mit anderen mir bekannten Schriften kommerzieller oder kostenloser Anbieter nicht vergleichbar).


    Von Mühlich und Gährken gibt es ja angepaßte *.sty-Pakete für einige Schriften von Delbanco, TypOasis und Typographer (Steffmann). Aber deren Schriften haben ja eine komplett andere Zeichenkodierung.
    Ich habe zwar (unter Linux) das Programm "fontforge", mit dem sich Zeichensätze editieren lassen, aber wenn ich dort einfach einzelne Zeichen austausche, stimmen natürlich die Abstände und Unterschneidungen nicht mehr ... Zumindest war das bei den kostenlosen Schriften, die ich vor einiger Zeit mal testweise von Herrn Hetzels Webseite heruntergeladen habe, so.


    Weiß also jemand, wie man (unter LaTeX) die Zeichen-Zuordnung korrekt erstellt? Denn das wäre ja die sauberste Lösung.


    Viele Grüße aus Münster
    Christoph

  • Lieber Christoph,


    mit LaTex kenn ich mich leider überhaupt nicht aus …


    Die Helzel-OpenType-Schriften in Verbindung mit dem Tex/LaTex-Compiler XeTex, könnte ein erfolgsversprechendes Ergebnis bringen. Da diese den OpenType-Normen entsprechen.


    Die Helzel-Belegung stammt noch aus der ASCII Zeit, sie ermöglicht ein Zehnfingerschreiben auf einer Tastatur mit deutscher Tastaturbelegung. Dies ist „eine“ Möglichkeit die Ligaturen richtig zu setzen!

  • Die Helzel-OpenType-Schriften in Verbindung mit dem Tex/LaTex-Compiler XeTex, könnte ein erfolgsversprechendes Ergebnis bringen. Da diese den OpenType-Normen entsprechen.


    Hallo Howard,


    danke für Deine schnelle Antwort! Von XeTeX hatte ich noch nie gehört; ich habe es mir aber gerade mal angesehen, und es sieht tatsächlich SEHR vielversprechend aus. :)
    Wenn ich es richtig verstanden habe, kann ich also "ganz normal" weiter wie in LaTeX schreiben und muß nur in der Präambel einige Pakete einbinden, damit ich OpenType-Schriften verwenden kann?


    Zitat

    Die Helzel-Belegung stammt noch aus der ASCII Zeit, sie ermöglicht ein Zehnfingerschreiben auf einer Tastatur mit deutscher Tastaturbelegung. Dies ist „eine“ Möglichkeit die Ligaturen richtig zu setzen!


    Das ist ja nett gemeint. -- Aber in TeX & Co. leider unnütz, da ja hier die verfügbaren Ligaturen sowieso automatisch gesetzt werden (wenn man sie nicht bewußt unterdrückt, wie in "Auf\/lage"). OpenType ist dazu natürlich nochmal ein weiterer Fortschritt.


    Werde XeTeX mal ausprobieren ...


    Viele Grüße
    Christoph

  • Wenn ich es richtig verstanden habe, kann ich also "ganz normal" weiter wie in LaTeX schreiben und muß nur in der Präambel einige Pakete einbinden, damit ich OpenType-Schriften verwenden kann?

    Es könnte sein, wie bereits gesagt, LaTex ist für mich zu knifflig, @J.K. ist hier einer der LaTex Spezialisten.



    Werde XeTeX mal ausprobieren ...

    Gib Bescheid ob bzw. inwieweit es funktioniert.

  • Gib Bescheid ob bzw. inwieweit es funktioniert.


    Hallo Howard,


    es klappt! :-))
    Naja, zumindest grundsätzlich, und bislang nur in einem Minimalbeispiel. "Grundsätzlich" heißt: Das "lange s" wird leider nicht dargestellt (sondern stattdessen das "runde"), was natürlich daran liegt, daß ich das "lange s" über die Tasten im Editor nicht erreichen kann.
    Die gängigen Frakturpakete unter LaTeX lösen dieses Problem ja meines Wissens so, daß normalerweise immer das "lange s" gesetzt wird, außer es folgt direkt darauf ein Leer- oder ein Interpunktionszeichen. Dann greift eine Ligatur-Regel, die dafür sorgt, daß stattdessen das "runde s" zusammen mit dem entsprechenden eingegebenen Folgezeichen gesetzt wird.
    Nun muß ich nur noch herausfinden, wie man das macht ... ;)


    Viele Grüße
    Christoph

  • Möglicherweise muß man die Langes s Funktion erst einschalten ...

    Code
    \newcommand{\longs}{\useTextGlyph{fxl}{longs}}
  • Hallo Howard,


    wenn ich Deine Zeile eingebe, ändert sich nichts in der Ausgabe.
    Wenn ich den neuen Befehl nun mit "\longs" aufrufe, kommt beim XeLaTeX-Durchlauf die Fehlermeldung:


    ! Undefined control sequence.
    \longs ->\useTextGlyph
    {fxl}{longs}


    Wenn ich dagegen, auch ohne die von Dir beschriebene Ergänzung, das Zeichen "ſ" in irgendeinem Text, in dem es vorhanden ist, mit der Maus markiere und in den gvim, in dem ich den Text editiere, einfüge, wird nach dem XeLaTeX-Durchlauf das lange s korrekt dargestellt (wie in "Teſt").
    Aber wie gebe ich es direkt in den Editor ein?! -- Meine Tastatur hat nämlich leider kein langes s. ;-/
    Außerdem war ich eigentlich davon ausgegangen, daß Herr Helzel dies bei der Schriftcodierung schon berücksichtigt hätte, so daß das lange s schon automatisch gesetzt wird, denn in OpenType kann man ja Regeln für die Zeichen- und Ligaturverwendung einbauen. (Die Ligaturen wie "ck" usw. funktionieren!) Wie man so eine Regelung selbst in fontforge einbaut, weiß ich leider nicht ...
    Mir würde eigentlich schon fast reichen, wenn das lange s die Standardausgabe wäre und ich nur fallweise das runde manuell einschalten könnte/müßte.


    Werde mir darum wohl mal die *.sty-Pakete, die die "klassische" Frakturverwendung unter LaTeX einschalten, zu Gemüte führen müssen, um zu sehen, wie es dort gemacht wurde; nur stecke ich leider nicht so tief in TeX, daß ich diese Vorgehensweise auch verstehe ...


    Viele Grüße
    Christoph

  • Hallo zusammen,


    nur zur Auflösung: Ich hatte eine veraltete Version des "fontspec"-Paketes installiert. Nun habe ich eine aktuelle (v1.18 von 2008 ), und damit geht es (mit der Option "Contextuals=Alternate"). :)
    Es wird nun automatisch, je nach Kontext, das lange bzw. runde s benutzt. Zweifelsfälle oder Ausnahmen können mit der Silbentrennung (z.B. "Wachs\/tube") korrigiert werden.


    Vielen Dank für Eure Hilfe.
    Christoph

  • Schön! Um etwas Ordnung ins Thema zu bringen, könntest Du auflisten wie es gemacht wird? Du benutzt demnach Helzel-OpenType-Schriften mit XeTex ?


    Ist es möglich ein PDF-Datei mit einem Textbespiel und dazu den Quellkode hier zu veröffentlichen?

  • Schön! Um etwas Ordnung ins Thema zu bringen, könntest Du auflisten wie es gemacht wird? Du benutzt demnach Helzel-OpenType-Schriften mit XeTex ?


    Ja, genau. Einfach darauf achten, daß das fontspec-Paket (fontspec.sty) mindestens die Version 1.18 hat. Die Fontdatei muß in einem Pfad liegen, der vom System gefunden wird.


    Zitat

    Ist es möglich ein PDF-Datei mit einem Textbespiel und dazu den Quellkode hier zu veröffentlichen?


    Mein Beispieldokument ist wie folgt:



    Damit entsteht nach Aufruf von XeTeX ein PDF, in dem alle "s" und alle Ligaturen korrekt gesetzt sind.


    Viele Grüße
    Christoph

  • Ich hatte vor einiger Zeit eine Anleitung zum Fraktursatz mit (herkömmlichem) LaTeX geschrieben und an Interessierte geschickt. Inzwischen verwende ich aber auch nur noch XeTeX mit OpenType-Schriften, das Frakturpaket von Herrn Gährken empfehle ich nicht mehr.


    Ich nutze jedoch nicht Helzels automatische Ersetzungen, sondern gebe lieber selbst das lange s ein und verhindere Verbünde durch den Bindehemmer. Dazu habe ich mir eine Tastaturbelegung erstellt, die das lange s und den Bindehemmer enthält. Damit kann man dann alle OpenType-Schriften verwenden, nicht nur Helzels Schriften mit automatischen Ersetzungen. Auf http://www.ligafaktur.de kann man sich ein Paket mit OpenType-Frakturschriften herunterladen.


    Übrigens: Nur mit OpenType-Schriften im TrueType-Format erstellt XeTeX richtige CMAP-Einträge in PDF-Dateien. Der Text in mit Postscript-Schriften erstellten PDF-Dateien kann also nicht durchsucht oder kopiert werden, mit TrueType-Schriften klappt’s.


    Noch eine kleine Anmerkung zu Deinem XeLaTeX-Beispiel:


    xunicode und fontspec werden von xltxtra geladen, es reicht also, wenn man letzteres lädt.
    \selectlanguage{german} wäre nur nötig, wenn man verschiedene Sprachen benützt.


    Viel Spaß mit XeTeX! :D

  • Hallo,


    tut mi leid, wenn ich diesen Thread nochmal ausgrabe...


    Bin eher ein LaTeX-Neuling und die ganzen HInweise auf OpenType und Xetex finde ich interessant, nur fehlt mir ein wenig der Einstieg. Gibt es denn irgendwo eine Anleitung, am besten eine, die sich bewußt ist, daß OSX auch existiert?


    Für jeden Hinweis dankbar, habe das mit den yfonts gerade so hingekriegt und bin an der Gährken-Anleitung verzweifelt. Daher die Suche nach Neuem...


    Viele Grüße,
    Thorsten


  • Bin eher ein LaTeX-Neuling und die ganzen HInweise auf OpenType und Xetex finde ich interessant, nur fehlt mir ein wenig der Einstieg. Gibt es denn irgendwo eine Anleitung, am besten eine, die sich bewußt ist, daß OSX auch existiert?


    Für jeden Hinweis dankbar, habe das mit den yfonts gerade so hingekriegt und bin an der Gährken-Anleitung verzweifelt. Daher die Suche nach Neuem...

    Ich bin allerdings eher Fan und aktiver Nutzer von plain (Xe)TeX unter Linux, LaTeX trifft meinen (Programmierer-nahen) Geſchmack einfach nicht. Da XeTeX aber urſprünglich der Macintoſh-Welt entſtammt, ſollte alles da ganz ähnlich funktionieren.
    Wenn Du XeTeX auf Deinem Rechner inſtalliert bekommſt, würde ich eigentlich auch zu deſſen Verwendung raten, im Vergleich dazu iſt das Hantieren mit den alten 8-Bit-Metafonts (z.B. den erwähnten yfonts) ſehr mühſam.
    XeteX (und XeLaTeX) "ſchluckt" moderne Font-Formate, insbeſondere TTF und OTF und verarbeitet UTF-8- (alſo Unicode-)kodierte tex-Dateien.
    Das Lang-S gebe ich allerdings auch direkt ein, unter Linux iſt es gar kein Problem, ſich das auf eine Taſtenkombination (in meinem Falle ALTGR+s) zu legen.
    Hier nun ein für meine Arbeit mit plain(!) XeTeX typiſches Code-Beiſpiel:


    Man beachte an den erſten zwei Zeilen, daß das Papierformat hier DIN A5 iſt.
    Dieſe Datei, ſagen wir

    Code
    goethe.tex

    , (kodiert in UTF-8!) erſtellt man alſo in einem Ordner, und ich bevorzuge es perſönlich auch, die verwendeten Font-Dateien in denſelbem Ordner liegen zu haben, ſodaß alles beiſammenliegt (für Archivzwecke).
    In einer Kommandoſhell geht man nun zu dieſem Ordner und gibt das Kommando

    Code
    xetex goethe.tex

    ein, ich ſelbſt verwende meiſt

    Code
    xetex -output-driver=xdvipdfmx goethe.tex

    . Es ſollte anſchließend eine entſprechende pdf-Datei im ſelben Ordner liegen.
    Zu beachten: XeTeX und XeLaTeX können leider (noch) nichts anfangen mit den Unicode-Zeichen für Trennungen und Ligaturſteuerung! Stattdeſſen ſind die klaſſiſchen TeX-Makros zu verwenden, alſo z.B.

    Code
    \-

    für eine Stelle, an der getrennt werden darf und

    Code
    \/

    für eine Stelle, an der eine automatiſche Ligatur verhindert werden ſoll. (Bekanntlich arbeiten alle Varianten von TeX ſo, daß Ligaturen immer automatiſch geſetzt werden, wobei der jeweils benutzte Zeichenſatz intern definiert, welche Ligaturen generell exiſtieren.)
    Vielleicht hilft dies ja als ein allererſter Einſtieg...

  • „Plain“ XeTeX (reines XeTeX ohne LaTeX) ist für normale Anwender natürlich weniger zu empfehlen; Du solltest schon XeLaTeX verwenden. Ein einfaches Dokument sieht dort so aus:



    Der Befehl \setmainfont{}, mit dem die Hauptschrift geladen wird, gehört zum Paket fontspec. Dieses Paket ist unter XeLaTeX für die Schriftenverwaltung zuständig und muß nicht eigens eingebunden werden, da es durch das Paket xltxtra geladen wird.


    Beachte, daß Satzzeichen wie Anführungszeichen normal wie in anderen Programmen eingegeben werden, die Anführungszeichen beispielsweise also unter MacOS X über Alt + Umschalt + W bzw. Alt + 2.


    Die Mars-Fraktur von Dipl.-Ing. Helzel enthält eine Automatik, die selbständig Verbünde und langes s an den richtigen Stellen setzt. Bei Schriften ohne solche Automatik richtest Du Dir am besten eine eigene Tastanbelegung ein, das geht etwa mit dem kostenlosen Programm Ukulele.


    Eine ausführliche, englische Anleitung zu Fontspec findest Du hier: http://mirror.ctan.org/macros/…rib/fontspec/fontspec.pdf

  • Code
    \setmainfont{MarsFrakturOT-Normal}


    Bei mir funktioniert es nur so:


    Code
    \setmainfont{MarsFraktur OT}


    Das Resultat mit MarsFraktur OT ist ziemlich gut. Das automatische lange ſ scheint meistens richtig zu funktionieren. Eine Korrektur von Hand ist nur in wenigen Fällen erforderlich. In den Fällen, wo "s" stehen sollte, aber "ſ" erscheint, muss "\/" eingegeben werden; in den Fällen, wo "ſ" stehen sollte, aber "s" erscheint, muss das "ſ" von Hand eingeben werden:


    Code
    Is\/chia täuſchen


    Leider funktioniert das Sperren nicht korrekt, denn in gesperrtem Text bleiben alle Ligaturen erhalten, auch die ſch-Ligatur. Um ein korrekt gesperrtes " ſ ch " zu erhalten, muss von Hand "ſ\/ch" eingegeben werden:


    Code
    \addfontfeature{LetterSpace=30.0}
    ſ\/chlecht
    \addfontfeature{LetterSpace=0}
  • Ehrlich gesagt habe ich gar nicht geprüft, welchen Namen man bei der Mars-Fraktur genau eingeben muß. Bei den Verbünden ist zu beachten, daß \/ einen kleinen Abstand einfügt. "| löst Verbünde auf, ohne einen Abstand einzufügen.

  • Ich verstehe den Unterschied zwischen \/ und "| nicht ganz. Die Eingabe von \/ ergibt jeweils eine minim kürzere Wortlänge als die Eingabe von "| (und nicht umgekehrt!).


    Im gesperrten Text führt auf alle Fälle nur \/ zum gewünschten Resultat. Bei einer Eingabe von „ſ"|chlect“ im gesperrten Text wird das ſch entgegen den Regeln nicht gesperrt. Die korrekte Sperrung erfordert eine Eingabe von „ſ\/chlect“ – jedenfalls mit MarsFraktur OT.


    Ich denke also, dass ich weiterhin \/ vorziehe, denn es funktioniert beim Sperren und ergibt außerdem (minim) kürzere Wörter.

  • In plain TeX gibt es nur \/, "| iſt eine LaTeX-ſpezifiſche Konſtruktion (über die ich jetzt nicht genau beſcheid weiß, da ich nicht mit LaTeX arbeite).
    In "dem" TeX-Buch von D. Knuth ſteht in der Tat, daß das Makro \/ Ligaturen intern dadurch verhindert, daß ein minimaler Zwiſchenraum eingefügt wird. Wie groß dieſer Zwiſchenraum iſt, wird von TeX kontextabhängig entſchieden.


    Gemäß dem "TeXikon" von Stefan Schwarz und Rudolf Potuček iſt die urſprüngliche Idee hinter \/ keineswegs "nur" die Ligatur-Auflöſung geweſen, ſondern die Antwort auf folgendes Problem: Falls in einem Satz auf einen Text in kurſiver Antiqua unmittelbar ein Text in regulärer (d.h. nicht kurſiver) Schrift folgt, dann "ragt" der kurſive Text ja "oben" ein klein wenig in den regulären Text hinein, d.h., optiſch erſcheint der Abſtand dort zu gering. Über \/ kann man nun TeX anweiſen, einen zuſätzlichen ausgleichenden Zwiſchenraum einzufügen.
    Daß hierbei außerdem Ligaturen prinzipiell aufgelöſt werden, iſt inſofern ein (wenn auch beabſichtigter und erwünſchter) Neben-Effekt.


    \/ iſt ein ſogenanntes TeX-Primitiv, d.h. ein Makro, das auf der allerunterſten Hierarchie-Ebene des Satzſyſtems angeſiedelt iſt, alſo ganz tief unter der Haube ſozuſagen.


    Inſofern wundert es mich nicht, daß \/ auch mit geſperrtem Text kompatibel iſt, obwohl meines Wiſſens Sperrungen eine XeTeX-Erweiterung ſind, das urſprüngliche TeX ſah ſo etwas intereſſanterweiſe gar nicht vor. (Man konnte/kann zwar ſchon über Makros TeX anweiſen, Extra-Zwiſchenräume nach jedem Buchſtaben einzufügen, ſo etwas war/iſt dann aber eher ein Griff in die Trickkiſte und umgeht die normalen Satz-Algorithmen ein wenig.)

  • Ich habe jetzt \/ und "| noch mit dem ZWNJ und der Abwesenheit derartiger Zeichen verglichen. Dazu habe ich 41 mal "q" geschrieben und dann in jeden Zwischenraum das jeweilige Zeichen gesetzt bzw. gar keines. Es stellt sich heraus das \/ keinerlei Verbreiterung bewirkt, das "| hingegen schon. Der ZWNJ bewirkt in MarsFraktur OT zwar eine sehr deutliche Verbreiterung, in übrigen Schriften aber auch keine, die ich mal auf die Schnelle ausprobiert habe. Ich habe also beim \/ keinerlei noch so kleinen Abstand nachweisen können, wohl aber beim "|.