Я использую Ubuntu 18.04 и заполняю SS-5 Social Security Administration form. Однако некоторые буквы расположены неправильно.
Evince 3.28.2-1:
Okular 1.3.3 (версия Ubuntu 4:17.12.3-0ubuntu1):
xpdf 3.04-7:
mudpdf 1.12.0:
Встроенная программа чтения PDF для Firefox 59.0.2:
Встроенная программа чтения PDF для Chromium 65. 0.3325.181:
Вот вывод 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 или куда-то еще?
Обновление: сообщения об ошибках:
Edit: Обходной путь от @xiota вполне работоспособен. Однако, это все еще ошибка в poppler, потому что когда программа просмотра PDF подставляет другой шрифт из-за того, что оригинальный не был встроен, интервал в форме XFA должен соответствовать подставленному шрифту, а не оригинальному. Существует pull request для исправления этой проблемы, который в настоящее время находится в процессе выполнения. Разработчик Poppler Тобиас Деймингер (@haxtibal) описал подход в другом сообщении об ошибке:
Стратегия заключается в том, что если шрифт не встроен, собираются и используются метрики от фактического заменяющего шрифта вместо метрик из дескриптора шрифта PDF или жестко закодированных.
Эта проблема должна быть исправлена в следующей версии Ubuntu (21.04). Существует также запрос на слияние исходного потока fontconfig #128.
Проблема, которую вы наблюдаете, вызвана неправильной заменой шрифта. На моем компьютере CourierStd и ZapfDingbats заменены на Ubuntu. Это, очевидно, не будет отображаться должным образом.
Чтобы это исправить:
Установите fonts-urw-base35
. Это должно исправить дингбаты и большинство других замен шрифтов в формате PDF. Однако подстановка CourierStd не исправлена, поскольку ее нет в файлах конфигурации.
Чтобы исправить CourierStd, создайте файл ~/.config/fontconfig/conf.d/10-pdf-aliases.conf
со следующим содержимым:
<настройка шрифта>
<псевдоним связывания="то же самое">
Курьер Std
<принять>
Курьер
принять>
псевдоним>
<псевдоним>
Курьер Std
моноширинный
псевдоним>
Затем запустите fc-cache
(может и не понадобиться).
При необходимости вы можете добавить в файл другие псевдонимы шрифтов.
См. также: