
Wie das folgende MCE zeigt, werden \textlangle
und \textrangle
korrekt mit pdflatex
+ angezeigt kpfonts
, aber nicht mit lualatex
+ kpfonts-otf
.
Der letztere Fall ist nicht so unerwartet, da Daniel Flipo, der Betreuer von kpfonts-otf
, mir sagte, dass diese Zeichen derzeit fehlen (er arbeitet daran). Aber was seltsam ist, ist, dass diese Zeichen mit xelatex
+ korrekt angezeigt werden kpfonts-otf
.
Wissen Sie, warum xelatex
sie erfolgreich angezeigt werden?
\documentclass{article}
\usepackage{iftex}
\ifpdftex
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\else
\usepackage{kpfonts-otf}
\fi
\begin{document}
\verb|$\langle\rangle$| $=\langle\rangle$
\verb|\textlangle\textrangle| $=$ \textlangle\textrangle
\end{document}
- Mit
pdflatex
- Mit
xelatex
- Mit
lualatex
Antwort1
\textlangle und \textrangle von LaTeX fügen standardmäßig die Unicode-Codepunkte U+2329 und U+232A ein. In Ihrer Schriftart sind diese Glyphen nicht vorhanden, aber die Unicode-Codepunkte U+3008 und U+3009 sind verfügbar. Laut Unicode-Datentabellen sind diese kanonisch äquivalent (was bedeutet, dass sie „immer genau gleich erscheinen“ sollten) zu U+2329 und U+232A, daher ersetzt HarfBuzz (von XeTeX verwendet und wenn von LuaTex ausdrücklich angefordert) diese. (Dies ist ein wenig problematisch, da U+3008 und U+3009 CJK-Zeichen sind und daher in vielen Schriftarten breiter sein können, aber das ist bei kpfonts kein Problem.)
Um auch in LuaTeX die richtigen Glyphen zu erhalten, können Sie HarfBuzz aktivieren oder ändern, welche Codepunkte LaTeX verwendet:
\documentclass{article}
\usepackage{iftex}
\ifpdftex
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\else
\usepackage{kpfonts-otf}
\DeclareTextSymbol{\textlangle}\UnicodeEncodingName{"3008}
\DeclareTextSymbol{\textrangle}\UnicodeEncodingName{"3009}
\fi
\begin{document}
\verb|$\langle\rangle$| $=\langle\rangle$
\verb|\textlangle\textrangle| $=$ \textlangle\textrangle
\end{document}
Antwort2
Das Luatex-Protokoll zeigt
Missing character: There is no 〈 (U+2329) in font [KpRoman-Regular.otf]:mode=n
Es funktioniert in Luatex, wenn Sie HarfBuzz verwenden (wie Xetex).
\documentclass{article}
\usepackage{iftex}
\ifpdftex
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\else
\usepackage{fontspec}
\ifluatex
\defaultfontfeatures{Renderer=HarfBuzz}
\fi
\usepackage{kpfonts-otf}
\fi
\begin{document}
\verb|$\langle\rangle$| $=\langle\rangle$
\verb|\textlangle\textrangle| $=$ \textlangle\textrangle
\end{document}
Theoretisch (aber anscheinend nicht in der Praxis) sollte U+2329 nicht verwendet werden, da es im CJK-Block eine unglückliche Unicode-Normalisierung auf eine spitze Klammer in voller Breite aufweist und U+27E8 speziell hinzugefügt wurde, um dieses Zeichen zu vermeiden.