Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

31 Mär '16, 10:32

Henri's gravatar image

Henri
15.7k133943

# luatex: Feature File ([Malipivo, 2014](http://tex.stackexchange.com/a/179284/10995)) Am einfachsten geht es mit LuaLaTeX und einem Feature-File. Zeichen ersetzen geht dabei mit Hilfe einer Ligatur. Man kennt Ligaturen normalerweise daher, dass zum Beispiel `ff` durch `ff` ersetzt wird. Dieser Mechanismus erlaubt es jede beliebige Kombination von Zeichen durch eine andere zu ersetzen. Hier ersetzen wir `one` durch `one.alt001`. feature liga { sub one by one.alt001; } liga; Eine ausführliche Dokumentation zur Syntax von Feature-Files gibt es auf der Seite von [Adobe](https://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html). \documentclass{article} \begin{filecontents*}{scala-one.fea} # Script and language coverage languagesystem DFLT dflt; languagesystem latn dflt; # Ligature formation feature liga { sub one by one.alt001; } liga; \end{filecontents*} \usepackage{fontspec} \setromanfont[Extension=.otf,UprightFont= *Regular,FeatureFile=scala-one.fea]{ScalaPro-} \begin{document} 01234 \end{document} > ![alt text][1] # xetex: Character Classes ([egreg, 2011](http://tex.stackexchange.com/a/23295/10995)) In XeTeX gibt es das Konzept der Character Classes. Jedes Zeichen gehört standardmäßig zur Character Class 1 (mit einigen Ausnahmen, z.B. bei CJK, siehe [Docs](http://texdoc.net/texmf-dist/doc/xetex/xetexref/xetex-reference.pdf#page=14)). Die Wortgrenzen, also Leerraum jeder Art, sind aus Class 255. Mit `\XeTeXinterchartoks` lässt sich zu Laufzeit Material zwischen Zeichen beliebiger Klassen einfügen. Wir erstellen zunächst eine neue Klasse und fügen das Zeichen `1` hinzu. \newXeTeXintercharclass\aalt \XeTeXcharclass`1=\aalt Nun fügen wir zwischen allen Zeichen der Klasse 0 und `\aalt` sowie 255 und `\aalt` Material ein. \XeTeXinterchartoks 0 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks 255 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks \aalt 0 = {\endgroup} \XeTeXinterchartoks \aalt 255 = {\endgroup} Das bedeutet, dass wenn eine 1 im Text gefunden wird, wird davor `\begingroup\addfontfeatures{RawFeature=+aalt}` und danach `\endgroup` eingefügt. Wir schalten also lokal das Feature `+aalt` an. Zu guter Letzt müssen wir die `\XeTeXinterchartoks` noch aktivieren. Das geht mit \XeTeXinterchartokenstate=1 Möchte man die Funktionalität kurz deaktivieren, so setzt man die Variable einfach auf 0. \documentclass{article} \pagestyle{empty} \usepackage{fontspec} \setromanfont[Extension=.otf,UprightFont= *Regular]{ScalaPro-} \newXeTeXintercharclass\aalt \XeTeXcharclass`1=\aalt \XeTeXinterchartoks 0 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks 255 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks \aalt 0 = {\endgroup} \XeTeXinterchartoks \aalt 255 = {\endgroup} \XeTeXinterchartokenstate=1 \begin{document} 01234 \end{document} > ![alt text][2] [1]: http://texwelt.de/wissen/upfiles/test_95.png [2]: http://texwelt.de/wissen/upfiles/test_96.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

31 Mär '16, 10:28

Henri's gravatar image

Henri
15.7k133943

# luatex: Feature File Am einfachsten geht es mit LuaLaTeX und einem Feature-File. Zeichen ersetzen geht dabei mit Hilfe einer Ligatur. Man kennt Ligaturen normalerweise daher, dass zum Beispiel `ff` durch `ff` ersetzt wird. Dieser Mechanismus erlaubt es jede beliebige Kombination von Zeichen durch eine andere zu ersetzen. Hier ersetzen wir `one` durch `one.alt001`. feature liga { sub one by one.alt001; } liga; Eine ausführliche Dokumentation zur Syntax von Feature-Files gibt es auf der Seite von [Adobe](https://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html). \documentclass{article} \begin{filecontents*}{scala-one.fea} # Script and language coverage languagesystem DFLT dflt; languagesystem latn dflt; # Ligature formation feature liga { sub one by one.alt001; } liga; \end{filecontents*} \usepackage{fontspec} \setromanfont[Extension=.otf,UprightFont= *Regular,FeatureFile=scala-one.fea]{ScalaPro-} \begin{document} 01234 \end{document} > ![alt text][1] # xetex: Character Classes In XeTeX gibt es das Konzept der Character Classes. Jedes Zeichen gehört standardmäßig zur Character Class 1 (mit einigen Ausnahmen, z.B. bei CJK, siehe [Docs](http://texdoc.net/texmf-dist/doc/xetex/xetexref/xetex-reference.pdf#page=14)). Die Wortgrenzen, also Leerraum jeder Art, sind aus Class 255. Mit `\XeTeXinterchartoks` lässt sich zu Laufzeit Material zwischen Zeichen beliebiger Klassen einfügen. Wir erstellen zunächst eine neue Klasse und fügen das Zeichen `1` hinzu. \newXeTeXintercharclass\aalt \XeTeXcharclass`1=\aalt Nun fügen wir zwischen allen Zeichen der Klasse 0 und `\aalt` sowie 255 und `\aalt` Material ein. \XeTeXinterchartoks 0 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks 255 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks \aalt 0 = {\endgroup} \XeTeXinterchartoks \aalt 255 = {\endgroup} Das bedeutet, dass wenn eine 1 im Text gefunden wird, wird davor `\begingroup\addfontfeatures{RawFeature=+aalt}` und danach `\endgroup` eingefügt. Wir schalten also lokal das Feature `+aalt` an. Zu guter Letzt müssen wir die `\XeTeXinterchartoks` noch aktivieren. Das geht mit \XeTeXinterchartokenstate=1 Möchte man die Funktionalität kurz deaktivieren, so setzt man die Variable einfach auf 0. \documentclass{article} \pagestyle{empty} \usepackage{fontspec} \setromanfont[Extension=.otf,UprightFont= *Regular]{ScalaPro-} \newXeTeXintercharclass\aalt \XeTeXcharclass`1=\aalt \XeTeXinterchartoks 0 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks 255 \aalt = {\begingroup\addfontfeatures{RawFeature=+aalt}} \XeTeXinterchartoks \aalt 0 = {\endgroup} \XeTeXinterchartoks \aalt 255 = {\endgroup} \XeTeXinterchartokenstate=1 \begin{document} 01234 \end{document} > ![alt text][2] [1]: http://texwelt.de/wissen/upfiles/test_95.pnghttp://texwelt.de/wissen/upfiles/test_95.png [2]: http://texwelt.de/wissen/upfiles/test_96.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

31 Mär '16, 09:57

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

30 Mär '16, 19:21

Henri's gravatar image

Henri
15.7k133943