16

Evinceを使用して、Ubuntu Linux 10.04 で PDF ファイルを表示します。しかし、プログラムが数学記号を正しく表示できないことがあります。

例。PDFファイルは以下からダウンロードできます。

式 (1) を参照してください。

Windows では、式は Acrobat Reader で正しく表示されますが ここに画像の説明を入力 、Linux では、\sumは塗りつぶされたドットとして表示されます。 ここに画像の説明を入力

既にパッケージをインストールしています: ttf-symbol-replacementlibpoppler5poppler-data

4

2 に答える 2

37

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には、TimesCourierHelveticaSymbolのアプリケーションが埋め込まれたインスタンスが付属しているため、このような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のバグ(当然のことながら可能です)と考えても...

于 2012-04-23T14:12:41.557 に答える
-2

Ubuntu 10.4 の (現在は 2 年前の) エビデンスのバグのようです。Ubuntu を更新するか、Ubuntu のバグを報告してください。

于 2012-04-23T14:06:07.157 に答える