使用 ConTeXt 和 simplefonts 复制并粘贴小型大写字母

使用 ConTeXt 和 simplefonts 复制并粘贴小型大写字母

我正在尝试在 ConTeXt(mkiv - 版本 2015.05.18 12:26)中排版一些带有小型大写的文本,并让该文本可供复制和粘贴。

以下是最低限度有问题的设置:

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = ConTeXt (LuaTeX)
\usemodule[simplefonts]
\setmainfont[Warnock Pro]
\starttext
  \sc Hello.
\stoptext

ello部分不会按预期复制和粘贴(至少在 Mac 和 Windows 上显然如此,但我认为这是与系统无关的问题)。复制的内容显示为H.

所引用的 Warnock 字体是 OpenType 并且具有该smcp功能。

我希望这个问题可以通过\sc\setff{smallcaps}宏来解决。

除了手册之外,ConTeXtGarden 上还有许多看似适用的资源,但我读过的部分和做过的各种尝试都没有揭示根本原因,也没有指出解决方案或解决方法的适当途径。

这个网站上最热门的话题问题是什么?小型大写字母、旧式数字和一些连字符会在 PDF 复制文本中产生奇怪的符号吗?,建议使用 LuaTeX 来解决 XeLaTeX 的问题,但不清楚如何在 ConTeXt 中复制结果。

为方便参考,请参见:

答案1

所以这可能不是理想的答案,但我希望它能为未来的读者提供一些见解。

第一的,我的 Warnock Pro 版本(通过 Adob​​e Typekit)无法正确替换小写字母。它有这些字符,并且它们可以与 TextEdit 等原生 OS X 应用程序配合使用,但似乎它们无法与 LuaTeX/ConTeXt 正确配合使用。

值得庆幸的是,我有它的表亲 Minion Pro,并且它的小型大写字母替代品可以工作。

第二,即使使用 Minion Pro 进行替换,也必须以非常特殊的方式执行操作。例如,如果您使用 ,然后使用\MinionPro字体大小更改宏(例如 )\tfa,它似乎会破坏小写字母替换,并且复制粘贴将不再有效。

这是对我有用的命令:

定义字体

\setmainfont[Warnock Pro]
\definefont[Minion][minionprodisp at 12pt]
\definefontfeature[f:smallcaps][always][smcp=yes, tlig=yes, trep=yes]

使用字体

This text is in Warnock.
{\Minion\addfeature{f:smallcaps}This is in Small Caps}

这足以满足我的需要,但我欢迎一个更好的答案来解释为什么替换会失败以及如何更好地确保它们按预期运行。

第三,我强烈鼓励阅读字体-mkiv.pdf:Hans Hagen 撰写的“脱离语境的字体:解释 luatex 和 mkiv”。它非常详细地说明了字体替换的工作原理。“§5.2.3 主要类别”一节介绍了字形替换,但搜索“小型大写字母”会发现更多相关点。

最后,这是Dropbox 链接分享我的部分实验。有两个 PDF 文件,ExampleFromTextEdit.pdfSmallCapsWarnock.pdf,分别说明了复制和粘贴在 TextEdit 创建的 PDF 中有效,而在 ConTeXt 创建的 PDF 中无效。如果有人逆向工作以识别 ConTeXt 中小写字母的问题映射,这两个文件之间的比较可能会有所启发。

相关内容