本地和单槽导向字体编码定义更改

本地和单槽导向字体编码定义更改

与“Ð vs Đ”相关:使用 newtx 从 PDF 复制 \pdfgentounicode 时出现错误映射

我甚至尝试更改为/Eth并使用和测试新的 MWE;从 PDF 复制内容的结果是预期的 - 除了 Eth 之外,一切都是正确的。/Dcroatlm-ec.enclmodern

我想过使用\pdfmapfile或类似的东西,但是在构建文件夹中,在源代码旁边有编码文件的本地修改副本(例如修改的lm-ec.enc,以及所用字体的任何其他相应的 T1(EC)编码文件)会产生想要的行为。

除了更改所用字体的整个核心字体编码定义文件(例如lm-ec.enc)或使用其进行此类更改的本地副本外,还有什么方法可以告诉您类似的事情:

  • 让当前字体的 208 号槽成为/Dcroat
  • 让所有字体的插槽 208 为/Dcroat

在序言中无需重新定义所有其他插槽(例如在内/enclmec[...] def)?

编辑:

我想/Dcroat在复制/粘贴操作(不是)时摆脱这个 MWE /Eth,重新定义字体编码定义文件中的一个插槽:208 - 因为冰岛语“Eth”(\DH)和克罗地亚语“带笔划的 D”(\DJ)都映射到它。

\documentclass{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[croatian]{babel}

\input{glyphtounicode}
\pdfgentounicode=1

\begin{document}

Đ % Croatian

% I understand that mapping of Icelandic Eth would also be affected with such change, have no problem with that

\end{document}

编辑2:我知道重新定义glyphtounicode\pdfglyphtounicode{Eth}{00D0}产生\pdfglyphtounicode{Eth}{0110}相同的效果,但我的目的是“早一步”进行干预。

答案1

这显然是 T1 编码的一个缺点,它使用一个字形来表示两者\DH(ETH) 和\DJ(D WITH STROKE)。不幸的是,该编码的定义早于基于 Unicode 的现代技术出现。

与更改编码文件相比,您可以更简单地修复此问题:

\documentclass{article}

%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[croatian]{babel}
\usepackage{lmodern}

\input{glyphtounicode}
\pdfgentounicode=1
\pdfglyphtounicode{Eth}{0110}

\begin{document}

Đ % Croatian

\end{document}

恐怕同时拥有这两个角色会显得复杂得多。

答案2

不确定这是否是你的问题,但是:

已经说了T1 encoding不支持Dcroat字符的字体。你可以更改.enc,但不建议这样做。

最近我创建了内容管理系统包。此包的目的是修复标准编码以支持塞尔维亚-克罗地亚语的特点,例如,在编码中使用西里尔字母Dcroat代替拉丁字母,或支持西里尔字母编码中未出现的马其顿字母等。EthJT2A

因此,对编码进行了修改,使T1支持Dcroat,并且TS1支持Eth,这样您就可以轻松获取这两个字符。

\documentclass{article}
\usepackage{cmsrb}
\usepackage[TS1,T1]{fontenc}
\input{glyphtounicode}
\pdfgentounicode=1

\begin{document}
\DJ                         % Dcroat
\UseTextSymbol{TS1}{\DH}    % Eth
\end{document}

不幸的是,没有其他字体支持该Dcroat字符(据我所知)。

相关内容