夜雨聆风学习资料网

ARTICLE · 1163999

统信 UOS 里 PDF 数字变成"口口"?一招彻底解决

统信 UOS 里 PDF 数字变成"口口"?一招彻底解决

一、问题现象

把电脑换成统信 UOS 后,用 JOPDF 打开一些公文 PDF,出现了这样的画面:

汉字都能正常显示,唯独数字全部变成方框——"口口口口年口口月口口日",11 位电话号码成了一眼"口口口口口口口口口口口"。

换 WPS 或浏览器打开同一个文件,数字又完全正常。

既不是文件坏了,也不是软件坏了,而是字体问题。

二、原因:字体没嵌入,软件又找不到

这类公文 PDF 在排版时,数字通常用的是 Times New Roman、Arial 这类西文字体。生成 PDF 的单位没有把字体"嵌入"文件,只是在文件里写了一句"这里请用 Times New Roman 显示"。

于是打开这个 PDF 的软件,就得自己在电脑里找一款 Times New Roman 来替它显示:

  • WPS、浏览器等
    :走系统字体机制,能找到我们装在用户目录(~/.local/share/fonts)里的字体,所以显示正常;
  • JOPDF
    :只扫描系统字体目录(/usr/share/fonts 等),不去读用户字体目录。找不到对应字体,数字就只能显示成方框。

这也解释了一个常见误区:很多人把字体拷进用户字体目录后,JOPDF 依然不显示——因为放的目录不是它要找的那个。

三、解决办法:把字体装到系统目录

在终端执行下面这一行(整行复制,终端里用 Ctrl+Shift+V 粘贴后回车),中途输入一次管理员密码:

sudo mkdir -p /usr/share/fonts/truetype/winfonts && sudo cp "$HOME/.local/share/fonts/Times New Roman/"*.ttf "$HOME/.local/share/fonts/Arial/"*.ttf /usr/share/fonts/truetype/winfonts/ && sudo chmod 644 /usr/share/fonts/truetype/winfonts/* && sudo fc-cache -fv && fc-list | grep -i "Times New Roman"

最后一行如果能列出 Times New Roman,说明安装成功。

然后完全退出 JOPDF(别忘了后台进程)再重新打开 PDF,数字就正常了。此后所有同类公文 PDF 都能直接显示。

四、更省事:一次把所有字体都装好

公文里"漏装"的字体不止 Times New Roman,仿宋_GB2312、楷体_GB2312、黑体、宋体都可能遇到。与其一个个拷,不如把平时下载的字体一条命令全装进去:

sudo mkdir -p /usr/share/fonts/truetype/winfonts && sudo find "$HOME/.local/share/fonts" "$HOME/.fonts" -maxdepth 3 -type f \( -iname "*.ttf" -o -iname "*.ttc" -o -iname "*.otf" \) -exec cp -f {} /usr/share/fonts/truetype/winfonts/ \; && sudo chmod 644 /usr/share/fonts/truetype/winfonts/* && sudo fc-cache -fv

它会把用户字体目录下的所有字体复制到系统字体目录并刷新缓存,之后 JOPDF 基本不会再缺字。

再进一步,做成脚本,以后一行调用。把下面内容保存为 安装字体.sh(放在桌面即可):

#!/bin/bash # 安装字体.sh —— 把用户字体目录里的字体装到系统字体目录 sudo mkdir -p /usr/share/fonts/truetype/winfonts sudo find "$HOME/.local/share/fonts" "$HOME/.fonts" -maxdepth 3 -type f \   \( -iname "*.ttf" -o -iname "*.ttc" -o -iname "*.otf" \) \   -exec cp -f {} /usr/share/fonts/truetype/winfonts/ \; sudo chmod 644 /usr/share/fonts/truetype/winfonts/* sudo fc-cache -fv echo "安装完成,请完全退出后重新打开 JOPDF"

以后遇到重装系统、换新电脑,终端里执行一句 bash ~/Desktop/安装字体.sh,一次性搞定,不用再记命令。

相关学习资料