基本的にCJK用なので日本のフォントベンダもCIDフォントを多数出しています。CIDフォントにモリサワの報告があります。OCFからCIDへの移行で細かいことでかなりいろいろな問題を経験しているとのこと。ReferenceにもCID-Keyedフォントの説明があります。-405ここを読みますと、昨日、説明しましたPostScriptを想定するCID-KeyedフォントとPDFのそれでは微妙に違いがあることがわかります。Referenceではフォントをsimpleフォントとcompositeフォントの二つに大別しています。simpleフォントとは1バイトフォント、compositeフォントとは複数バイトのフォントです。Referenceでは、compositeフォントのことをType0フォントと言い、具体的にはCID-Keyedフォントのみ使うことができます(OCFはサポートされていない)。PDFのCID-Keyedフォントは次のものから構成されます。CIDは、昨日説明しましたPostScriptと同じものです。CMapも同じような役割なのですが、PDFでは少し機能を限定しています。違いはCIDFontです。PostScriptの時とは違い、PDFではCIDFontにはType0とType2の2種類があります。Type2は、TrueTypeフォントの形式でグリフを記述したものPDFでは、1バイトのTrueTypeフォントをsimpleフォントの1種類として扱い、CJKなどの複数バイトのTrueTypeフォントは、compositeフォントとして、Type0フォントの仕組みを使って扱っているということになります。この影響でPDFではCMapによるグリフ選択の仕組みも、PostScriptのCID-Keyedフォントとは少し異なっていて、TrueTypeの取り扱いが追加されます。このあたりは細かい技術的な話ですので省略します。このことは、1バイトのTrueTypeフォントと2バイトのTrueTypeフォントが、AcrobatのPDFのフォント・プロパティ情報で、表示が違うことからも確かめることができます。(英語版)による上の画面の例ではTimesNewRoman(1バイト)のタイプはTrueTypeですが、MS明朝(2バイト)のタイプはTrueType(CID)となっています。私としては、いままではTrueTypeにCIDなんてないのに「おや?おかしいな。」と思っていたのですが、漸く、わかりました。※このあたりはアドビの手抜きじゃないかなと思うのですが。ま、こんな細かいことに文句言うのは日本人だけかもしれませんね。OpenTypeさて次は、いよいよ真打OpenTypeの登場です。OpenTypeという名前は、既に何回か出てきました。ここでは、フォントファイル形式としてのOpenTypeとそれがPDFでどのように扱われるかについて検討してみましょう。いままで延々といろいろなフォントの形式を説明してきましたが、これはすべて、本命であるOpenTypeの説明をするための準備をしてきたようなものです。その後、1996年にアドビが開発に参加、1997年4月に共同で発表されました。Type1フォントと、マイクロソフト/アップルのTrueTypeという2大アウトライン・フォントがしのぎを削るという状況でした。この両陣営が協力してOpenTypeというフォントファイル形式を開発したのは、アウトライン・フォントの歴史上では、非常に大きなできごとと思います。OpenTypeは、TrueTypeとType1フォント技術の後継として位置付けられています。Format"になるようです。2006年終わりに最初の版が出ると期待されています。【普及の見通し】アウトライン・フォントの普及には、フォント制作者が提供するフォントファイルと、それを使うアプリケーション、フォントファイルからアウトラインを取り出して文字を可視化するラスタライザの3つが大きな要因となります。OpenTypeはもともとTrueTypeの延長として開発されていますので、TrueTypeフォントの多くについては、大きな変更なく使用できるだろうと思います。これに対してアドビはType1フォントを全てOpenType形式に変換し、OpenTypeフォントに集中しています。Wikipediaの記事では、2005年の末で、10,000種類のOpneTypeが入手できるそうですが、このうち1/3がアドビのものと推定しています。早く手がけたものが有利ということでしょうか。いずれにしても、フォントファイルの供給という面からは、今後、OpenTypeが圧倒的に増えるだろうと予想できます。OpenTypeフォントファイルとしてのOpenType次にOpenTypeのフォントファイルとしての主な特徴について整理しておきます。1.グリフのアウトライン記述形式OpenTypeのグリフアウトラインは、TrueTypeアウトラインと、PostScriptアウトラインのどちらかを使用できます。PostScriptアウトラインは、CFF/Type2形式です。アウトライン形式に加えて、ビットマップのグリフを含めることもできます。OpenTypeフォント・ファイルの拡張子は次のようにつけます。・TrueTypeアウトラインの場合:.OTF、または、.TTF(過去のシステムでも使用可能にしたいとき)・TrueTypeコレクションの場合:常に.TTC・PostScriptアウトラインのみを含む場合:.OTF2.cmapテーブルフォントを使用するアプリケーション・OSで使う文字コードからグリフ番号(GID)への対応表をcmapと言います。TrueTypeと同じものと思います(推測)。cmapは、一つのフォントファイルに複数のテーブル(cmapサブテーブル)を持つことができます。サブテーブルは、プラットフォームID(Windows:3、Macintosh:1)と、プラットフォーム毎の符号化方式(2バイトのUnicode:1、4バイトのUnicode:10など)の順で並べます。フォントファイルに様々なOS別のサブテーブルを用意することで、一つのOpenTypeフォントをマルチ・プラットフォームで使えることになります。12)あり、各サブテーブルの先頭に該当する種類がセットされます。UnicodeサポートについてUnicodeからGIDへのcmapサブテーブルは、次の3種類が使えます。(サロゲートペア)以外のUnicode領域をサポートする文字コードからGIDへの対応表(Microsoftの標準)・Format8:16ビットと32ビット混在。サロゲートペアの文字コードは32ビット。それ以外が16ビット。・Format12:32ビット固定長(UCS-4)の表。(サロゲートペアをサポートする時のMicrosoftの標準)なお、サロゲートペアをサポートできるのはWindows2000以降ですが、サロゲートペアをサポートするOpenTypeフォントは、過去のOSでも使えるようにするためFormat4のcmapサブテーブルも用意しておかなければなりません。【注意】このように、cmapはUnicodeの全領域をサポートできそうに見えますが、OpenTypeのひとつのファイルに収容できるglyphの数は64k(65,536個)とされています。従って、UnicodeV4で定義されている全文字をひとつでサポートするOpenTypeフォントを作ることはできません。MSの最新Unicode全文字版はできないということになりますね。TableOpenTypeによるグリフのレイアウトOpneTypeでは、OpenTypeレイアウトというコンセプトを持っています。table)として用意されます。これは、グリフを行にそって配置していく際に次のようなことを行うためのものです。・複数のグリフのリガチャ、文字の位置によるグリフの変化など。日本語ですと縦書と横書での句読点、括弧類の形の入れ替えたり、アラビア文字では、単語の中での文字の位置により、グリフの形が変わります。あたりをご参照ください。OpenTypeレイアウトには次のような幾つかの共通テーブルがあります。グルフの均等配置のためのデータ文字・言語によってそれぞれのテーブルの中に用意されているデータを使って、グリフに対する操作・配置を行うことができます。フォントファイルから取り出したグリフの操作や配置は、WindowsではUniscribeというグリフ・レイアウト・エンジンを使って行うことができます。アプリケーションが自前のグリフ・レイアウト・エンジンを使用することも可能です。Formatterでは、アラビア文字、ヘブライ文字、タイ文字などについては、自前のグリフレイアウト・エンジンを使ってグリフの配置を行っています。現在は、クメール文字やデバナガリ文字はWindowsのUniscribeに頼っています。Windowsに頼っていると、Unix、あるいはLinuxで同じ機能を実現できませんので、将来は、これらの文字も自前で処理したいものです。このようにOpenTypeのレイアウト・テーブルを使うことで、組版ソフトなどのアプリケーションが高度なタイポグラフィを実現することができます。フォント技術の将来アドビシステムズとMicrosoftが支配するアウトライン・フォント技術こうしてみますと、コンピュータ上のアウトラインフォントの技術については、アドビシステムズとMicrosoftがほとんどを握ってしまっているかのように思います。アウトラインフォントを使う場合、困るのはフォントデータとラスタライザがセットでないと役に立たないということがあります。フォントデータの方は、フォントベンダがまだ沢山ありますし、ツールを使えば新しいフォントを作り出すことはできます。問題はアウトラインフォントのラスタライザです。OpenTypeを例に取りますと、TrueTypeアウトラインと、CFF/Type2アウトラインの2種類があります。OpenTypeを可視化するには、その2種類のフォントのラスタライザが必要です。Overviewと書いてあります。PostScriptアウトラインは、TrueTypeアウトラインに変換してラスタライズできると。これが事実ならTrueTypeのラスタライザのみで良いのですが。これは、多分近似的にできるということで、完全にはできないでしょう。3次元のベジエ曲線を2次元で表現するのは不可能なはずですから。Windowsで文字を表示するのであれば、ラスタライザはMicrosoftとアドビが提供しているので問題ないのですが、Windows以外のOS、例えば、Linux、あるいは、もっと離れて、携帯電話などで表示しようとするとラスタライザがないということが大きな問題になると思います。PDFにフォントを埋め込むと、表示環境にフォントがなくてもPDFを見ることができる、と言われます。PDFに埋め込まれているのはラスタライズした(可視化した)文字ではなく、フォントのアウトラインデータです。従って、表示環境にラスタライザがなければ、PDFにフォントが埋め込まれているとしても、その文字を表示することはできません。OpenTypeが普及した場合、上のことは相当に大きな問題で、Microsoftまたはアドビの協力がなければ、PDFを表示することができないということになりかねません。このあたり、将来、どうなるのか?不安を感じるところです。エレメント方式フォントアウトラインフォントのお話は、ほとんど、アドビシステムズが開発したフォントと、Microsoftが開発したフォントで終始してしまいました。他にフォントがないのか?と言われるとそのようなことはないでしょう。他の方式のフォントがないのか、とWebを探していましたら、リコーのエレメント方式フォント((JetFont)というものが見つかりました。これは、文字を書き表すストロークを、約700種類に分類しておき、そのストロークを組み合わせて文字を表す仕組みです。詳しくはエレメント方式フォントのWebページをご覧ください。漢字のように何万種類もの文字があるときは、小さな部品から組み立てていく方式は、有効なように思います。JetFontは漢字だけではなく、ラテン系の文字やハングルなども文字として用意しているようです。このフォントは、フォントデータとラスタライザ(ソースプログラム)で提供されるようですので、Linuxなどにも載せて使えそうです。PDFに使うのはどうなんでしょう?PDFの仕様を拡張しなくてもPDFに埋め込んで使えるのかな?フォントのラスタライザが問題ですが、こういう技術をPDFと一緒に使えるようにしていくと、マルチプラット・フォームのPDF配信ができるようになるかもしれません。