![XeLaTeX + fontspec + StylisticSet 更改文本中底层的 Unicode 字符](https://linux22.com/image/473054/XeLaTeX%20%2B%20fontspec%20%2B%20StylisticSet%20%E6%9B%B4%E6%94%B9%E6%96%87%E6%9C%AC%E4%B8%AD%E5%BA%95%E5%B1%82%E7%9A%84%20Unicode%20%E5%AD%97%E7%AC%A6.png)
我最近尝试了一下某些字体中针对某些字符的孤立变体的 OpenType 功能——当我制作一个包含、等字符的文档s
并t
设置g
适当的功能将其外观更改为孤立形状时,在复制文本并编译 PDF 后,我得到的是孤立的 Unicode 字符,即ꞅ
、ꞇ
、ᵹ
。
我猜这与字体中那些变体形状也被分配给那些 Unicode 代码点有关(因此 fontspec 不仅仅改变文本的外观,而且基本上改变底层文本以使用它们?或者更确切地说从字体中选择正确的形状,但在 PDF 的 ToUnicode 映射中仅将它们映射到专用的 Insular 代码点?)。
这很烦人,因为它使 PDF 更难搜索(使用普通的 s、t、g... 不起作用)。
有没有办法解决这个问题,在显示替代形状时强制保留底层 Unicode 值?
使用 Junicode 2.206 字体的示例:
\documentclass[11pt, a4paper]{article}
\usepackage[top=0.3in,right=0.8in,left=0.8in,bottom=0.3in]{geometry}
\usepackage{fontspec}
\usepackage[irish]{babel}
\setmainfont{Junicode}[
ItalicFont={*-Italic},
Language=Irish,
]
\begin{document}
\addfontfeature{StylisticSet=2}%
Aséidir go reiċ os̅ siolla do ċur accoṁḟoc̅ ⁊ ni cóir ni as sía ina sin do cur
an̅ mͧ atá so leaḋb ⁊ breab ⁊ sgíos ⁊ {\addfontfeature{CharacterVariant=10:4} seng}
⁊ geal ⁊ dlúiṫ ⁊ dos ⁊ tioġ Leiḋbreipsgiseingeallútoisdioġ
As lor liom ꝗ laḃrꝫ de sin.
\end{document}
当我用 XeLaTeX 编译它时,我得到了预期的漂亮的 Insular 字母:
但是当我从 PDF 复制文本时,我得到:
Aꞅéidiꞃ ᵹo ꞃeiċ oꞅ̅ ꞅiolla do ċuꞃ accoṁḟoc ⁊ ni cóiꞃ ni aꞅ ꞅía ina ꞅin do cuꞃ an̅ mͧ aꞇá ꞅo leaḋb ⁊ bꞃeab ⁊ ꞅᵹíoꞅ ⁊ ꞅenᵹ ⁊ ᵹeal ⁊ dlúiṫ ⁊ doꞅ ⁊ ꞇioġ Leiḋbꞃeipꞅᵹiꞅeinᵹeallúꞇoiꞅdioġ Aꞅ loꞃ liom ꝗ拉赫曼·德·金。
而不是预期的:
在我死后,我们不再相信上帝,因为我们是罪孽深重的,所以我要离开他, ...