Discussion:
Verständnisfrage zu fontspec und OTF-Feature lnum
(zu alt für eine Antwort)
Christoph Bier
2012-08-27 12:49:03 UTC
Permalink
Hallo,

ich habe hier eine proprietäre Schrift (BundesSans), die ich
standardmäßig mit Minuskelziffern verwende. Für Tabellen würde ich aber
gerne auf Versalziffern ausweichen (oder besser noch:
nicht-proportionale Ziffern). Schaue ich mir die Schrift in einem Font
Viewer an (dem in Windows XP integrierten oder Opcion) werden mir auch
Versalziffern angezeigt. Lasse ich bei \defaultfontfeatures die Option
Numbers=OldStyle weg, werden im Dokument auch Versalziffern verwendet.
Füge ich aber im Dokument \addfontfeatures{Numbers={Lining}} ein, sagt
mir fontspec (mit LuaTeX aus TL 2012):

****************************************************
* fontspec warning: "icu-feature-not-exist-in-font"
*
* OpenType feature 'Numbers=Lining' (+lnum) not available for font
* 'BundesSans with script 'Latin' and language 'Default'.
****************************************************

Das Ganze mit folgendem Minimalbeipiel, das in Wirklichkeit ja kein
solches ist, weil wohl kaum jemand diese Schriften besitzt ... Da mir
ohnehin scheint, dass ich grundsätzlich etwas an fontspec nicht
verstanden habe, sieht ja jemand vielleicht trotzdem jemand den Fehler.
Ich habe es auch schon mit »Renderer=Basic« probiert, was auch nicht
geholfen hat.[1]

%Minimalbeispiel%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\defaultfontfeatures{Numbers=OldStyle}
\setmainfont{BundesSerif-Regular}
\setsansfont{BundesSans-Regular}

\begin{document}

\addfontfeatures{Numbers={Lining}}

\sffamily{} 0123456789

45

11
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Schöne Grüße
Christoph

[1] Ohne verstanden zu haben, was dieser Renderer macht. Ulrike Fischer
hat in einem Beitrag zu einem anderen Problem eines anderen Nutzers
darauf hingewiesen, womit ich tatsächlich auch ein anderes Problem lösen
konnte (gesperrte Kapitälchen mit microtype). In der fontspec-Anleitung
habe ich dazu auch nichts Erhellendes gefunden.
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln (1.7): http://www.zvisionwelt.de/?page_id=56
Ulrike Fischer
2012-08-27 13:14:25 UTC
Permalink
Post by Christoph Bier
Hallo,
ich habe hier eine proprietäre Schrift (BundesSans), die ich
standardmäßig mit Minuskelziffern verwende. Für Tabellen würde ich aber
nicht-proportionale Ziffern). Schaue ich mir die Schrift in einem Font
Viewer an (dem in Windows XP integrierten oder Opcion) werden mir auch
Versalziffern angezeigt. Lasse ich bei \defaultfontfeatures die Option
Numbers=OldStyle weg, werden im Dokument auch Versalziffern verwendet.
Füge ich aber im Dokument \addfontfeatures{Numbers={Lining}} ein, sagt
****************************************************
* fontspec warning: "icu-feature-not-exist-in-font"
*
* OpenType feature 'Numbers=Lining' (+lnum) not available for font
* 'BundesSans with script 'Latin' and language 'Default'.
****************************************************
Das Ganze mit folgendem Minimalbeipiel, das in Wirklichkeit ja kein
solches ist, weil wohl kaum jemand diese Schriften besitzt ... Da mir
ohnehin scheint, dass ich grundsätzlich etwas an fontspec nicht
verstanden habe, sieht ja jemand vielleicht trotzdem jemand den Fehler.
Der "Fehler" dürfte sein, dass die Schrift halt lnum nicht kennt,
vielleicht benutzt sie ja tnum oder pnum. Du musst halt mal in die
Opentypeeigenschaften (wenn es denn eine Opentype-Schrift ist)
reinschauen.

Entweder mit otfinfo (http://www.lcdf.org/type/otfinfo.1.html) oder
mit dem erweiterten Fonteigenschaftendialog von microsoft
(http://www.microsoft.com/typography/TrueTypeProperty21.mspx)


Abgesehen davon, kannst du ja einfach eine Schriftfamilie
definieren, die onum nicht einschaltet.
--
Ulrike Fischer
http://www.troubleshooting-tex.de/
Christoph Bier
2012-08-27 14:08:27 UTC
Permalink
Post by Ulrike Fischer
Der "Fehler" dürfte sein, dass die Schrift halt lnum nicht kennt,
vielleicht benutzt sie ja tnum oder pnum.
Ja, auf die Idee war ich auch schon gekommen und hatte alle relevanten
Optionen der Tabelle 4 der fontspec-Anleitung v2.2b durchprobiert
(Uppercase/Lining, Proportional, Monospaced). Jedes der Features fehlt.
Wobei tnum und pnum aber auch nicht das Gleiche wie lnum ist. Zumindest
verstehe ich so die fontspec-Anleitung.
Post by Ulrike Fischer
Du musst halt mal in die
Opentypeeigenschaften (wenn es denn eine Opentype-Schrift ist)
reinschauen.
Entweder mit otfinfo (http://www.lcdf.org/type/otfinfo.1.html) oder
mit dem erweiterten Fonteigenschaftendialog von microsoft
(http://www.microsoft.com/typography/TrueTypeProperty21.mspx)
Guter Hinweis, danke! otfinfo liefert für die BundesSans nur onum. Ich
frage mich nur, wieso dann trotzdem Versalziffern angezeigt werden, wenn
onum nicht explizit über Numbers=OldStyle angefordert wird. Das Feature
lnum scheint doch dann vorhanden zu sein? Oder wie heißt dann die
Funktion für Versalziffern in dieser Schrift?
Post by Ulrike Fischer
Abgesehen davon, kannst du ja einfach eine Schriftfamilie
definieren, die onum nicht einschaltet.
Im Moment ist das für mich noch nicht einfach. Ich finde die
fontspec-Anleitung sehr verwirrend (was vielleicht auch an OTF liegt;
siehe unten). Ich habe es jetzt aber mit
\newfontfamily\tabfont{BundesSans-Regular} hinbekommen. \newfontface
funktioniert auch, aber der Unterschied ist mir nicht klar.
Numbers=OldStyle habe ich bei \defaultfontfeatures ausgeschaltet und
beim Laden von BundesSans und BundesSerif wieder eingeschaltet. Das ist
eine funktionierende Lösung. Danke!

Was mich aber weiter verwirrt: Die nun eingeschalteten Versalziffern
sind auch nicht-proportional. Das ist zwar genau das Gewünschte. Aber es
scheint ja dann den Schriftdesignern überlassen zu sein, ob sie dieses
Feature explizit in lnum und/oder tnum verpacken. Denn dort hätte ich
diese Funktion erwartet. Mir fehlt also ein wenig die Logik bei den
OTF-Features. Denn eigentlich sind lnum und tnum ja vorhanden. Und genau
das war mein Eindruck, als ich vor wenigen Jahren XeTeX, als es -- zwar
ohne microtype -- unter GNU/Linux brauchbar wurde, testete: Ich schien
erraten zu müssen, wie ich auf eine bestimmte Funktion der
OpenType-Schrift zugreifen kann. Alleine jetzt herauszufinden, wie ich
auf nicht-proportionale Versalziffern der BundesSans zugreifen kann, hat
mich viele Stunden gekostet. -- Trotzdem bin ich total begeistert von
LuaTeX! Endlich kann ich alle Schriften auch mit LaTeX *und* microtype
(in der Beta-Version) verwenden, ohne Anpassungen erzeugen zu müssen.
Das ist ein riesiger Fortschritt!

Schöne Grüße
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln (1.7): http://www.zvisionwelt.de/?page_id=56
Georg Duffner
2012-08-28 08:14:41 UTC
Permalink
Post by Christoph Bier
Post by Ulrike Fischer
Der "Fehler" dürfte sein, dass die Schrift halt lnum nicht kennt,
vielleicht benutzt sie ja tnum oder pnum.
Ja, auf die Idee war ich auch schon gekommen und hatte alle relevanten
Optionen der Tabelle 4 der fontspec-Anleitung v2.2b durchprobiert
(Uppercase/Lining, Proportional, Monospaced). Jedes der Features fehlt.
Wobei tnum und pnum aber auch nicht das Gleiche wie lnum ist. Zumindest
verstehe ich so die fontspec-Anleitung.
Post by Ulrike Fischer
Du musst halt mal in die Opentypeeigenschaften (wenn es denn eine
Opentype-Schrift ist) reinschauen.
Entweder mit otfinfo (http://www.lcdf.org/type/otfinfo.1.html) oder mit
dem erweiterten Fonteigenschaftendialog von microsoft
(http://www.microsoft.com/typography/TrueTypeProperty21.mspx)
Guter Hinweis, danke! otfinfo liefert für die BundesSans nur onum. Ich
frage mich nur, wieso dann trotzdem Versalziffern angezeigt werden, wenn
onum nicht explizit über Numbers=OldStyle angefordert wird. Das Feature
lnum scheint doch dann vorhanden zu sein? Oder wie heißt dann die
Funktion für Versalziffern in dieser Schrift?
Post by Ulrike Fischer
Abgesehen davon, kannst du ja einfach eine Schriftfamilie definieren,
die onum nicht einschaltet.
Im Moment ist das für mich noch nicht einfach. Ich finde die
fontspec-Anleitung sehr verwirrend (was vielleicht auch an OTF liegt;
siehe unten). Ich habe es jetzt aber mit
\newfontfamily\tabfont{BundesSans-Regular} hinbekommen. \newfontface
funktioniert auch, aber der Unterschied ist mir nicht klar.
Numbers=OldStyle habe ich bei \defaultfontfeatures ausgeschaltet und
beim Laden von BundesSans und BundesSerif wieder eingeschaltet. Das ist
eine funktionierende Lösung. Danke!
Was mich aber weiter verwirrt: Die nun eingeschalteten Versalziffern
sind auch nicht-proportional. Das ist zwar genau das Gewünschte. Aber es
scheint ja dann den Schriftdesignern überlassen zu sein, ob sie dieses
Feature explizit in lnum und/oder tnum verpacken. Denn dort hätte ich
diese Funktion erwartet. Mir fehlt also ein wenig die Logik bei den
OTF-Features. Denn eigentlich sind lnum und tnum ja vorhanden. Und genau
das war mein Eindruck, als ich vor wenigen Jahren XeTeX, als es -- zwar
ohne microtype -- unter GNU/Linux brauchbar wurde, testete: Ich schien
erraten zu müssen, wie ich auf eine bestimmte Funktion der
OpenType-Schrift zugreifen kann. Alleine jetzt herauszufinden, wie ich
auf nicht-proportionale Versalziffern der BundesSans zugreifen kann, hat
mich viele Stunden gekostet. -- Trotzdem bin ich total begeistert von
LuaTeX! Endlich kann ich alle Schriften auch mit LaTeX *und* microtype
(in der Beta-Version) verwenden, ohne Anpassungen erzeugen zu müssen.
Das ist ein riesiger Fortschritt!
Schöne Grüße Christoph
Ja, es ist tatsächlich den Schriftdesignern überlassen, wie sie ihre
Schriften ausstatten. In deinem Fall sind nichtproportionale Versalziffern
der Standard und daher nicht weiter ausgezeichnet (sind wohl auch die
einzigen Ziffern, die in MSOffice vor 2010 verfügbar sind), während
(proportionale?) Mediävalziffern als Alternative zur Auswahl stehen und
per onum anwählbar sind. Ein zusätzlicher Schalter lnum wäre zwar
intuitiv einfacher, ist aber genau genommen redundant. Ein-/ausschalten
von onum wechselt genau zwischen den beiden verfügbaren Varianten.

Wenn den Schriften keine Bedienungsanleitung beiliegt, ist ein Blick in
otfinfo sehr empfehlenswert, bevor mit der Arbeit damit begonnen wird.

Schöne Grüße
Georg
Christoph Bier
2012-08-29 09:15:34 UTC
Permalink
[...]
Post by Christoph Bier
Post by Ulrike Fischer
Abgesehen davon, kannst du ja einfach eine Schriftfamilie
definieren, die onum nicht einschaltet.
Im Moment ist das für mich noch nicht einfach. Ich finde die
fontspec-Anleitung sehr verwirrend (was vielleicht auch an OTF liegt;
siehe unten). Ich habe es jetzt aber mit
\newfontfamily\tabfont{BundesSans-Regular} hinbekommen. \newfontface
funktioniert auch, aber der Unterschied ist mir nicht klar.
Numbers=OldStyle habe ich bei \defaultfontfeatures ausgeschaltet und
beim Laden von BundesSans und BundesSerif wieder eingeschaltet. Das ist
eine funktionierende Lösung. Danke!
JFTR: Ich musste noch die weiteren Schnitte der Schrift explizit
angeben, damit ich in Tabellen beispielsweise auch die Fette nutzen kann:

\newfontfamily\tabfont[%
BoldFont={BundesSans-Bold}%
,ItalicFont={BundesSans-RegularItalic}%
,BoldItalicFont={BundesSans-BoldItalic}%
]{BundesSans-Regular}

Grüße
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln (1.7): http://www.zvisionwelt.de/?page_id=56
Loading...