Средство просмотра PDF "Evince" в Linux не может отображать некоторые математические символы правильно

Я использую Evince для просмотра файлов PDF на Ubuntu Linux 10.04. Но иногда программа не может отображать математические символы правильно.

Пример. Файл PDF можно загрузить с помощью:

См. уравнение (1).

В Windows уравнение правильно отображается в Acrobat Reader: enter image description here Но в Linux \sum отображается как сплошная точка: enter image description here

Я уже установил пакеты: ttf-symbol-replacement, libpoppler5, poppler-data.

Ответ 1

Причина, по которой ваш PDF файл не работает во всех программах просмотра PDF, таков: у вашего "zhang11a.pdf" нет встроенных шрифтов. Особенно отсутствует шрифт symbol, как вы можете видеть из следующего списка:

[email protected]:~$ pdffonts zhang11a.pdf 
name                             type      emb sub uni object ID
-------------------------------- --------- --- --- --- ---------
NXDEKT+CMSY10                    Type 1C   yes yes yes     11  0
Times-Italic                     Type 1    no  no  no      10  0
Times-Bold                       Type 1    no  no  no       9  0
Times-Roman                      Type 1    no  no  no       8  0
UYBJCW+MSBM10                    Type 1C   yes yes no      29  0
QEAPRL+CMR10                     Type 1C   yes yes no      23  0
OBCIBS+CMMI10                    Type 1C   yes yes yes     25  0
Symbol                           Type 1    no  no  no      33  0
OUPZTL+ZapfChancery-MediumItalic Type 1C   yes yes no      27  0
CFICWF+CMEX10                    Type 1C   yes yes no      31  0
XRVDJC+CMMI7                     Type 1C   yes yes no      56  0
JQSOYL+CMMI10                    Type 1C   yes yes no      54  0
UWKDHL+CMBX10                    Type 1C   yes yes no      58  0
AIYCES+CMMI5                     Type 1C   yes yes no      60  0
SDIKLH+CMEX9                     Type 1C   yes yes no      72  0
EKRXFC+CMSS10                    Type 1C   yes yes no      84  0
Courier                          Type 1    no  no  no      91  0
Helvetica                        Type 1    no  no  no      97  0
UELPFP+CMMI10                    Type 1C   yes yes no     135  0
VZIXBZ+CMR10                     Type 1C   yes yes no     133  0

Теперь, если читатель PDF встречает шрифт, который не внедрен, он использует стратегию, аналогичную следующей. Это...

  • (1).... ищет локальную ОС и пытается найти шрифт с подходящим типом и именем, чтобы использовать его для рендеринга текста; если это не удастся, это...
  • (2).... ищет локальную ОС, чтобы найти шрифт с соответствующим именем (возможно, другим типом шрифта); если не удастся, то он....
  • (3).... ищет подходящий шрифт-заменитель (который имеет метрику шрифта, близкую к метрикам исходного шрифта - исходная информация о метрике шрифта должна быть встроена в PDF файл, даже если сам файл шрифта нет); если не удастся, тогда...
  • (4).... используйте Courier для рендеринга текста.

Моя гипотеза для основной причины вашей проблемы:

Символ для & sum; символ отсутствует в вашем шрифте ttf-symbol-replacement, или этот глиф находится в другом месте в таблице замены шрифта замены.

Следовательно, это не ошибка Evince за то, что вы не смогли правильно отобразить этот файл.

С другой стороны, Acrobat Reader поставляется с приложениями встроенных экземпляров Times, Courier, Helvetica и Symbol, чтобы он мог отображать такие PDF файлы. Поэтому у AcroRead нет проблем с этим файлом. (И Evince не может использовать такие трюки из-за лицензий этих шрифтов...)

Отметьте мои слова:
Если вам нужны надежные PDF файлы, которые могут быть отображены (и напечатаны) правильно для каждого PDF-читателя на всех типах систем ОС, убедитесь, что ваш PDF-код вложил все используемые шрифты!

Восстановление zhang11a.pdf

Тем не менее, можно восстановить ваш проблемный PDF файл с помощью Ghostscript. Я использовал эту команду в системе Ubuntu Oneiric (которая использует Ghostscript v9.02) для этого:

/usr/bin/gs \
  -o gs-repaired---zhang11a.pdf \
  -dPDFSETTINGS=/prepress \
  -sDEVICE=pdfwrite \
   zhang11a.pdf 

Часть параметров CLI -dPDFSETTINGS=/prepress сообщает Ghostscript для встраивания всех не встроенных шрифтов.

Таким образом, свойство встроенного свойства восстановленного PDF теперь выглядит следующим образом:

[email protected]:~$ pdffonts gs-repaired---zhang11a.pdf
name                             type      emb sub uni object ID
-------------------------------- --------- --- --- --- ---------
AFNVKD+Times-Italic              Type 1C   yes yes no      12  0   
PEQXED+CMSY10                    Type 1C   yes yes yes     14  0   
FYXQNZ+Times-Roman               Type 1C   yes yes no       8  0    
XILTND+Times-Bold                Type 1C   yes yes no      10  0   
HZJMVE+Symbol                    Type 1C   yes yes no      36  0   
EGYAWT+CMR10                     Type 1C   yes yes no      26  0   
AQGZYJ+CMMI10                    Type 1C   yes yes yes     28  0   
YJATHO+ZapfChancery-MediumItalic Type 1C   yes yes no      30  0   
CZXDRN+MSBM10                    Type 1C   yes yes no      32  0   
KTZJPT+CMEX10                    Type 1C   yes yes no      34  0   
NYTDMD+CMMI10                    Type 1C   yes yes no      58  0   
DFQTPB+CMMI7                     Type 1C   yes yes no      60  0   
GXJYGS+CMBX10                    Type 1C   yes yes no      62  0   
QAMUEV+CMMI5                     Type 1C   yes yes no      64  0   
QEWIFQ+CMEX9                     Type 1C   yes yes no      76  0   
KNOSJH+CMSS10                    Type 1C   yes yes no      88  0   
UCHHLK+Courier                   Type 1C   yes yes no      95  0   
TWNVND+Helvetica                 Type 1C   yes yes no     102  0  
ZDIWNO+CMR10                     Type 1C   yes yes no     139  0  
IGJFUT+CMMI10                    Type 1C   yes yes no     141  0  

Я проверил, как Evince отображает восстановленный PDF файл: теперь это нормально.


Обновление:

Мартин Шредер прав, заявив, что - согласно стандарту ISO PDF - ни один из PDF-шрифтов Base 14 '(которые являются стандартными 4', 'курсивом', 'жирным' и 'жирным шрифтом' italic 'для Helvetica, Times и Courier plus Symbol и Dingbats), и что все зрители в формате PDF должны предоставлять свои собственные средства для отображения всех глифов в этих шрифтах даже в случае, если они не внедряются в файл.

В действительности, эта рекомендация привела к множеству проблем в реальной жизни (например, один случай демонстрируется в этом самом вопросе): поскольку не все зрители, рендеринги и автоматические PDF-процессоры надежно отображают глифы для незакрепленных шрифты. И для того, чтобы все современные стандарты ISO для PDF/A (архивирование) и PDF/X (слепой eXchange) требовали вставлять все шрифты (даже "Base 14", ) в файлах PDF. В противном случае этот файл не считается соответствующим стандарту.

И как показывает мой результат команды Ghostscript: вложение шрифта Symbol надежно избегает & sum; проблема с отображением глифов для Evince. Даже если вы считаете, что это ошибка Evince (что вы по праву можете), что она неправильно отображает оригинальный PDF...

Ответ 2

Похож на ошибку в (сейчас двухлетнем возрасте) в Ubuntu 10.4. Или обновите Ubuntu или файл с помощью Ubuntu.