我正在使用 Ubuntu 18.04 并填写SS-5 社会保障管理表格。但是,有些字母的位置错误。
证据 3.28.2-1:
Okular 1.3.3(Ubuntu 版本 4:17.12.3-0ubuntu1):
xpdf 3.04-7:
泥浆pdf 1.12.0:
Firefox 59.0.2 的内置 PDF 阅读器:
Chromium 65.0.3325.181 的内置 PDF 阅读器:
这是输出pdffonts
:
$ pdffonts ss-5.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
IHPIKC+ArialMT CID TrueType Identity-H yes yes yes 824 0
ArialMT TrueType WinAnsi no no no 826 0
Arial-BoldMT TrueType WinAnsi no no no 828 0
CourierStd Type 1 WinAnsi no no no 145 0
Helvetica Type 1 WinAnsi no no no 197 0
MyriadPro-Regular Type 1 WinAnsi no no no 198 0
ZapfDingbats Type 1 ZapfDingbats no no no 199 0
我已经安装了ttf-mscorefonts-installer
和poppler-data
包。
以下是我的问题:
我可以更改用于填写表格单元格的字体吗?
似乎 Evince 和 xpdf 在应该使用等宽字体时使用了可变宽度字体,这可能是导致定位问题的原因。
如果我要提交错误报告,我应该将其作为 poppler 问题、fontconfig 问题还是其他地方提交?
更新:错误报告:
编辑:@xiota 的解决方法非常实用。但是,这仍然是 poppler 中的一个错误,因为当 PDF 查看器由于未嵌入原始字体而替换为不同的字体时,XFA 表单中的间距应该匹配替换的字体,而不是原始字体。有一个拉取请求来解决这个问题,目前正在进行中。Poppler 开发人员 Tobias Deiminger (@haxtibal) 在另一份错误报告中描述了该方法:
那里的策略是,如果没有嵌入字体,则收集和使用来自实际替代字体的度量,而不是来自 PDF 字体描述符或硬编码的度量。
这个问题应该在下一个版本的 Ubuntu (21.04)中修复。还有一个上游 fontconfig 合并请求#128待处理。
您观察到的问题是由不正确的字体替换引起的。 在我的电脑上,CourierStd 和 ZapfDingbats 被替换为 Ubuntu。这显然不会正确渲染。
要纠正这一点:
安装
fonts-urw-base35
. 这应该更正 Dingbats 和大多数其他 pdf 字体替换。但是,CourierStd 替换并不固定,因为它不在配置文件中。要更正 CourierStd,请创建
~/.config/fontconfig/conf.d/10-pdf-aliases.conf
包含以下内容的文件:然后运行
fc-cache
(可能没有必要)。您可以根据需要将其他字体别名添加到文件中。
也可以看看: