填写PDF表格时的字体间距不正确。

我正在填写这个PDF表格,IRS Form 1040,在Ubuntu 20.04上的evince 3.36.7中遇到了一个问题,我输入的数字与背景条不对齐。请看这个截图:Form 1040, DejaVu 在被填充为123456789的方框中,正确的显示应该是123|45|6789,但是5几乎被推到了第二个竖线的右边。数字之间的间距比表格创建者预期的要宽得多。
看起来这个方框被分配了Helvetica LT Std Bold字体,但是我没有这个字体。Ubuntu用DejaVu Sans Bold替代了它。
我安装了MS Core Fonts,并通过编辑fonts.conf文件将替代字体改为Arial Bold。然而,间距并没有改变。(未显示截图。)
我还尝试在Firefox、Chrome和Okular中填充并呈现表格,但它们都有相同的间距问题。
我认为这个问题与这些帖子中报告的问题有着同样的根源。 PDF表单上字母位置错误和字体错误字体呈现出破碎的紧缩 那里的问题几年来一直没有得到解决,看起来很难解决。
我想知道这个特定的PDF表单是否有任何解决方法。 是否可能指定替换字体大小(以补偿过于宽敞的间距)? 有哪个PDF阅读器可用? 应该购买字体吗?
Windows 和 Mac 没有这个问题吗?(如果是这样为什么?这不本质上是一个字体问题吗?我猜 Helvetica LT 在许多 Windows 或 Mac 计算机上可能不可用)。 如果它们可以使用,winevirtualbox 可以工作吗?

编辑

PDF中使用的字体如下所示。其中,输入字段的字体为Zapf DingbatsHelveticaHelvetica LT Std Bold。我相信问题中的数字是Helvetica LT Std Bold

$ pdffonts f1040_ssn_sample.pdf 
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
WVBKSB+UniversalStd-NewswithCommPi   CID Type 0C       Identity-H       yes yes yes   1193  0
XULQGZ+ZapfDingbatsStd               CID Type 0C       Identity-H       yes yes yes   1198  0
TGPSCH+HelveticaNeueLTStd-Roman      Type 1C           WinAnsi          yes yes no    1200  0
ZHOHIV+HelveticaNeueLTStd-BlkCn      Type 1C           WinAnsi          yes yes no    1202  0
XEPVGZ+HelveticaNeueLTStd-BdOu       Type 1C           WinAnsi          yes yes no    1204  0
XEPVGZ+HelveticaNeueLTStd-Blk        Type 1C           WinAnsi          yes yes no    1206  0
CEYUYP+ITCFranklinGothicStd-Demi     Type 1C           WinAnsi          yes yes no    1208  0
UXBDQF+HelveticaNeueLTStd-Bd         Type 1C           WinAnsi          yes yes no    1210  0
UXBDQF+HelveticaNeueLTStd-BdCn       Type 1C           WinAnsi          yes yes no    1212  0
ATBIWT+HelveticaNeueLTStd-It         Type 1C           WinAnsi          yes yes no    1214  0
Helvetica                            Type 1            WinAnsi          no  no  no     143  0
HelveticaLTStd-Bold                  Type 1            WinAnsi          no  no  no     144  0
ZapfDingbats                         Type 1            ZapfDingbats     no  no  no    1114  0
ZHOHIV+AdobePiStd                    CID Type 0C       Identity-H       yes yes yes     69  0
2个回答

发现一个非常相似的问题是fontconfig的一个错误,并且在Ubuntu 21.04upstream中得到了修复。
因此,在20.04上,可能只需要打开/etc/fonts/conf.avail/45-latin.conf进行编辑并添加此片段即可:
<alias>
    <family>Courier Std</family>
    <default><family>monospace</family></default>
</alias>

谢谢,但是这个表格不使用Courier字体。我编辑了我的问题,并添加了在PDF中使用的所有字体的完整列表。 - norio
@norio:抱歉,我没有仔细阅读问题。但是话虽如此,应该有一些可用的替代字体可以通过fontconfig指定。不过我无法确定具体是哪一个。 - Gunnar Hjalmarsson
1我尝试用Arial和Nimbus Sans替换Helvetica LT,但都没有成功。我了解到Helvetica与Arial和Nimbus Sans在度量上是兼容的,并且我相信Helvetica LT本质上与Helvetica是相同的。所以,看起来这个问题不仅仅是缺少字体。我怀疑Form 1040的社会安全号码框有一个字体对齐或间距规范,evince或其后端渲染引擎没有正确处理。 - norio

一种可能适合你的选择是获取Helvetica的.dfont文件副本,将其转换为.ttf格式,并将其复制到字体目录中。
大致步骤如下:
  1. 安装fondu
    sudo apt install fondu
    
  2. 从这个有用的GitHub存储库下载Helvetica.dfont文件
  3. 转换字体:
    fondu Helvetica.dfont
    
  4. 使用FontViewer应用程序打开生成的.ttf文件。最简单的方法是在Nautilus中双击字体文件。
  5. 点击右上角的“安装”按钮
希望这样能给你一个更加间隔合理的字体。