PDFの構造について4

暑さ寒さも彼岸までという言葉がありますが、今年の夏は暑くなったり涼しくなったり変な波があってよくわからない状態ですよね。先週はかなり雨に降られてちょっと湿気ってしまいました。

そんな事は置いておいて、今回はPDFの構造に関する続きで、フィルター関連の情報をお届けします。このフィルターの構造まで読めるようになるとPDFファイルの構成は一通り確認できるようになるのではないかと思います。

続きを読む……


26.5で拡張されたIllustrator2020形式の仕様について

Illustratorファイルの仕様に関しては以前から互換性に関する情報をお届けしています。CC以降はVersionedContentという仕組みが用意され、同じCC形式や2020形式においてもバージョン毎に処理される方法が異なる可能性がある事は以前からお伝えしているとおりです。
恐らく、Ver.26.5はCC2022の最終レビジョンになる可能性が高いのですが、このバージョンで追加された機能が保存ファイルに与える影響というのを綿密に検証してみましたので、このポストでお知らせする次第です。

続きを読む……


CFF2で廃止されたオペレータと代替取得方法

えーと、暑いんだか涼しいんだかよくわからない昨今ですが、いかがお過ごしでしょうか。

最近少し忙しくなってきたので、疲れました。

で、なんてことはないんですけど、Open Type Fontテーブル関連調べててCFF2でCFFにあったオペレータがごっそり削除されたのでちょっとメモしておきます。

1バイトオペレータ

  • 0x00…version
  • 0x01…Notice

nameテーブルのCopyright文字列(name ID 0)及びTrademark文字列(name ID 7)を参照。

  • 0x02…FullName

nameテーブルのFull Name文字列(name ID 4)を参照。

  • 0x03…Family Name

nameテーブルのTypographic Family Name文字列(name ID 16)を参照。存在しない場合はFamly Name文字列(name ID 1)を参照。

  • 0x04…Weight

OS/2テーブルのusWeightClassを参照。

  • 0x05…FontBox

headテーブルのxMin、xMax、yMin、およびyMaxフィールドの組み合わせより生成します。これらはデフォルト値のみの場合であり、概算にすぎませんが、CFF1インタープリターでの値を導びくにはは十分な精度があります。
一部のインタープリターはこれらの値を使用してグローバルカラーリングのヒントに影響を与え、この数値を利用してフラット化パラメーターを設定します。

  • 0x18…Copyrigh

nameテーブルのCopyright文字列(name ID 0)を参照。

  • 0xd(13)…UniqueID

元来はプリンター側でフォントをキャッシュする際に利用されていましたがサードパーティ製フォントのコンフリクトによる信頼性の低下とハードウェア性能の向上によるキャッシュパフォーマンスの相対的な低下等の理由により廃止されました。

  • 0xe(14)…XUID

不要。UniqueID参照のこと。

  • 0xf(15)…charset

必要な場合、グリフ名をver.2.0のpostテーブルに盛り込む事が可能です。

  • 0x10(16)…Encoding

cmapテーブルを参照。

  • 0x12(18)…Private

不要。CFF2では、PrivateDICTは常にFontDICTINDEXのFontDICTから参照されます。

 

2バイトオペレータ

  • 0x0c01…IsFixedPitch

postテーブルのisFixedPitchを参照。

  • 0x0c02…italicAngle

postテーブルのitalicAngleを参照。

  • 0x0c03…UnderlinePosition

postテーブルのunderlinePositionを参照。

  • 0x0c04…UnderlineThickness

postテーブルのunderlineThicknessを参照。

  • 0x0c05…PaintType

CFF2では相当するものがありません。CFF1互換フォントインスタンスを生成する場合はCFF1のデフォルトである0が選択されます。

  • 0x0c14…SyntheticBase

CFF2では相当するものがありません。

  • 0x0c08…StrokeWidth

CFF2では相当するものがありません。

CFF1フォントでは、PaintType 2にのみ使用されますが、CFF1互換フォントインスタンスを生成を生成する場合は、PaintType0を使用する必要があります。

  • 0xc15…PostScript

CFF1ではPostscriptコードの埋め込みが可能でしたがCFF2では廃止されました。

CFF1ではTop DICTにFSTypeキーを用意し、OS/2テーブルのfsTypeフィールドからフォント埋め込み権限を伝達していました。CFF1へ変換を行う場合は、OS/2テーブルのfsTypeから値を得られます。

  • 0x0c16…BaseFontName

CFF2フォントに相当するものはありません。

  • 0x0c17(12 23)…BaseFontBlend

CFF2フォントに相当するものはありません。

  • 0x0c1e(12 30)…ROS

CFF2フォントに相当するものがありません。Font DICTINDEXに複数のFontDICTがあるCFF2バリアブルフォントからCFF1互換フォントインスタンスを生成する場合、変換されたCFF1フォントはCIDキー付きフォントとして生成する必要があり、使用するROSはAdobe-Identity-0である必要があります。これにより、すべてのGIDが同じ値のCIDにマップされ、セマンティックコンテンツは含まれません。

  • 0x0c1f(12 31)…CIDFontVersion 12 31

CFF2フォントに相当するものはありません。CFF1フォントインスタンスを生成する場合デフォルト値である0に設定します。

  • 0x0c20(12 32)…CIFFontRevision 12 32

CFF2フォントに相当するものはありません。CFF1フォントインスタンスを生成する場合デフォルト値である0に設定します。

  • 0x0c21(12 33)…CIDFontType

CFF2フォントに相当するものはありません。CFF1フォントインスタンスを生成する場合デフォルト値である0に設定します。

  • 0x0c22(12 34)…CIDCount

maxpテーブルのnumGlyphsを参照。

  • 0x0c23(12 35)…UIDBase

不要。UniqueID参照のこと。


Adobe Stock ― カンプライセンスってなに?

多くのストックフォトサービスでは低解像度の画像にウォーターマークを付加してダウンロード出来るようにしています。このウォーターマーク入の画像は簡単にダウンロード可能です。世のブログ記事を見回すとこのウォーターマークを消す方法なんてのもいっぱいあります。しかし、ご注意を。このウォーターマーク付きの画像の利用には暗黙の上に成立するライセンス契約が存在します。ずさんな事をやっているとそのうち痛い目を見ることもあるかと存じます。
という事で、今回はAdobe Stockでのカンプライセンスに関する事をわかりやすくご説明させていただきたいと思いますです。はい。

続きを読む……


PDFの構造について3

日曜日にお買い物に出たんですが、駐車場で追突されてしまって(x_x;

対応で時間取られてあっぷあっぷでした。また微妙な壊れ方なんですけど、見積り取るとそれなりの修理費で自身も注意して運転しようと思った次第です。

今回は第3章で内容的にはPDFのデータを記述する時の文法的なものになります。まだまだお約束事の説明に終始するわけですが、これも最低限必要な知識となりますのでお付き合いください。

続きを読む……


PDFの構造について 2

前回の投稿の核心部分というのは2.1.2の「アドビイメージングモデル」というところです。「グラフィックアートから発展した2次元グラフィックスのシンプルで統一された表示機能です。」この部分なんですが「シンプルで統一された表示機能」という部分に集約されています。PDFにおいて一番大切なのはこの「表示」であり、どの端末においても確実に意図した表示にするための実装が最優先されます。各オブジェクトは表示の再現のために配置され、本来持っていた文書構造は担保されません。この事はPDFというフォーマットへの変換は不可逆である事を意味します。近年Acrobat等がOffice関連フォーマットへの変換機能を強力にプッシュしていますが、その機能自体もPDFの見た目から文字列の塊を段落として罫線が交差している部分は表だと認識して、それらの位置情報をもとにデータを再度作成しているのです。やってることは人間と一緒なのですが、レイアウトへの理解の深さという点では人間の判断には及ばない部分があるために複雑な構造のPDFを変換しても意図通りには変換してくれないのも当然な結果なのです。こういった特性に対して予備知識がないと使い物にならないといった印象になってしまうのも理解できます。あくまでもベストエフォートな機能であり、使い所をユーザーが適切に判断して利用するべきものなのです。
端から話がそれていますがファイルフォーマットに対する理解の深化というのは副次的にこういったセールストークに対する懐疑的な部分を確信に昇華してくれるものです。
ファイルフォーマットに限った話ではありませんが、正しい知識は物事を判断する重要な基準となります。また、対象が常に変化する場合において情報は「生鮮物」としての性質も持ちえます。わたし自身もしっかりと学び続けたいと思います。
ということで、続きに入ります。今回は2章の残りの部分についてです。

続きを読む……