さまざまなフォントについての概要(改訂版)

最終更新日: 2021/2/3

はじめに

現在、Windowsを初めとするパーソナル・コンピュータの世界で文字を可視化する方法はデジタル・フォントを使います。文字を画面に表示したり、印刷したり、PDFで電子的に文書を交換する際にはデジタル・フォントが必須です。現在、このデジタル・フォントの主流になっているのは、アウトライン・フォントと呼ばれる技術です。

アウトライン・フォントは、1980年代に登場したアドビシステムズのPostScriptによって確立されたと言って良いと思います。PostScriptは、印刷を対象とするものですが、その後、Apple、Microsoftなどのパソコン・ソフトのOSメーカにより画面上でこれを使用する技術が開発されました。

この文書は、「PDF千夜一夜」からデジタル・フォント、特にアウトライン・フォントの種類とPDFでの扱いに関する記事を整理したものです。特に、問題がない限り、今日、あるいはx日という記述はそのまま残していますのでご了承ください。但し、内容的な不足・誤りについてはできるだけ加筆・訂正に努めました。

2021年2月3日にアドビのType1サポート終了についての内容とOpenTypeのISO仕様についての記述を追加しました。

用語の整理 — 書体、グリフ、フォント

次に、PDFのための必須の技術の中で、フォントについて説明してみたいと思います。私は、フォントについては、少しかじったくらいであまり詳しくありませんので、いろいろ調べながらできるだけまとめてみたいと思っています。間違いがありましたらご指摘いただければ幸いです。

フォントとはなにかということを簡単に整理してみたいと思います。ちょっと古くなりますが、日経バイトの1994年2月号(pp.247~260)のバイト・セミナーに沼尾 禮子・林 隆男氏の連名で「フォント関連用語を正しく理解する」という記事が掲載されました。

その記事では、書体とフォントを区別して次のように定義しています。

(1) 書体は「一連の文字や記号の1セットに対し、印刷や表示のために、美観などのコンセプトに基づいて統一的に施された意匠デザイン」。
(2) フォントは「同一書体を元にして作られた、すべてのファミリ、変形、サイズを含む一連の文字・記号の1セット」。
(3) 書体は抽象的概念で、それを具象化したのがフォントである。

次に、TR X 0003:2000 フォント情報処理用語の関連部分の定義を見てみますと、次のようになっています。

(1) 書体(type face)「表示などに使用するため、統一的なコンセプトに基づいて作成された、一組の文字などの意匠」
(2) フォント(font)「ある書体でデザインされた字形の集合」
(3) グリフ(glyph)「文字の可視化表現またはその構成部分から大きさ及び意匠を正規化した抽象表現(JIS X4161 ISO/IEC 10036)」

JIS X4161-1993 (pp.2-3)では次のようになっています。
(1) グリフ(glyph)「個々のデザインの違いを除去した認知可能な抽象的図記号」
(2) フォント(font)「基本デザインが同一であるグリフ像の集合」

さて、このブログでは、過去にグリフについて、
2006年01月13日 PDFと文字(22) – グリフとグリフセット
で検討しました。そこでは、グリフとは、「文字を可視化した形状である」というPDF Referenceの定義に従うことにしました。

グリフとは抽象的なものか、それとも可視化した具象図形かという点に少し違いがありますが、概ね、次のようにまとめることができそうです。

  • グリフとは文字を可視化した形状である。但し、リガチャのように複数の文字の連続を別の形状にして可視化する場合、複数の文字がひとつのグリフになり、アラビア文字のようにひとつの文字が複数(4つ)のグリフをもつものもあります。ですので文字とグリフは1対1対応とは限りません。
  • 書体とは意匠デザイン
  • フォントとは、書体が同じグリフを集めたもの。

しかし、この定義は、大雑把過ぎて、実際に使うとなるとあまり役に立たないでしょう。次に、もう少し詳しく見てみたいと思います。

フォントの種類

文字の可視化方法

文字を可視化する方法という観点から、コンピュータで使用するフォントの種類を整理してみます。

いま、文字を可視化するという難しい表現を使ってしまいましたが、その方式として、幾つかあります。

1.点滅するドットのパターンで文字を可視化する方式

一番簡単な例としては、電光掲示板がその典型的な例としてあげられます。

新幹線の車両や、JRの車両などにはニュースを伝える電光掲示板を良く見かけます。また、野球場のスコアボードにも電光掲示板があります。電光掲示板は、ランプの点滅のパターンで文字を表す仕組みです。

コンピュータの画面、携帯電話の画面、またはプリンタでの印刷などにおいて文字を表す仕組みは電光掲示板方式を精密にしたものです。点滅させるドットを小さくしていくことで、精密さを増しています。

2.ストロークで文字を可視化する方式
点滅するドットのパターンで表す方式と比べますと、使用される頻度は少ないと思いますが、コンピュータを使ってペンや筆に相当するツールを制御して文字を書くという方式もあります。典型的な例が、プロッタ(ペンプロッタ)と呼ばれる出力装置を使うものです。

この方式は、建築や機械などの設計図面を紙に出力するのに使われる方式で、PDFとは親和性が小さいように思います。

※参考
プロッタ 【plotter】とは

3.光学的可視化方法
文字の可視化の伝統的な方法として活字などがあります。というよりも活字は可視化されたグリフそのものというべきかもしれません。

この活字の発展形として、日本で開発された独自技術に写真植字(写植)があります。これは、文字盤に記載された文字を、写真の技術を使って、拡大・縮小して印画紙に焼き付けていく、という方法です。

※参考
写真植字機(手動写植機)

活字や手動写植は、コンピュータ技術以前のもので、いわばアナログ方式です。現在は使われることが少なくなっています。

この中で光学的方法で可視化する方式をコンピュータで自動化したものとして、デジタルフォント+電算写植機があります。これは、現在でも新聞の印刷などに使われているようです。

※参考
電算写植

ビットマップフォント

フォントのデータから点滅するドットのパターンをどうやって作り出すか仕組みで、一番単純なものは、フォントのデータ自身の中に、グリフをドットのON/OFFのパターンとして表したデータとして持つ方式です。

※参考
ビットマップフォント

次の例は、縦方向12行、横方向12列(12×12ドット)の塗り潰しパターンで「阿」という文字を表した例です。

BitmapFont.PNG
※実際のフォントのデータではありません。

ビットマップフォントでは、このようなパターンデータを文字毎に用意するわけです。

ビットマップフォントの最大の問題は、拡大、縮小をすると汚くなってしまうことでしょう。すなわち、12×12ドットで最適な形になるようにデザインされたフォントを、例えば1文字あたり24×24ドットで表示すると奇麗ではなくなります。このため、文字を表示・印刷する装置のドット密度と表示したい文字の大きさ毎に適切なドット数のフォントを選択しなければなりません。

このためフォント供給者は、様々なサイズのフォントを品揃えしています。例えば、リコーのビットマップフォントの案内を見ますと、次の種類があります。

・ゴシック体 10×10、12×12、14×14、16×16、18×18、20×20、24×24、32×32、40×40
・明朝体 12×12、14×14、14×14 (ボールド)、16×16、16×16 (ボールド)、18×18、20×20、24×24、32×32、40×40
リコーのビットマップフォントには、この他にゴシック体を低解像度用に改良したNewゴシック体、丸ゴシック体も紹介されています。

ビットマップフォントは、パソコンの画面表示、携帯機器(PDA)、携帯電話、あるいは様々な電子機器などメッセージ表示用に使われます。実際のところ、ビットマップフォントが今一番使われているのは、携帯機器ではないでしょうか。しかし、家庭用の電子機器、複写機、FAXなども液晶画面でメッセージを表示するようになっていますので、ビットマップフォントの利用範囲は非常に広範囲に渡っていると思います。

アウトラインフォント

アウトラインフォントのアウトラインとはグリフの輪郭のことです。アウトラインフォントのファイルには、各グリフのアウトラインを描くためのデータ(パラメータ)が収録されています。

そこで、文字の可視化は次のステップで行うことになるはずです。
(1)可視化したいグリフのデータを取り出す。
(2)データを元にグリフのアウトラインを描く。
(3)アウトラインで表現したグリフの状態から、塗り潰すべき点を見つける。
(4)塗り潰すべきを塗り潰す。

結局、アウトラインフォントをコンピュータのディスプレイに表示するには、全てのグリフについて、(1)~(4)のステップで点滅するドットのパターンに置き換えていきます。この処理を行うプログラムをフォントのラスタライザと言いWindowsのGDIやPostscriptを印刷するプリンタなど様々な機器にフォントのラスタライザが搭載されています。

アウトラインフォントについての詳しい説明は、次のページをご覧ください。
FontForgeアウトラインフォントエディタ(概要)

この中の「アウトラインフォントとは何か? ビットマップフォントとは何か?」あたりにアウトラインフォントについての詳しい説明が載っています。

グリフのアウトラインを記述する方法の中で、現在、最もポピュラーなのは、PostScript(Type1)フォントで使われている3次ベジエ曲線、およびTrueTypeフォントで使われている2次ベジエ曲線のふたつの方法です。

FontForgeの中に、ベジエ曲線についての分かりやすい説明があります。
Bézier1 スプライン

アウトラインフォントでは、グリフの輪郭を多数の線分に分割し、各線分をベジエ曲線で表します。ベジエ曲線は、二つの端点とそれに加えて曲線の曲がり具合を制御する制御点のデータで表現することができます。従って、アウトラインフォントのグリフデータの中核は、多数の線分の端点と制御点の集合ということになります。

アウトラインフォントの良い点は、グリフをベジエ曲線という数学的な曲線で表していますので、拡大・縮小が自由にできるということです。

アウトラインフォントのタイプ

アウトラインフォントの中核はグリフのアウトラインデータですが、フォントファイルには、グリフの幅や高さを表すメトリック情報、あるいは、文字コードとグリフ番号の対応表、などのデータも含まれます。

アプリケーションがフォントを利用するための様々なデータを含めて、フォントファイルにどのような状態で収容されているかの仕様がフォントファイル形式と言います。

現在、普及しているアウトラインのフォントファイル形式には次のものがあります。

・PostScript Type 1
・TrueType
・OpenType TrueTypeアウトライン
・OpenType CFFアウトライン(PostScriptアウトラインいうこともあります)

PDF Referenceを読みますと、他にもいろいろ出てきます。

PDF Reference 5.4項に、PDFで定義するフォントの種類一覧(表5.7)がありますが、ここでは、

・Type0
・Type1
・MMtype1
・Type3
・TrueType
・CIDFontType0
・CIDFontType2

が出ています。(表5.7にはOpenTypeという言葉は出てきません)。

この他、
・Type42
フォントという言葉も聞いた覚えがあります。

PDF ReferenceあるいはPDFをAdobe Reader で表示したときのフォントの属性の用語と、一般に使われる用語に少しずれがあるような気もします。

そこで、これから少しフォントの種類について、調べて、整理してみたいと思います。

Type1 フォント

アウトラインフォントと言いますと、なんといっても、Type1フォントを筆頭に挙げなければならないと思います。

2005年11月24日 消え去るType1フォントを参照してください。そこに、Type1フォントの簡単な歴史を紹介しています。

一部繰り返しになりますが、Type1フォントは、次のようなものです。
・1980年代にアドビシステムズが、PostScript言語用のフォント形式として開発し、1985年アップルのレーザライターに採用されて普及した。
2005年11月03日 PDFの作成方法(2) – PostScriptの登場をご覧ください。
・Type1は、PostScriptでアウトラインフォントを効率的に表現したもの。PostScriptの仕様は公開されて、サードパーティがクローン製品を作ることができた。しかし、Type1フォントの仕様は公開されず、それらのクローン製品でType1フォントをラスタライズすることができなかった。
・Type1フォントは、印刷用に用意されたものでPSプリンタ用に使われた。
・1989年12月に出たATM(Adobe Type Manager:Type1フォントのラスタライザ)によって、初めてType1フォントをパソコンの画面やビットマップ・プリンタで出せるようになった。それに続いて、1990年3月にType1フォントの仕様が初めて公開された。Windows9x/ME、MacOS 8/9で、Type1フォントを表示するにはATMが必要。
・Windows2000以降、アップルのMacOS X以降では、Type1フォントのラスタライザが標準搭載されているのでATMは不要になった。
・Type1フォントは、グリフのアウトラインデータを収録したPFB(Printer Font Binary)ファイルとフォントのメトリック情報を集録したファイルのペアで使う。このためフォントファイルがOS独立でない。
- Windowsの場合は、PFM (Printer Font Metrics)ファイル
- UnixなどではAFM(Adobe Font Metrics)ファイル。

Type1フォントは、このような特徴をもちパソコンのアウトライン・フォントの草分けとして大きな影響を及ぼしました。しかし、アドビシステムは、既にType 1フォントの販売を終了しています。他のフォント・ベンダもType1フォントの販売を終了しつつあるようです。このようにType1フォントの重要度は、歴史的な存在になりかけているようです。

※参考資料
"TrueType, PostScript Type 1, & OpenType: What’s the Difference?"Thomas W. Phinney

アドビは2019年10月にPhotoshopPhotoshop での PostScript Type 1 フォントのサポート終了を発表していましたが、2021年1月には2023年をもって、Type1フォントのサポートを終了することを発表しました。これにより長く使われてきたType1フォントの終焉となります。

※参考資料
Photoshop での PostScript Type 1 フォントのサポート終了
PostScript Type 1 フォントのサポート終了

TrueType

次はTrueTypeです。今は、TrueTypeと言いますと、Microsoft Windowsに標準搭載のフォント技術という印象があります。しかし、TrueTypeフォント技術は、もともとAppleがOSレベルで拡大・縮小可能なフォントを実現しようとして開発を始めたものです。Microsoftは別途TrueImageという技術を開発していました。

TrueImage
これを見ますと、TrueImageは、Cal BauerとBauer Enterprisesが開発して、1989年にMicrosoftが買収した、PostScript互換のインタープリタとされています。

Microsoftとアップルは、TrueImageとTrueTypeをクロスライセンスして、TrueTypeがWindowsで使えるようになったのだそうです。

TrueImageは、PostScript互換のプリンタ用に商品化されましたが、結局あまり成功することなく終わってしまいました。

現在、Webで検索しますと、TrueImageは、他の会社の何の関係もない(?)製品名になってます。こうして見ますと、なんとなくアップルは庇を貸して母屋を取られたのではないかという印象がありますね。

このあたりの経緯は、JAGATの研究会の報告にも見られます。
アドビの最初のつまずき : 1989年

TrueTypeとType1のアウトラインデータの形式の特性、ラスタライザの性能特性などのグリフのデザインとその可視化の技術的な優劣については、いろいろな議論があるようです。

TrueTypeフォントのファイル形式としての特長をまとめますと、次のようなことになります。
・Type1フォント形式と違い、アウトライン情報とメトリック情報はひとつのファイルに収容されている。
・アップルのMacintosh System7.0 とWindows3.1以降のOSに、TrueTypeラスタライザが標準で搭載されていてOSレベルでサポートされている。この点で、Type1はPostScriptプリンタという高品位印刷の領域から始まったのと違い、TrueTypeは最初から非常にポピュラーな存在である。
・Microsoft Windowsには、多数のTrueTypeフォントファイルがバンドルされている。このファイルの拡張子は、.TTF、と.TTCがある。.TTCは、True Type Collectionの略でひとつのフォントファイルに複数のフォントを含んでいるもの。CJKフォントにこの形式が見られる。例えば、MS明朝とMS P明朝がひとつのフォントファイルにまとめられていたり、MSゴシックとMS Pゴシックがひとつのフォントファイルまとめられているなど。

※参考資料
A History of TrueType
Microsoft Typography TrueType

CFF/Type2 フォント

CFF(Compact Font 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に変換してからリーダで表示したり、プリンタで印刷されます。

参考資料
CFF / Type 2 Q & A

なお、CFF/Type2というフォントの形式は、単独のフォント形式名としては存在しないようです。むしろCFF形式は、OpenTypeの中でType1フォントを保存する形式として使われることで普及しています。

マルチプルマスターType1フォント

マルチプルマスター・フォントというのは、Type1フォントの拡張で、ひとつのフォント・プログラムから様々な書体のフォントを作りだすことができるものです。

フォントのウエイト(ライトから極太)、幅(コンデンスからエクスパンド)などのフォントのデザインの次元を使うことで行います。

※参考
マルチプルマスターダイアログ

アドビとアップルはそれぞれ独自の技術を開発したようです。

マルチプルマスターType1フォントはアドビが開発した方法。アップルのはTrueType用ですので別のものです。

アドビの方法では、フォントのウエイト、幅、サイズなどのデザイン軸について、両極端の全てのフォントを用意しておき、その間に入るものを自動的に生成するもののようです。

Multiple Master Fonts

中間のデザイン特性をもつフォントの生成は、ATMなどのフォントのラスタライザが行います。PDFにマルチプルマスター・フォントを埋め込む場合は、実際にラスタライザが補完して作り出したフォントを埋め込みます。マルチプルマスター・フォントそのものをPDFに埋め込むことはありません。

なお、CFF/Type2では、最初は用意されましたが削除されてしまい、これらの仕様ではマルチプルマスター・フォントは廃止された状態になっています。

PostScript fontsによりますと、アドビは、1999年にマルチプルマスター・フォントの開発を止めるとアナウンスしたようです。今までに制作されたマルチプルマスター・フォントは、約50種類と少ないようということを見ても、マルチプルマスター・フォントはあまり成功したフォント形式とは言えないようです。

"TrueType, PostScript Type 1, & OpenType: What’s the Difference?"Thomas W. Phinney
の最後の方にも、MMType1について成功していないと書いてあります。成功しなかった理由として、サポートする(MMType1を読んで、ラスタライズ、画面表示できる)アプリケーションが少なかったことを挙げています。

MMtype1を実現するには、各軸にそった極端なグリフセットを作らないといけないのですが、3軸だと8種類になります。それなら、最初から、8家族からなるフォント・ファミリーを制作するほうが手っ取りばやいという訳です。

私は、最初にMMtype1についての説明を読んで、なんてすごいアイデアだと思ったことを覚えています。しかし、どうやら現実の方が厳しかったようです。

Type3 フォント

Type3フォントは、PostScriptでグリフを表現するものです。2006年04月26日 PDFとフォント(17) Type1 フォントで説明しましたように1980年代は、Type1フォントのファイル形式は非公開でした。

これに対して、Type3のファイル形式は、最初から公開されていましたので、一般の人がPostScriptベースでアウトライン・フォントを開発しようとするとType3を使うしかなかったわけです。

Type3フォントの仕様については、 PostScript Language Reference Manual, 2nd Edition; Addison-Wesley (ISBN #0-201-18127-4)に記述されています。

青木俊道(あおきとしみち)さんという方のWebページで「Type3フォントについて」実際に作って試した話が載っています。

アドビのサポートページで、Type1とType3についての比較を見ますと次のようなことが書いてあります。

・Type3フォントの文字の字形は、標準のPsostScriptの命令で記述できる。
・従って、作るのは簡単。また複雑な形状の文字を作ることもできる。
・アドビは、Type3フォントの仕様を公開したが、自社でType3フォントを作成したことはなく、配布したこともない。
・Adobe Type Manager などのアプリケーションはType3フォントをサポートしていない。

※参考資料
Distinguishing Type 1 from Type 3 Fonts

要するにType3フォントの仕様はPostScriptでグリフを作れるよ、というサンプルのようなものなんでしょうね。

PDF Reference(1.6版)には、5.5.4項(pp. 389~395)に7ページも費やしてしっかりとType3フォントの説明があります。

Type0 フォント

Type0フォントは、複合(Composit)フォントと言い、もともとはPostScriptの仕様書で定義されている、複数のフォントを束ねて高度なフォントを作る仕組みです。

Type1フォントは1バイトでローマ字用のもののため、CJKの文字を扱えませんでした。そこで、アドビはType0フォントの仕組みを利用して、OCF(Original Composite Font)を開発し、さらに、その後CID-Keyedフォントを開発しました。

このうち、OCFフォントはPostScriptでのみ使えるもので、PDFの仕様ではサポートされていません。

OCFフォント

この記事を読みますと、OCFフォントは、日本のDTP分野で一時代に流行(という言葉が適切かどうかわかりまえせんが)したものですが、既に、フォント・メーカはサポートを終了してしまっているようです。Mac OS Xではインストールさえもできないとあります。PDFの仕様書を検索しても、OCFという言葉は一言も出てきません。

CID-Keyedフォントの概要は次に説明があります。
CID-Keyed Font Technology Overview Technical Note #5092

PDFで使えるのは、CID-Keyedフォントのみに制限されています。
PDF Reference V1.6
5.6 Composite Fonts (p.403)を参照。

PDF Referenceでは、composite font = Type0 フォント= CID-Keyedフォントとなっています。しかもcompositの意味が、1バイト以上の並びを解読して、CIDfontからグリフを選択する仕組みという意味になっていてPostScriptとは異なっています。

さて、ややこしいことに、PDF ReferenceのCIDFontには、CIDFontType0CIDFontType2の2種類があります。

Technical Note #5092のCID-KeyedフォントとPDFの2種類のCID-Keyedフォントとの関係が今ひとつ分かりにくいですね。

CID-Keyedフォント (PostScript)

CID-Keyed フォントは、PostScript Type1形式の複合フォントとしてOCFの後継として規定されました。

CJK /CID-keyed fonts CID フォントに関する一連の仕様

CIDフォントの構成要素は、次のものです。
・CID文字集合
・CMapファイル
・CIDフォントファイル

(1) CID文字集合 
日本語、中国語(繁体字、簡体字)、韓国語についてグリフを集めてCID番号をつけたものです。これについては、既に2006年01月15日 PDFと文字 (23) – Adobe-Japan12006年01月16日 PDFと文字 (24) – Adobe-GB1, Adobe-CNS1, Adobe-Korea1で簡単に紹介しました。

(2) CMap
さまざまな符号化文字集合の文字コード番号から、CIDへの対応表です。アドビが用意した標準のCMapは無償配布されています。フォントベンダなどが独自に定義することもできます。

これについても、既に、
2006年01月17日 PDFと文字 (25) – CMapで文字コードからCIDへ変換
で説明しました。

(3) CID フォントファイル
これは、フォントのグリフを記述するプログラム(データ)を収録したファイルです。フォントベンダが開発するものです。Type1のグリフアウトライン形式と互換の形式になっていて、Adobe Type ManagerやPostScriptインタープリタで解釈してラスタライズすることができます。

CID-Keyedフォントを表示・印刷するときは、CMapを使って文字コードからCIDに変換し、CIDをキーにして、文字のグリフを取り出し、そのグリフをラスタライズするものです。

CID-Keyed Font Technology Overview Technical Note #5092にはCIDフォントの特長として次のようなことを挙げています。
・CMapファイルを使って、複数のCID-Keyedフォント、OCFフォント、Type1、Type3フォントを参照して使える。
・文字を追加して、拡張していくのが簡単。
・Type1よりフォントを取り出してラスタライズするのが速い。
・広範な機器に使える。
・OCFと比べてフォントのファイル数が少なくて済む。コンパクトになる。
など。

基本的にCJK用なので日本のフォントベンダもCIDフォントを多数出しています。
CIDフォントにモリサワの報告があります。OCFからCIDへの移行で細かいことでかなりいろいろな問題を経験しているとのこと。

CID-Keyedフォント(PDF)

PDF ReferenceにもCID-Keyedフォントの説明があります。

5.6.1 CID-Keyed Font Overview
PDF Reference V1.6 pp.403 -405

ここを読みますと、昨日、説明しましたPostScriptを想定するCID-KeyedフォントとPDFのそれでは微妙に違いがあることがわかります。

まず、PDF Referenceではフォントをsimpleフォントとcompositeフォントの二つに大別しています。simpleフォントとは1バイトフォント、compositeフォントとは複数バイトのフォントです。

2006年05月03日 PDFとフォント(22) Type0 フォントでも説明しましたが、PDF Referenceでは、compositeフォントのことをType0フォントと言い、具体的にはCID-Keyedフォントのみ使うことができます(OCFはサポートされていない)。

PDFのCID-Keyedフォントは次のものから構成されます。
・CID
・CMap
・CIDFont

(1) CIDは、昨日説明しましたPostScriptと同じものです。
(2) CMapも同じような役割なのですが、PDFでは少し機能を限定しています。
(3) 一番の違いはCIDFontです。PostScriptの時とは違い、PDFではCIDFontにはType0とType2の2種類があります。

・CIDFont Type0は、アドビのType1フォントの形式でグリフを記述したもの
・CIDFont Type2は、TrueTypeフォントの形式でグリフを記述したもの

PDFでは、1バイトのTrueTypeフォントをsimpleフォントの1種類として扱い、CJKなどの複数バイトのTrueTypeフォントは、compositeフォントとして、Type0フォントの仕組みを使って扱っているということになります。

この影響でPDFではCMapによるグリフ選択の仕組みも、PostScriptのCID-Keyedフォントとは少し異なっていて、TrueTypeの取り扱いが追加されます。このあたりは細かい技術的な話ですので省略します。

このことは、1バイトのTrueTypeフォントと2バイトのTrueTypeフォントが、AcrobatのPDFのフォント・プロパティ情報で、表示が違うことからも確かめることができます。

AboutFonts/PDF-Fonts-Property.png
この画面ではTrueTypeTrueType(CID)の区別が見られます。

OpenType

さて次は、いよいよ真打OpenTypeの登場です。OpenTypeという名前は、既に何回か出てきました。

ここでは、フォントファイル形式としてのOpenTypeとそれがPDFでどのように扱われるかについて検討してみましょう。

いままで延々といろいろなフォントの形式を説明してきましたが、これはすべて、本命であるOpenTypeの説明をするための準備をしてきたようなものです。

【歴史】
OpenTypeは、最初Microsoftによって、TrueType Open として開発されました。その後、1996年にアドビが開発に参加、1997年4月に共同で発表されました。
Adobe Systems and Microsoft Deliver OpenType TM Font Specification

1990年代前半まで、アドビのPostScript Type1フォントと、マイクロソフト/アップルのTrueTypeという2大アウトライン・フォントがしのぎを削るという状況でした。この両陣営が協力してOpenTypeというフォントファイル形式を開発したのは、アウトライン・フォントの歴史上では、非常に大きなできごとと思います。

OpenTypeは、TrueTypeとType1フォント技術の後継として位置付けられています。

OpenTypeは、この記事を最初に書いた2006年時点で、ISOで標準化が進んでおり、新しい標準は、OpenType 1.4で、ISOで名前を変更して"Open Font Format"になるようです。2006年終わりに最初の版が出ると期待されていました。標準仕様になったのは予定より遅れ、2009年のISO/IEC 14996-22:2009が初版です。その後も改訂が進み、2019年のISO/IEC 14996-22:2019に至っています。

【参考資料】
ISO/IEC 14496-22:2019 Information technology — Coding of audio-visual objects — Part 22: Open Font Format

【普及の見通し】
アウトライン・フォントの普及には、フォント制作者が提供するフォントファイルと、それを使うアプリケーション、フォントファイルからアウトラインを取り出して文字を可視化するラスタライザの3つが大きな要因となります。

OpenTypeはもともとTrueTypeの延長として開発されていますので、TrueTypeフォントの多くについては、大きな変更なく使用できるだろうと思います。これに対してアドビはType1フォントを全てOpenType形式に変換し、OpenTypeフォントに集中しています。

Wikipediaの記事では、2005年の末で、10,000種類のOpneTypeが入手できるそうですが、このうち1/3がアドビのものと推定しています。やはり早く手がけたものが有利ということでしょうか。

いずれにしても、フォントファイルの供給という面からは、今後、OpenTypeが圧倒的に増えるだろうと予想できます。

【参考資料】
Wikipedia OpenType

フォントファイルとしてのOpenType

次にOpenTypeのフォントファイルとしての主な特徴について整理しておきます。

1.グリフのアウトライン記述形式
OpenTypeのグリフアウトラインは、TrueTypeアウトラインと、PostScriptアウトラインのどちらかを使用できます。PostScriptアウトラインは、CFF/Type2形式です。
なお、アウトライン形式に加えて、ビットマップのグリフを含めることもできます。

OpenTypeフォント・ファイルの拡張子は次のようにつけます。
・TrueTypeアウトラインの場合:.OTF、または、.TTF(過去のシステムでも使用可能にしたいとき)
・TrueTypeコレクションの場合:常に.TTC
・PostScriptアウトラインのみを含む場合:.OTF

2.cmapテーブル
フォントを使用するアプリケーション・OSで使う文字コードからグリフ番号(GID)への対応表をcmapと言います。TrueTypeと同じものと思います(推測)。

cmapは、一つのフォントファイルに複数のテーブル(cmapサブテーブル)を持つことができます。

サブテーブルは、プラットフォームID(Windows:3、Macintosh:1)と、プラットフォーム毎の符号化方式(2バイトのUnicode:1、4バイトのUnicode:10など)の順で並べます。フォントファイルに様々なOS別のサブテーブルを用意することで、一つのOpenTypeフォントをマルチ・プラットフォームで使えることになります。

cmapサブテーブルは7種類(Format:0, 2, 4, 8, 10, 12)あり、各サブテーブルの先頭に該当する種類がセットされます。

Unicodeサポートについて
UnicodeからGIDへのcmapサブテーブルは、次の3種類が使えます。
・Format4:[U+D800 - U+DFFF] (サロゲートペア)以外の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フォントを作ることはできません。Arial Unicode MSの最新Unicode全文字版はできないということになりますね。

※参考資料
OpenType specification
特に
cmap - Character To Glyph Index Mapping Table

OpenTypeによるグリフのレイアウト

OpneTypeでは、OpenTypeレイアウトというコンセプトを持っています。

OpenTypeレイアウトは、フォントファイル中には特性テーブル(feature table)として用意されます。

これは、グリフを行にそって配置していく際に次のようなことを行うためのものです。
・複数のグリフのリガチャ、文字の位置によるグリフの変化など。
・文字の配置方法に依存するグリフの入れ替え
・2次元平面上でのグリフの配置、グリフの付加

例えば、日本語ですと縦書と横書での句読点、括弧類の形の入れ替えたり、アラビア文字では、単語の中での文字の位置により、グリフの形が変わります。アラビア文字については、
2006年01月19日 PDFと文字 (27) – アラビア文字の扱い

2006年01月22日 PDFと文字 (30) – アラビア文字Harakatの結合処理
あたりをご参照ください。

OpenTypeレイアウトには次のような幾つかの共通テーブルがあります。
・BASE ベースラインについてのデータ
・GDEF グリフの定義データ
・GPOS グリフの配置データ
・GSUB グリフの入れ替えデータ
・JSTF グルフの均等配置のためのデータ

文字・言語によってそれぞれのテーブルの中に用意されているデータを使って、グリフに対する操作・配置を行うことができます。

フォントファイルから取り出したグリフの操作や配置は、WindowsではUniscribeというグリフ・レイアウト・エンジンを使って行うことができます。もちろん、アプリケーションが自前のグリフ・レイアウト・エンジンを使用することも可能です。

ちなみに、アンテナハウスのAH Formatterでは、アラビア文字、ヘブライ文字、タイ文字など多様なスクリプトについて、自前のグリフレイアウト・エンジンを使ってグリフの配置を行っています。

このようにOpenTypeのレイアウト・テーブルを使うことで、組版ソフトなどのアプリケーションが高度なタイポグラフィを実現できます。

フォント技術の将来

アドビシステムズとMicrosoftが支配するアウトライン・フォント技術

こうしてみますと、コンピュータ上のアウトラインフォントの技術については、アドビシステムズとMicrosoftがほとんどを握ってしまっているかのように思います。

アウトラインフォントを使う場合、困るのはフォントデータとラスタライザがセットでないと役に立たないということがあります。フォントデータの方は、フォントベンダがまだ沢山ありますし、ツールを使えば新しいフォントを作り出すことはできます。

問題はアウトラインフォントのラスタライザです。例えば、OpenTypeを例に取りますと、TrueTypeアウトラインと、CFF/Type2アウトラインの2種類があります。OpenTypeを可視化するには、その2種類のフォントのラスタライザが必要です。

OpenType の仕様書には、
---引用開始---
PostScript data included in OpenType fonts may be directly rasterized or converted to the TrueType outline format for rendering, depending on which rasterizers have been installed in the host operating system.
---引用終了---
OpenType 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配信ができるようになるかもしれません。

大いに期待したいものです。

△ページ上部へ
スペース