(PostScript)CID-Keyedフォント(PDF)OpenTypeフォントファイルとしてのOpenTypeOpenTypeによるグリフのレイアウトフォント技術の将来アドビシステムズとMicrosoftが支配するアウトライン・フォント技術エレメント方式フォントはじめに現在、Windowsを初めとするパーソナル・コンピュータの世界で文字を可視化する方法はデジタル・フォントを使います。文字を画面に表示したり、印刷したり、PDFで電子的に文書を交換する際にはデジタル・フォントが必須です。現在、このデジタル・フォントの主流になっているのは、アウトライン・フォントと呼ばれる技術です。アウトライン・フォントは、1980年代に登場したアドビシステムズのPostScriptによって確立されたと言って良いと思います。PostScriptは、印刷を対象とするものですが、その後、Apple、Microsoftなどのパソコン・ソフトのOSメーカにより画面上でこれを使用する技術が開発されました。この文書は、「PDF千夜一夜」からデジタル・フォント、特にアウトライン・フォントの種類とPDFでの扱いに関する記事を整理したものです。問題がない限り、今日、あるいはx日という記述はそのまま残していますのでご了承ください。内容的な不足・誤りについてはできるだけ加筆・訂正に努めました。書体、グリフ、フォント次に、PDFのための必須の技術の中で、フォントについて説明してみたいと思います。私は、フォントについては、少しかじったくらいであまり詳しくありませんので、いろいろ調べながらできるだけまとめてみたいと思っています。間違いがありましたらご指摘いただければ幸いです。フォントとはなにかということを簡単に整理してみたいと思います。隆男氏の連名で「フォント関連用語を正しく理解する」という記事が掲載されました。その記事では、書体とフォントを区別して次のように定義しています。書体は「一連の文字や記号の1セットに対し、印刷や表示のために、美観などのコンセプトに基づいて統一的に施された意匠デザイン」。フォントは「同一書体を元にして作られた、すべてのファミリ、変形、サイズを含む一連の文字・記号の1セット」。書体は抽象的概念で、それを具象化したのがフォントである。フォント情報処理用語の関連部分の定義を見てみますと、次のようになっています。(pp.2-3)では次のようになっています。グリフとグリフセットで検討しました。Referenceの定義に従うことにしました。グリフとは抽象的なものか、それとも可視化した具象図形かという点に少し違いがありますが、概ね、次のようにまとめることができそうです。・グリフとは文字を可視化した形状である。リガチャのように複数の文字の連続を別の形状にして可視化する場合、複数の文字がひとつのグリフになり、アラビア文字のようにひとつの文字が複数(4つ)のグリフをもつものもあります。文字とグリフは1対1対応とは限りません。・書体とは意匠デザイン・フォントとは、書体が同じグリフを集めたもの。この定義は、大雑把過ぎて、実際に使うとなるとあまり役に立たないでしょう。次回、さらに、もう少し詳しく見てみたいと思います。次に、文字を可視化する方法という観点から、コンピュータで使用するフォントの種類について、まとめて見ます。いま、文字を可視化するという難しい表現を使ってしまいましたが、その方式として、幾つかあります。簡単な例としては、電光掲示板がその典型的な例としてあげられます。新幹線の車両や、JRの車両などにはニュースを伝える電光掲示板を良く見かけます。野球場のスコアボードにも電光掲示板があります。電光掲示板は、ランプの点滅のパターンで文字を表す仕組みです。コンピュータの画面、携帯電話の画面、またはプリンタでの印刷などにおいて文字を表す仕組みは電光掲示板方式を精密にしたものです。点滅させるドットを小さくしていくことで、精密さを増しています。点滅するドットのパターンで表す方式と比べますと、使用される頻度は少ないと思いますが、コンピュータを使ってペンや筆に相当するツールを制御して文字を書くという方式もあります。典型的な例が、プロッタ(ペンプロッタ)と呼ばれる出力装置を使うものです。この方式は、建築や機械などの設計図面を紙に出力するのに使われる方式で、PDFとは親和性が小さいように思います。文字の可視化の伝統的な方法として活字などがあります。いうよりも活字は可視化されたグリフそのものというべきかもしれません。この活字の発展形として、日本で開発された独自技術に写真植字(写植)があります。(手動写植機)活字や手動写植は、コンピュータ技術以前のもので、いわばアナログ方式です。現在は使われることが少なくなっています。この中で光学的方法で可視化する方式をコンピュータで自動化したものとして、デジタルフォント+電算写植機があります。ビットマップフォント昨日は、文字を可視化する方式として、(1)点滅するドットのパターン、(2)ペンで線を描く、(3)光学的方式を説明しました。今日は、その中で、フォントのデータから(1)点滅するドットのパターンをどうやって作り出すか、という観点からどのような方式があるかを整理してみたいと思います。1.ビットマップフォント一番単純なものは、フォントのデータ自身の中に、グリフをドットのON/OFFのパターンとして表したデータとして持つ方式です。※参考ビットマップフォント次の例は、縦方向12行、横方向12列(12×12ドット)の塗り潰しパターンで「阿」という文字を表した例です。※実際のフォントのデータではありません。ビットマップフォントでは、このようなパターンデータを文字毎に用意するわけです。ビットマップフォントの最大の問題は、拡大、縮小をすると汚くなってしまうことでしょう。12×12ドットで最適な形になるようにデザインされたフォントを、例えば1文字あたり24×24ドットで表示すると奇麗ではなくなります。このため、文字を表示・印刷する装置のドット密度と表示したい文字の大きさ毎に適切なドット数のフォントを選択しなければなりません。このためフォント供給者は、様々なサイズのフォントを品揃えしています。リコーのビットマップフォントの案内を見ますと、次の種類があります。(ボールド)、18×18、20×20、24×24、32×32、40×40リコーのビットマップフォントには、この他にゴシック体を低解像度用に改良したNewゴシック体、丸ゴシック体も紹介されています。(PDA)、携帯電話、あるいは様々な電子機器などメッセージ表示用に使われます。実際のところ、ビットマップフォントが今一番使われているのは、携帯機器ではないでしょうか。FAXなども液晶画面でメッセージを表示するようになっていますので、ビットマップフォントの利用範囲は非常に広範囲に渡っていると思います。アウトラインフォント昨日は、ビットマップフォントについて説明しました。これは、点滅するドットのパターンを予め用意しておく、という単純な方法でフォントを作成するものです。2.アウトラインフォントアウトラインフォントのアウトラインとはグリフの輪郭のことです。アウトラインフォントのファイルには、各グリフのアウトラインを描くためのデータ(パラメータ)が収録されています。そこで、文字の可視化は次のステップで行うことになるはずです。(1)可視化したいグリフのデータを取り出す。(2)データを元にグリフのアウトラインを描く。(3)アウトラインで表現したグリフの状態から、塗り潰すべき点を見つける。(4)塗り潰すべきを塗り潰す。結局、アウトラインフォントをコンピュータのディスプレイに表示するには、全てのグリフについて、(1)~(4)のステップで点滅するドットのパターンに置き換えていきます。この処理を行うプログラムをフォントのラスタライザと言いWindowsのGDIやPostscriptを印刷するプリンタなど様々な機器にフォントのラスタライザが搭載されています。アウトラインフォントについての詳しい説明は、次のページをご覧ください。ビットマップフォントとは何か?」あたりにアウトラインフォントについての詳しい説明が載っています。グリフのアウトラインを記述する方法の中で、現在、最もポピュラーなのは、PostScript(Type1)フォントで使われている3次ベジエ曲線、およびTrueTypeフォントで使われている2次ベジエ曲線のふたつの方法です。FontForgeの中に、ベジエ曲線についての分かりやすい説明があります。スプラインアウトラインフォントでは、グリフの輪郭を多数の線分に分割し、各線分をベジエ曲線で表します。ベジエ曲線は、二つの端点とそれに加えて曲線の曲がり具合を制御する制御点のデータで表現することができます。従って、アウトラインフォントのグリフデータの中核は、多数の線分の端点と制御点の集合ということになります。アウトラインフォントの良い点は、グリフをベジエ曲線という数学的な曲線で表していますので、拡大・縮小が自由にできるということです。アウトラインフォントのタイプ昨日は、アウトラインフォントがグリフのアウトラインを数学的な曲線で表わすものであること、そして、曲線で囲まれた領域のドットを塗り潰すことで文字を可視化することを説明しました。アウトラインフォントの中核はグリフのアウトラインデータですが、フォントファイルには、グリフの幅や高さを表すメトリック情報、あるいは、文字コードとグリフ番号の対応表、などのデータも含まれます。アプリケーションがフォントを利用するための様々なデータを含めて、フォントファイルにどのような状態で収容されているかの仕様がフォントファイル形式と言います。現在、普及しているアウトラインのフォントファイル形式には次のものがあります。CFFアウトライン(PostScriptアウトラインいうこともあります)実際のところ、私が多少なりとも知識をもっていますのは、上の4つなんです。Referenceを読みますと、他にもいろいろ出てきます。・Type0・Type1・MMtype1・Type3・TrueType・CIDFontType0・CIDFontType2が出ています。(表5.7にはOpenTypeという言葉は出てきません)。・Type42フォントという言葉も聞いた覚えがあります。表示したときのフォントの属性の用語と、一般に使われる用語に少しずれがあるような気もします。そこで、これから少しフォントの種類について、調べて、整理してみたいと思います。フォントアウトラインフォントと言いますと、なんといっても、Type1フォントを筆頭に挙げなければならないと思います。消え去るType1フォントを参照してください。そこに、Type1フォントの簡単な歴史を紹介しています。一部繰り返しになりますが、Type1フォントは、次のようなものです。・1980年代にアドビシステムズが、PostScript言語用のフォント形式として開発し、1985年アップルのレーザライターに採用されて普及した。PostScriptの登場をご覧ください。・Type1は、PostScriptでアウトラインフォントを効率的に表現したもの。PostScriptの仕様は公開されて、サードパーティがクローン製品を作ることができた。Type1フォントの仕様は公開されず、それらのクローン製品でType1フォントをラスタライズすることができなかった。・Type1フォントは、印刷用に用意されたものでPSプリンタ用に使われた。Manager:Type1フォントのラスタライザ)によって、初めてType1フォントをパソコンの画面やビットマップ・プリンタで出せるようになった。それに続いて、1990年3月にType1フォントの仕様が初めて公開された。8/9で、Type1フォントを表示するにはATMが必要。X以降では、Type1フォントのラスタライザが標準搭載されているのでATMは不要になった。Binary)ファイルとフォントのメトリック情報を集録したファイルのペアで使う。このためフォントファイルがOS独立でない。Metrics)ファイル。Type1フォントは、このような特徴をもちパソコンのアウトライン・フォントの草分けとして大きな影響を及ぼしました。1フォントの販売を終了しています。他のフォント・ベンダもType1フォントの販売を終了しつつあるようです。このようにType1フォントの重要度は、歴史的な存在になりかけているようです。PhinneyTrueType次はTrueTypeです。Windowsに標準搭載のフォント技術という印象があります。TrueTypeフォント技術は、もともとAppleがOSレベルで拡大・縮小可能なフォントを実現しようとして開発を始めたものです。Microsoftは別途TrueImageという技術を開発していました。Enterprisesが開発して、1989年にMicrosoftが買収した、PostScript互換のインタープリタとされています。Microsoftとアップルは、TrueImageとTrueTypeをクロスライセンスして、TrueTypeがWindowsで使えるようになったのだそうです。TrueImageは、PostScript互換のプリンタ用に商品化されましたが、結局あまり成功することなく終わってしまいました。現在、Webで検索しますと、TrueImageは、他の会社の何の関係もない(?)製品名になってます。して見ますと、なんとなくアップルは庇を貸して母屋を取られたのではないかという印象がありますね。このあたりの経緯は、JAGATの研究会の報告にも見られます。1989年TrueTypeとType1のアウトラインデータの形式の特性、ラスタライザの性能特性などのグリフのデザインとその可視化の技術的な優劣については、いろいろな議論があるようです。この点はまた、別途、機会をみて検討してみたいと思います。TrueTypeフォントのファイル形式としての特長をまとめますと、次のようなことになると思います。・Type1フォント形式と違い、アウトライン情報とメトリック情報はひとつのファイルに収容されている。Windows3.1以降のOSに、TrueTypeラスタライザが標準で搭載されていてOSレベルでサポートされている。この点で、Type1はPostScriptプリンタという高品位印刷の領域から始まったのと違い、TrueTypeは最初から非常にポピュラーな存在である。Windowsには、多数のTrueTypeフォントファイルがバンドルされている。このファイルの拡張子は、.TTF、と.TTCがある。Collectionの略でひとつのフォントファイルに複数のフォントを含んでいるもの。CJKフォントにこの形式が見られる。Pゴシックがひとつのフォントファイルまとめられているなど。Format)は、Type1フォントのグリフアウトラインなどのプログラム容量を小さくするために開発されたものです。CFFは通常Type2文字記述手続き(charstring)と一緒に使い、Type1フォントは、CFF/Type2セットと完全に(情報のロスなしで)相互変換ができます。Type1フォントからCFF/Type2に変換すると容量が30%~40%少なくなるそうです。CFF/Type2フォントはAcrobat3.0(PDF1.2)のPDFにType1フォントを埋め込むのに使われており、Type1フォントをPDF1.2に埋め込む時は、CFF/Type2に変換してから埋め込みます。逆に、PDFに埋め込まれているCFF/Type2のフォントは、PDFから取り出した後、Type1に変換してからリーダで表示したり、プリンタで印刷されます。Aなお、CFF/Type2というフォントの形式は、単独のフォント形式名としては存在しないようです。CFF形式は、OpenTypeの中でType1フォントを保存する形式として使われることで普及しています。マルチプルマスターType1フォントマルチプルマスター・フォントというのは、Type1フォントの拡張で、ひとつのフォント・プログラムから様々な書体のフォントを作りだすことができるものです。フォントのウエイト(ライトから極太)、幅(コンデンスからエクスパンド)などのフォントのデザインの次元を使うことで行います。※参考マルチプルマスターダイアログアドビとアップルはそれぞれ独自の技術を開発したようです。マルチプルマスターType1フォントはアドビが開発した方法。アップルのはTrueType用ですので別のものです。アドビの方法では、フォントのウエイト、幅、サイズなどのデザイン軸について、両極端の全てのフォントを用意しておき、その間に入るものを自動的に生成するもののようです。Fonts中間のデザイン特性をもつフォントの生成は、ATMなどのフォントのラスタライザが行います。PDFにマルチプルマスター・フォントを埋め込む場合は、実際にラスタライザが補完して作り出したフォントを埋め込みます。マルチプルマスター・フォントそのものをPDFに埋め込むことはありません。CFF/Type2では、最初は用意されましたが削除されてしまい、これらの仕様ではマルチプルマスター・フォントは廃止された状態になっています。fontsによりますと、アドビは、1999年にマルチプルマスター・フォントの開発を止めるとアナウンスしたようです。今までに制作されたマルチプルマスター・フォントは、約50種類と少ないようということを見ても、マルチプルマスター・フォントはあまり成功したフォント形式とは言えないようです。Phinneyの最後の方にも、MMType1について成功していないと書いてあります。成功しなかった理由として、サポートする(MMType1を読んで、ラスタライズ、画面表示できる)アプリケーションが少なかったことを挙げています。MMtype1を実現するには、各軸にそった極端なグリフセットを作らないといけないのですが、3軸だと8種類になります。それなら、最初から、8家族からなるフォント・ファミリーを制作するほうが手っ取りばやいという訳です。私は、最初にMMtype1についての説明を読んで、なんてすごいアイデアだと思ったことを覚えています。現実の方が厳しかったようです。フォントType3フォントは、PostScriptでグリフを表現するものです。フォントで説明しましたように1980年代は、Type1フォントのファイル形式は非公開でした。これに対して、Type3のファイル形式は、最初から公開されていましたので、一般の人がPostScriptベースでアウトライン・フォントを開発しようとするとType3を使うしかなかったわけです。#0-201-18127-4)に記述されています。青木俊道(あおきとしみち)さんという方のWebページで「Type3フォントについて」実際に作って試した話が載っています。アドビのサポートページで、Type1とType3についての比較を見ますと次のようなことが書いてあります。・Type3フォントの文字の字形は、標準のPsostScriptの命令で記述できる。・従って、作るのは簡単。複雑な形状の文字を作ることもできる。・アドビは、Type3フォントの仕様を公開したが、自社でType3フォントを作成したことはなく、配布したこともない。アプリケーションはType3フォントをサポートしていない。要するにType3フォントの仕様はPostScriptでグリフを作れるよ、というサンプルのようなものなんでしょうね。389~395)に7ページも費やしてしっかりとType3フォントの説明があります。この部分、もう削除してしまっても良いと思うのですが。フォントType0フォントは、複合(Composit)フォントと言い、もともとはPostScriptの仕様書で定義されている、複数のフォントを束ねて高度なフォントを作る仕組みです。Type1フォントは1バイトでローマ字用のもののため、CJKの文字を扱えませんでした。Font)を開発し、さらに、その後CID-Keyedフォントを開発しました。このうち、OCFフォントはPostScriptでのみ使えるもので、PDFの仕様ではサポートされていません。OCFフォントこの記事を読みますと、OCFフォントは、日本のDTP分野で一時代に流行(という言葉が適切かどうかわかりまえせんが)したものですが、既に、フォント・メーカはサポートを終了してしまっているようです。Xではインストールさえもできないとあります。PDFの仕様書を検索しても、OCFという言葉は一言も出てきません。CID-Keyedフォントの概要は次に説明があります。#5092PDFで使えるのは、CID-Keyedフォントのみに制限されています。(p.403)を参照。CID-Keyedフォントとなっています。compositの意味が、1バイト以上の並びを解読して、CIDfontからグリフを選択する仕組みという意味になっていてPostScriptとは異なっています。ReferenceのCIDFontには、CIDFontType0とCIDFontType2の2種類があります。#5092のCID-KeyedフォントとPDFの2種類のCID-Keyedフォントとの関係が今ひとつ分かりにくいですね。明日、もう少し調べてみましょう。Type1形式の複合フォントとしてOCFの後継として規定されました。フォントに関する一連の仕様CIDフォントの構成要素は、次のものです。日本語、中国語(繁体字、簡体字)、韓国語についてグリフを集めてCID番号をつけたものです。Adobe-Korea1で簡単に紹介しました。さまざまな符号化文字集合の文字コード番号から、CIDへの対応表です。アドビが用意した標準のCMapは無償配布されています。フォントベンダなどが独自に定義することもできます。CMapで文字コードからCIDへ変換で説明しました。フォントファイルこれは、フォントのグリフを記述するプログラム(データ)を収録したファイルです。フォントベンダが開発するものです。ManagerやPostScriptインタープリタで解釈してラスタライズすることができます。CID-Keyedフォントを表示・印刷する仕組みの一部は2006年01月17日に示しましたが、CMapを使って、文字コードからCIDに変換し、CIDをキーにして、文字のグリフを取り出し、そのグリフをラスタライズするものです。#5092にはCIDフォントの特長として次のようなことを挙げています。・CMapファイルを使って、複数のCID-Keyedフォント、OCFフォント、Type1、Type3フォントを参照して使える。・文字を追加して、拡張していくのが簡単。・Type1よりフォントを取り出してラスタライズするのが速い。・広範な機器に使える。・OCFと比べてフォントのファイル数が少なくて済む。