PDFファイルがすべてのPDFビューアで機能しない理由は、次のとおりです。「zhang11a.pdf」にはすべてのフォントが埋め込まれているわけではありません。symbol
次のリストからわかるように、特にフォントが欠落しています。
kupfe @ abc:〜$ pdffonts zhang11a.pdf
名前タイプembsubuniオブジェクトID
-------------------------------- --------- --- --- --- ---------
NXDEKT+CMSY10タイプ1Cはいはいはい110
タイムズ-イタリックタイプ1いいえいいえいいえ100
タイムズ-ボールドタイプ1いいえいいえいいえ90
Times-Roman Type 1 no no no 8 0
UYBJCW+MSBM10タイプ1Cはいはいいいえ290
QEAPRL+CMR10タイプ1Cはいはいいいえ230
OBCIBS+CMMI10タイプ1Cはいはいはい250
シンボルタイプ1いいえいいえいいえ330
OUPZTL+ZapfChancery-MediumItalicタイプ1Cはいはいいいえ270
CFICWF+CMEX10タイプ1Cはいはいいいえ310
XRVDJC+CMMI7タイプ1Cはいはいいいえ560
JQSOYL+CMMI10タイプ1Cはいはいいいえ540
UWKDHL+CMBX10タイプ1Cはいはいいいえ580
AIYCES+CMMI5タイプ1Cはいはいいいえ600
SDIKLH+CMEX9タイプ1Cはいはいいいえ720
EKRXFC+CMSS10タイプ1Cはいはいいいえ840
宅配便タイプ1いいえいいえいいえ910
Helveticaタイプ1いいえいいえいいえ970
UELPFP+CMMI10タイプ1Cはいはいいいえ1350
VZIXBZ+CMR10タイプ1Cはいはいいいえ1330
これで、PDFリーダーが埋め込まれていないフォントに遭遇した場合、次のような戦略を使用します。それ...
- (1)....ローカルOSを検索し、テキストのレンダリングに使用するために、タイプと名前が一致するフォントを見つけようとします。それが成功しない場合、それは....
- (2)....ローカルOSを検索して、一致する名前のフォント(おそらく他のフォントタイプ)を見つけます。成功しなかった場合、それは....
- (3)....適切な代替フォントを検索します(元のフォントのメトリックに近いフォントメトリックがあります。フォントファイル自体がない場合でも、元のフォントのメトリック情報をPDFに埋め込む必要があります。 ); 成功しなかった場合は...
- (4)....
Courier
テキストのレンダリングに使用します。
あなたの問題の根本的な原因についての私の仮説は次のとおりです。
∑文字のグリフがttf-symbol-replacement
フォントにないか、このグリフがその置換フォントのグリフテーブルの別の場所にあります。
したがって、そのファイルを正しくレンダリングできなかったのはEvinceのせいではありません。
一方、Acrobat Readerには、Times、Courier、Helvetica、Symbolのアプリケーションが埋め込まれたインスタンスが付属しているため、このようなPDFをレンダリングできます。したがって、AcroReadはこのファイルに問題はありません。(そして、これらのフォントのライセンスのために、Evinceはそのようなトリックを使用できません...)
私の言葉に印を付けてください:すべてのタイプのOSシステムのすべてのPDFリーダーで正しくレンダリング(および印刷)できる絶対確実な
PDFファイル
が必要な場合は、PDFに使用するすべてのフォントが埋め込まれていることを確認してください!
zhang11a.pdfを修復する
ただし、Ghostscriptを使用して、問題のあるPDFを修復することは可能です。これを行うために、Ubuntu Oneiricシステム(Ghostscript v9.02を使用)でこのコマンドを使用しました。
/usr/bin/gs \
-o gs-repaired---zhang11a.pdf \
-dPDFSETTINGS=/prepress \
-sDEVICE=pdfwrite \
zhang11a.pdf
CLIパラメータの-dPDFSETTINGS=/prepress
一部は、Ghostscriptにすべての非埋め込みフォントを埋め込むように指示します。
修復されたPDFの埋め込み性のプロパティは次のようになります。
kupfe @ abc:〜$ pdffonts gs-repaired --- zhang11a.pdf
名前タイプembsubuniオブジェクトID
-------------------------------- --------- --- --- --- ---------
AFNVKD+Times-イタリックタイプ1Cはいはいいいえ120
PEQXED+CMSY10タイプ1Cはいはいはい140
FYXQNZ+Times-ローマンタイプ1Cはいはいいいえ80
XILTND+Times-太字タイプ1Cはいはいいいえ100
HZJMVE+シンボルタイプ1Cはいはいいいえ360
EGYAWT+CMR10タイプ1Cはいはいいいえ260
AQGZYJ+CMMI10タイプ1Cはいはいはい280
YJATHO+ZapfChancery-MediumItalicタイプ1Cはいはいいいえ300
CZXDRN+MSBM10タイプ1Cはいはいいいえ320
KTZJPT+CMEX10タイプ1Cはいはいいいえ340
NYTDMD+CMMI10タイプ1Cはいはいいいえ580
DFQTPB+CMMI7タイプ1Cはいはいいいえ600
GXJYGS+CMBX10タイプ1Cはいはいいいえ620
QAMUEV+CMMI5タイプ1Cはいはいいいえ640
QEWIFQ+CMEX9タイプ1Cはいはいいいえ760
KNOSJH+CMSS10タイプ1Cはいはいいいえ880
UCHHLK + CourierType1Cはいはいいいえ950
TWNVND + HelveticaType1Cはいはいいいえ1020
ZDIWNO+CMR10タイプ1Cはいはいいいえ1390
IGJFUT+CMMI10タイプ1Cはいはいいいえ1410
Evinceが修復されたPDFをどのようにレンダリングするかを確認しました。これで問題ありません。
アップデート:
MartinSchröderは、ISO PDF標準によると、「Base 14」PDFフォント(4つの「標準」、「イタリック」、「太字」、および「太字-斜体」のバリエーション)はどれもないと述べています。 Helveticaの場合、Times and Courier plus Symbol and Dingbats)を埋め込む必要があり、すべてのPDFビューアは、ファイルに埋め込まれていない場合でも、これらのフォントですべてのグリフをレンダリングする独自の手段を提供する必要があります。
実際には、この推奨事項に従うと、実際の生活で多くの問題が発生しました(たとえば、この質問で1つのケースが表示されます)。すべてのビューア、レンダラー、および自動PDFプロセッサが、埋め込まれていないフォントのグリフを確実にレンダリングするわけではないためです。これが、PDF / A(アーカイブ)およびPDF / X(ブラインドeXchange)の現在のすべてのISO標準で、すべてのフォント(「ベース14 」のフォントも含む)をPDFファイルに埋め込む必要がある理由です。それ以外の場合、そのファイルはそれぞれの標準に準拠しているとは見なされません。
そして、Ghostscriptコマンドの結果が示すように、Symbolフォントを埋め込むことで、Evinceの∑グリフレンダリングの問題を確実に回避できます。元のPDFを正しくレンダリングしないというEvinceのバグ(当然のことながら可能です)と考えても...