newpxtext
在 Unicode 引擎下使用。使用\scshape\bfseries\itshape
,小写字母i
变为
而\scshape\itshape
它只是
正如预期的那样。这是设计使然还是一个错误?有没有办法让无点“我“当其以粗体显示时?
下面是一个 MWE。要重现该问题,需要使用xelatex
或进行编译lualatex
。添加了一些替代方法以供比较,您可以取消注释它们以进行替换\usepackage{newpxtext}
以查看效果。
\documentclass{article}
\usepackage{newpxtext}
% \usepackage[type1]{newpxtext}
% \usepackage{fontspec}
% \setmainfont{Palatino Linotype}
% \usepackage[T1]{fontenc}
% \usepackage{tgpagella}
\begin{document}
abcdefghijk
{\scshape\itshape i \i}
{\scshape\bfseries\itshape i \i}
{\scshape\bfseries i \i}
\end{document}
预期结果:
目前结果:
答案1
我\showtokens\expandafter{\fontname\font}
在产生可疑输出的行中的右括号之前执行了此操作。控制台上的答案是
> "[TeXGyrePagellaX-BoldItalic.otf]/OT:script=latn;language=dflt;-ss05;+tnum;+lnum;+smcp;+pcap;mapping=tex-text;" at 10.0pt.
所以我准备了一个普通 XeTeX 的测试文件
\font\testit="[TeXGyrePagellaX-Italic.otf]/OT:script=latn;language=dflt;-ss05;+tnum;+lnum;+smcp;+pcap;mapping=tex-text;" at 10.0pt
\font\testbf="[TeXGyrePagellaX-Bold.otf]/OT:script=latn;language=dflt;-ss05;+tnum;+lnum;+smcp;+pcap;mapping=tex-text;" at 10.0pt
\font\testbfit="[TeXGyrePagellaX-BoldItalic.otf]/OT:script=latn;language=dflt;-ss05;+tnum;+lnum;+smcp;+pcap;mapping=tex-text;" at 10.0pt
\testit
aiqRr
\testbf
aiqRr
\testbfit
aiqRr
\bye
输出为
抱歉,bug。如果我换language=dflt
到language=TRK
队列中\testbfit
,我会得到
这表明字体维护者混淆了一些东西,因为language=TRK
应该出现点。
答案2
可能对你有用的替代方案可能是:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tgpagella}
\begin{document}
{\scshape\itshape i}
{\scshape\bfseries\itshape i}
\end{document}
或者
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}