PDF 内部構造 テキスト 新しいページはコチラ
提供: yonewiki
(→フォントプログラムの埋め込み) |
(→フォントプログラムの埋め込み) |
||
1,141行: | 1,141行: | ||
+ | ==== '''SubType Type3の利用によるテキスト出力''' ==== | ||
+ | Type3 は PDFのフォントストリーム部分にPDFでのグラフィック描画処理を流用してフォントプログラムを構成する方法。試しにやってみたけど、今のところ、エラーになりまくりです。 | ||
+ | |||
+ | 自分が作ったType3フォント2文字は以下のように生成したものの、Font リソース部で名前をつけて参照先をしていして実体化させようとしたところで、PDFオープン時にエラーになる。悲しい。 | ||
+ | |||
+ | |||
+ | 途中経過としては以下のようなスクリプトだ。インターネットに出回っているType3のPDFはうまくFontの定義は出来ているみたい。でもマネしてもダメだな。もう少し理解しないと駄目だな。 | ||
+ | |||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | … | ||
+ | |||
+ | … | ||
+ | 4 0 obj | ||
+ | << | ||
+ | /Font | ||
+ | << | ||
+ | /F0 15 0 R | ||
+ | /F1 6 0 R | ||
+ | /F2 14 0 R | ||
+ | %/Type3Font 16 0 R %Type3 | ||
+ | >> | ||
+ | >> | ||
+ | endobj | ||
+ | … | ||
+ | |||
+ | … | ||
+ | |||
+ | endobj | ||
+ | |||
+ | 16 0 obj | ||
+ | << | ||
+ | /Name/Type3Font | ||
+ | /Type /Font | ||
+ | % /Resources | ||
+ | % << | ||
+ | % /ProcSet [/PDF /ImageB] | ||
+ | % >> | ||
+ | /SubType /Type3 | ||
+ | /FontBBox [0 0 750 750] | ||
+ | /FontMatrix [0.001 0 0 0.001 0 0] | ||
+ | /FirstChar 0 | ||
+ | /LastChar 1 | ||
+ | /Widths [1000 1000] | ||
+ | /Encoding 17 0 R | ||
+ | /CharProcs 18 0 R | ||
+ | >> | ||
+ | endobj | ||
+ | |||
+ | 17 0 obj | ||
+ | << | ||
+ | /Type /Encoding | ||
+ | /Differences [0 /square /triangle] | ||
+ | >> | ||
+ | endobj | ||
+ | |||
+ | 18 0 obj | ||
+ | << | ||
+ | /square 19 0 R | ||
+ | /triangle 20 0 R | ||
+ | >> | ||
+ | endobj | ||
+ | |||
+ | 19 0 obj | ||
+ | << | ||
+ | |||
+ | >> | ||
+ | stream | ||
+ | 1000 0 0 0 750 750 d1 | ||
+ | % 48 48 2000 2000 re | ||
+ | % f | ||
+ | endstream | ||
+ | endobj | ||
+ | |||
+ | 20 0 obj | ||
+ | << | ||
+ | |||
+ | >> | ||
+ | stream | ||
+ | 1000 0 0 0 750 750 d1 | ||
+ | % 48 48 m | ||
+ | % 976 2000 l | ||
+ | % 2000 48 l | ||
+ | % f | ||
+ | endstream | ||
+ | endobj | ||
+ | |||
+ | xref | ||
+ | 0 21 | ||
+ | … | ||
+ | |||
+ | … | ||
+ | </Syntaxhighlight2> | ||
==== '''フォントプログラムの埋め込み''' ==== | ==== '''フォントプログラムの埋め込み''' ==== | ||
ここまでフォントの原理を理解することに焦点を合わせて、プログラムを埋め込まない使い方をしましたが、埋め込まない日本語PDFはISOの意に沿わない形式と言えるそうです。なので埋め込まないといけないのですが、フォントファイルから埋め込みフォントの記述方法については詳しく述べられた文献がみつからないため、続編記事には時間がかかりそうです。 | ここまでフォントの原理を理解することに焦点を合わせて、プログラムを埋め込まない使い方をしましたが、埋め込まない日本語PDFはISOの意に沿わない形式と言えるそうです。なので埋め込まないといけないのですが、フォントファイルから埋め込みフォントの記述方法については詳しく述べられた文献がみつからないため、続編記事には時間がかかりそうです。 | ||
1,151行: | 1,243行: | ||
− | + | なのでフォントファイルの編集方法がわかれば、埋め込み用のフォントプログラムは作れそうです。でも編集方法がわかるくらいなら、フォントエディタでも作れるくらいのスキルがあるわけで、なかなかの壁だな。PDFで使った文字コードすべてを検出して、フォントファイルから、使った文字コードに対応するグリフだけを残して、あとは消したフォントサブセットをつくる。これができればPDF文書の内製化および発展的使い方も見えてくる。あるいは、印刷機能を理解する方面からPDFConverterとストリームのやり取りをするという方法に戻るか。それでは、なんだか面白くない。せっかくPDFの構造を理解することに積極的になったのだから、やりこみたいような気もする。 | |
+ | |||
+ | |||
+ | 素人はフォントファイルを編集するFontForgeでいじったものを張り付けて埋め込むという作業でもしてないさいって感じになるのかな。 | ||
[[PDF 内部構造#説明|PDF 内部構造]]に戻る。 | [[PDF 内部構造#説明|PDF 内部構造]]に戻る。 |