使用宪章字体从 PDF 中复制捷克字符

使用宪章字体从 PDF 中复制捷克字符

我希望能够从 PDF 中复制捷克字符,但由于某种原因,它不起作用。

这是我的代码:

\usepackage{cmap}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{charter}

如果我写例如日延(十月:),PDF 中的文本很好,但当我尝试将其复制到某处时,我得到了ˇríjen. (所有带有 ˇ 的字符都相同)。

如果我将其更改\usepackage{charter}\usepackage{tgtermes},字符 ř 就可以了。但我想使用 charter 字体,因为它看起来更好,但我需要能够复制捷克字符。

我怎样才能通过宪章实现复制捷克字符?

答案1

TeX Gyre Termes 中的字符是“真实的”字形,也就是说,它们是完全预先组合的。

在 Charter 中,重音符号是通过在字母上添加重音符号来实现的。这是通过虚拟字体实现的,因此 TeX 在尝试连字时不会感到困惑,但最终输出仍然具有组合的符号。

要么你找到一个具有预制字形的 Charter 字体,要么对此无能为力。

这是虚拟字体定义中的条目bchr8t,即请求 Charter 时使用的文本字体,用于八进制字符 260,在 T1 编码中对应于“ř”:

(CHARACTER O 260
   (CHARWD R 0.382)
   (CHARHT R 0.741)
   (MAP
      (PUSH)
      (MOVEDOWN R -0.01)
      (MOVERIGHT R -0.059)
      (SETCHAR O 20)
      (POP)
      (SETCHAR C r)
      )
   )

这清楚地显示了字形是由两部分组成的:重音符号(八进制 20)和“r”。

答案2

这可以通过改变虚拟字体来实现,把重音基本字母,而不是在它之前,并且......

(CHARACTER O 260
   (CHARWD R 0.382)
   (CHARHT R 0.741)
   (MAP
      (PUSH)
      (SETCHAR C r)
      (POP)
      (MOVEDOWN R -0.01)
      (MOVERIGHT R -0.059)
      (SETCHAR O 20)
      )
   )

...确保重音符号映射到 Unicode 组合重音符:

\pdfglyphtounicode{caron}{030C}

完整流程如下:

vftovp bchr8t.vf > bchr8t.vpl
    edit bchr8t.vpl to modify all composed accented characters as above
vptovf bchr8t.vpl
    move the resulting files  bchr8t.vf  and   bchr8t.tfm  to where you want them in a local place,  such as  texmf-local  in the TeX directory tree
    Rebuild the database;  e.g.  texhash 

对粗体和斜体样式执行相同的操作。

相关内容