CUPS/texttopdf 和“Noto” truetype 字体的问题

CUPS/texttopdf 和“Noto” truetype 字体的问题

我遇到了一个问题文本转PDFCUPS 过滤器。

当我尝试打印纯 ASCII 文件(如“Hello world”)时,文本转PDF中止:

D [17/May/2020:11:48:37 -0700] [Job 513] Sending data to printer.
D [17/May/2020:11:48:37 -0700] [Job 513] Set job-printer-state-message to "Sending data to printer.", current level=INFO
D [17/May/2020:11:48:37 -0700] [Job 513] Unsupported OTF font / glyf table 
D [17/May/2020:11:48:37 -0700] [Job 513] Brother-HL-1240-series: fontembed/sfnt.c:651: otf_get_width: Assertion `0\' failed.
D [17/May/2020:11:48:37 -0700] [Job 513] PID 1520973 (/usr/lib/cups/filter/texttopdf) crashed on signal 6.
D [17/May/2020:11:48:37 -0700] [Job 513] Input is empty, outputting empty file.

经过大量的侦查工作,我发现如果我禁用“noto”(No Tofu)真型字体,通过将它们移出/usr/share/fonts/truetype,问题就消失了。

然而,音频编辑器大胆当我这样做时就会挂起(不要问我为什么),而且由于我做了大量的音频编辑,更不用说“解决方案”实际上不是一个解决方案,简单地删除“noto”字体并不是一个可接受的解决方案。

我到处寻找配置文件或类似的东西,但至今一无所获。

这是在 Ubuntu 20.04 上。

apt-show-versions 告诉我:

杯子:amd64/focal-security 2.3.1-9ubuntu1.1 最新

cups-filters:amd64/focal 1.27.4-1 最新

如果你感兴趣的话。

进一步的信息:如果我调用文本转PDF从命令行,它生成一个有效的 PDF 作为对我的努力的奖励,因此它似乎是所涉及的 CUPS 过滤器/工具链中的某些东西。

答案1

问题显然出在“noto”字体之一上,NotoColorEmoji, 和文本转PDF被它噎住了。

我通过创建文件解决了这个问题/etc/fonts/local.conf并添加行

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <selectfont>
    <rejectfont>
      <glob>/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf</glob>
    </rejectfont>
  </selectfont>
</fontconfig>

然后运行fc-缓存-f-v重建字体缓存。

这将禁用有问题的字体,一切就都好了。

顺便说一句,功劳归功劳:参见https://unix.stackexchange.com/questions/534284/reject-all-fonts-from-a-directory-except-one-with-fontconfig

进一步说明:

我决定下载杯形过滤器并且中止确实是库中的一个断言库字体嵌入在函数中otf_get_width,此处摘录:

  // ensure hmtx is there
  if (!otf->hmtx) {
    if (otf_load_more(otf)!=0) {
      assert(0);
      return -1;
    }
  }

谢什。 。 。

答案2

似乎我不被允许发表评论。但我建议你提交错误报告。我在最新版本的 kubuntu 21.10 中看到了这个问题(所以我猜是在 ubuntu 中)。

我会针对 kubuntu(或您的发行版)提出这个问题,如果这不是发行版特有的问题,他们可以将其弹回 cups/cups-filter .... 我猜他们可能会反过来将其推给字体开发人员。它需要一个错误编号。

相关内容