Discussion:
Gedankenstrich bei fontspec
(zu alt für eine Antwort)
Matthias Taube
2008-02-12 20:38:19 UTC
Permalink
Der Gedankenstrich wird normalerweise in Latex mit zwei minus -- erzeugt.

Wenn ich aber fontspec benutze und das u.a. Beispiel mit XeTeX
übersetze, wird aus dem - auch tatsächlich ein Minus-Zeichen, wie im
mathematischen Modus.

Das entsprechende Unicode-Zeichen wird richtig als Gedankenstrich gesetzt.

Wie bringe ich XeTeX nun dazu, einen Gedankenstrich zu erzeugen?
mfg
Matthias


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{fontspec}

\title{TestTitle}
\begin{document}
Test
--

\end{document}
Maik Zumstrull
2008-02-12 21:30:34 UTC
Permalink
Post by Matthias Taube
Der Gedankenstrich wird normalerweise in Latex mit zwei minus -- erzeugt.
Jein: Das macht streng genommen nicht LaTeX, sondern ist im Font so
eingestellt.
Post by Matthias Taube
Wie bringe ich XeTeX nun dazu, einen Gedankenstrich zu erzeugen?
XeTeX macht diese Ersetzung in der Standardeinstellung nicht; warum
auch, es gibt ja einen richtigen n-dash in Unicode. Wenn man das will,
muss man es einschalten.

% texdoc fontspec

*blätter blätter*

Seite 11, unten, 5.2 Mapping. Sogar genau mit dem Beispiel.
Matthias Taube
2008-02-13 20:30:25 UTC
Permalink
Post by Maik Zumstrull
*blätter blätter*
Seite 11, unten, 5.2 Mapping. Sogar genau mit dem Beispiel.
Tja, da wird es schwierig.
Ich kenne mich mit dem Fonthandling nicht so gut aus.

Ein
\defaultfontfeatures{Mapping=tex-text}

hilft schon mal nicht.
Bei
\fontspec[Mapping=tex-text]{Times}

kennt er Times nicht, auch bei vorgeschalteten
\usepackage{times}

\fontspec[Mapping=tex-text]{Times New Roman}

funktioniert zwar, verwendet aber dann den TrueType Font.

Was muss ich denn eingeben, um den ganz normalen Typ-1 Font aus
Postscript zu bekommen?

mfg
Matthias
Maik Zumstrull
2008-02-13 20:58:52 UTC
Permalink
Post by Matthias Taube
Post by Maik Zumstrull
*blätter blätter*
Seite 11, unten, 5.2 Mapping. Sogar genau mit dem Beispiel.
Tja, da wird es schwierig.
Ich kenne mich mit dem Fonthandling nicht so gut aus.
Ein
\defaultfontfeatures{Mapping=tex-text}
hilft schon mal nicht.
Vermutlich, weil du die Schriften gar nicht per fontspec geladen hast,
sondern mit den klassischen LaTeX-Methoden, die in XeTeX aus
Abwärtskompatibilitätsgründen noch exisiteren. Die ignorieren dann aber
diese Mapping-Features.
Post by Matthias Taube
Bei
\fontspec[Mapping=tex-text]{Times}
kennt er Times nicht,
Du hast vermutlich auch keine Times da, sondern eine Nimbus Roman,
PSName "NimbusRomNo9L-Regu". Ferner ist der PSName von Times nicht
"Times", sondern "Times-Roman".
Post by Matthias Taube
auch bei vorgeschalteten
\usepackage{times}
Das Paket passt so gar nicht zu fontspec.
Post by Matthias Taube
\fontspec[Mapping=tex-text]{Times New Roman}
funktioniert zwar, verwendet aber dann den TrueType Font.
Der ist ja auch vermutlich der einzige auf dem System, der exakt so
heißt. (Die TNR in Type1 heißt "TimesNewRomanPSMT", in OpenType heißt
sie "Times New Roman MT Std", PSName "TimesNewRomanMTStd".)
Post by Matthias Taube
Was muss ich denn eingeben, um den ganz normalen Typ-1 Font aus
Postscript zu bekommen?
Paket times vergessen, überhaupt alle nicht-XeTeX-Fontpakete. fontspec
laden. Danach sollte:

\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Times-Roman}
\setsansfont{Helvetica}
\setmonofont{Courier}

funktionieren. Teste es mal.
Matthias Taube
2008-02-13 21:29:26 UTC
Permalink
Post by Maik Zumstrull
Post by Matthias Taube
\fontspec[Mapping=tex-text]{Times}
kennt er Times nicht,
Du hast vermutlich auch keine Times da, sondern eine Nimbus Roman,
PSName "NimbusRomNo9L-Regu". Ferner ist der PSName von Times nicht
"Times", sondern "Times-Roman".
Der ist ja auch vermutlich der einzige auf dem System, der exakt so
heißt. (Die TNR in Type1 heißt "TimesNewRomanPSMT", in OpenType heißt
sie "Times New Roman MT Std", PSName "TimesNewRomanMTStd".)
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Times-Roman}
\setsansfont{Helvetica}
\setmonofont{Courier}
Vielen Dank für Deine Hilfe, aber das funktioniert leider auch nicht.
Die Fonts findet er nicht.

Wie kann ich denn aus meinen Fonts-Verzeichnis auf die Namen der
Schriften schliessen?

in /usr/share/texmf/fonts/type1/public/lm/ habe ich jede Menge lm*.pfb
dateien, in /usr/share/texmf/fonts/opentype/public/lm/ lmroman.otf und
in /usr/share/texmf-texlive/fonts/tfm/adobe/times/ jede menge .tfm.

Mir ist aber nicht klar, unter welchen Namen ich die laden kann.

mfg
Matthias
Maik Zumstrull
2008-02-13 21:45:25 UTC
Permalink
Post by Matthias Taube
Post by Matthias Taube
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Times-Roman}
\setsansfont{Helvetica}
\setmonofont{Courier}
Vielen Dank für Deine Hilfe, aber das funktioniert leider auch nicht.
Die Fonts findet er nicht.
Schade. Ich hatte gehofft, dass XeTeX und/oder fontspec für Base14
Fonts eingebaute Metriken hat und man die angeben kann, ohne
entsprechende pfb/afm rumliegen zu haben.
Post by Matthias Taube
Wie kann ich denn aus meinen Fonts-Verzeichnis auf die Namen der
Schriften schliessen?
Bei Type1 verrät dir ein grep FontName *.afm die PostScript-Namen.
Post by Matthias Taube
in /usr/share/texmf/fonts/type1/public/lm/ habe ich jede Menge
lm*.pfb dateien, in /usr/share/texmf/fonts/opentype/public/lm/
lmroman.otf und in /usr/share/texmf-texlive/fonts/tfm/adobe/times/
jede menge .tfm.
Mir ist aber nicht klar, unter welchen Namen ich die laden kann.
Vermutlich "gar nicht", weil der Schriftlademechanismus von fontspec
mit dem texmf relativ wenig zu tun hat. Alle Schriften, die der Befehl
"fc-list" findet, sollte auch fontspec finden.
Uwe Ziegenhagen
2008-02-13 04:14:50 UTC
Permalink
Post by Matthias Taube
Der Gedankenstrich wird normalerweise in Latex mit zwei minus -- erzeugt.
Wenn ich aber fontspec benutze und das u.a. Beispiel mit XeTeX
übersetze, wird aus dem - auch tatsächlich ein Minus-Zeichen, wie im
mathematischen Modus.
Das entsprechende Unicode-Zeichen wird richtig als Gedankenstrich gesetzt.
Wie bringe ich XeTeX nun dazu, einen Gedankenstrich zu erzeugen?
mfg
Matthias
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\title{TestTitle}
\begin{document}
Test
--

\end{document}
Eventuell hilft auch das

<http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=xetex_faq#ligs>

Uwe
Ulrike Fischer
2008-02-14 09:57:08 UTC
Permalink
Post by Matthias Taube
Der Gedankenstrich wird normalerweise in Latex mit zwei minus -- erzeugt.
Wenn ich aber fontspec benutze und das u.a. Beispiel mit XeTeX
übersetze, wird aus dem - auch tatsächlich ein Minus-Zeichen, wie im
mathematischen Modus.
Das entsprechende Unicode-Zeichen wird richtig als Gedankenstrich gesetzt.
Wie bringe ich XeTeX nun dazu, einen Gedankenstrich zu erzeugen?
Im Prinzip mit \defaultfontfeatures{Mapping=tex-text}. In der Praxis
scheitert das, weil die defaultmäßig von fontspec benutzen
lmodern-Schriften (otf-Version) aus deinem texmf-Baum bereits geladen
sind.
Man kann durch erneutes laden der Schriften das Mapping ändern:

\documentclass{scrreprt}
\usepackage{fontspec}
\usepackage{xunicode,xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{[lmroman10-regular]}
\setsansfont{[lmsans10-regular]}
%\setmonofont{[lmtypewriter10-regular]}
%\setmainfont{Times New Roman}


\title{TestTitle}
\begin{document}
Test
-- --- \sffamily Test -- \ttfamily --
\end{document}

Ärgerlich dabei ist bloß, dass man die korrekten Namen der Schriften
austüfteln muss (je nach Schriftgröße des Dokuments könnte es auch
lmroman12-regular sein), außerdem habe ich keine Ahnung, wie sich das
Verhalten bei Befehlen wie \huge oder \tiny auswirkt.

Ärgerlich ist auch, dass \addfontfeatures{Mapping=tex-text} bei den
lmodern-Schriften nicht funktioniert. Ich werde das mal auf der
Xetex-Listen diskutieren.
--
Ulrike Fischer
Matthias Taube
2008-02-14 20:05:27 UTC
Permalink
Post by Matthias Taube
\documentclass{scrreprt}
\usepackage{fontspec}
\usepackage{xunicode,xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{[lmroman10-regular]}
\setsansfont{[lmsans10-regular]}
%\setmonofont{[lmtypewriter10-regular]}
%\setmainfont{Times New Roman}
\title{TestTitle}
\begin{document}
Test
-- --- \sffamily Test -- \ttfamily --
\end{document}
Danke, damit funktioniert es.

mfg
Matthias Taube
Ulrike Fischer
2008-02-15 09:18:00 UTC
Permalink
Post by Matthias Taube
Post by Matthias Taube
\documentclass{scrreprt}
\usepackage{fontspec}
\usepackage{xunicode,xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{[lmroman10-regular]}
\setsansfont{[lmsans10-regular]}
%\setmonofont{[lmtypewriter10-regular]}
%\setmainfont{Times New Roman}
\title{TestTitle}
\begin{document}
Test
-- --- \sffamily Test -- \ttfamily --
\end{document}
Danke, damit funktioniert es.
Wenn du dir die neueste Version der lmmodern-Schriften holst + die
neueste Version von euenc (du musst beide gleichzeitig updaten!), dann
ist tex-text-Mapping defaultmäßig aktiviert. (Wenn du es z.B. für die
tt-Schrift nicht haben willst, musst du es mit
\setmonofont{[lmmono10-regular]} deaktivieren.)
--
Ulrike Fischer
Loading...