Ответ 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...