Fontconfig TM システム:
搭載フォントリストを得るために fc-list コマンドを実行することから始めました。このコマンドは Fontconfig システムの一部なんだそうです。Ubuntu 10.04 では /etc/fonts フォルダに設定ファイルが格納されていて、その中の fonts.conf に管理対象のフォント用フォルダが記述されています。詳しく知るには英語の解説を読むことから始める必要がありますけど、後々の作業も面倒に思えました。個人的には「あまり係わりたくない管理システム」という印象です。
ユニコード:
ユニコードは最大で1,112,064文字を収録でき、そのコード長は21bitで、U+0000〜U+10FFFFまでのコードポイント範囲があるそうです。範囲は1,114,112文字分に相当しますが、サロゲートペアのための2,048文字分は使えないので冒頭の数字になるようです。符号化(エンコード)方式は次のようなものがあるそうです。
- UTF-7:(運用上の問題が多いので)非推奨
- UTF-8:1〜4バイトの可変長コードを使う方式(Webでは一般的に使われている)
- UTF-16:サロゲートペアを使った4バイトまたは2バイトのコードを使う方式
- UTF-32:4バイトの固定長方式(ファイルサイズが大きくなるのであまり使われない)
このページも「UTF-8」を符号化方式として指定していますけど、日常的に使う文字は2バイトで表現できる「基本多言語面(BMP):U+0000〜U+FFFF」にそのほとんどが収録されているようなので、実際に格納されている文字データは1バイトか2バイトのいずれかになっているんだ、と思ったら違いました。
| 範囲 | データ長 | バイト数 | 文字数 | Note |
| U+0000〜U+007F | 7bit | 1 | 128 | ASCII互換部分 |
| U+0080〜U+07FF | 11bit | 2 | 1919 | |
| U+0800〜U+FFFF | 16bit | 3 | 63487 | CJK統合漢字含む(BMP境界まで) |
| U+10000〜U+1FFFFF | 21bit | 4 | 2031615 | U+10FFFFまでが対象 |
| U+200000〜U+3FFFFFF | 26bit | 5 | - | エンコードの対象外 |
| U+4000000〜U+7FFFFFFF | 31bit | 6 | - | エンコードの対象外 |
「UTF-16」ならファイルサイズを節約できそうですけど、Webでは普及していないようです。なぜなんでしょう。
ASCII互換の基本ラテン文字:
| 範囲 | 開始ポイント | 終了ポイント | 文字数 | Note |
| 基本ラテン文字 | U+0000 | U+007F | 128 | Unicode 1.0 (1991年策定、ASCII互換) |
| ラテン1補助 | U+0080 | U+00FF | 128 | Unicode 1.0(↓2バイトデータ/UTF-8) |
| ラテン文字拡張A | U+0100 | U+017F | 128 | Unicode 1.0 |
| ラテン文字拡張B | U+0180 | U+024F | 208 | Unicode 1.0 |
| ラテン文字拡張追加 | U+1E00 | U+1EFF | 256 | Unicode 1.1(↓3バイトデータ/UTF-8) |
| ラテン文字拡張C | U+2C60 | U+2C7F | 32 | Unicode 5.0 |
| ラテン文字拡張D | U+A720 | U+A7FF | 224 | Unicode 5.1(2008年策定) |
| 合計 | - | - | 1104 | - |
さて、「基本ラテン文字」ですけど、次のようなグリフ(字形)が登録されています。ラテン文字以外のフォントでも大抵はこの範囲を含んでいます。日本語キーボードからも直接入力できる利用頻度の高い文字です。
ASCII ( American standard code for information interchange ) は1963年にアメリカで制定されたコンピュータや通信機器のためのコードだそうです。当時のコンピュータの性能と関係ありそうですが、7ビット(128文字)で表現できるよう制限されていて、タイプライターで使っていたような文字や記号と機械を操作するための制御文字がセットになっています。ユニコードにはたくさんの範囲がありました。通常、ひとつの範囲には「文字」か「記号」だけが収録されているようでしたけど、この範囲では、「数字」、句読点などの「記号」、機械のための「制御文字」が混在しています。同様に「ラテン1補助」でも制御文字などが混在してして、この二つの範囲はユニコード全体から見ると「特殊」ですけど、「合理的」な理由があるはずです。
「UTF-8」では可変長コードを扱いますが、ASCII互換の「基本ラテン文字」だけが1バイトデータとして扱われます。使用頻度の特に高い文字や記号の集まりだと思いますので、ファイルサイズをコンパクトにするのに(英語圏の人は特に)都合のよい配置なのは(漢字圏の私でも)当然なんだと理解できます。
大部分の文字や記号は3〜4バイトのデータとして扱われます。日本語の文字は3バイトです。「EUC-JP」などのローカルなエンコード方式が使われ続ける理由のひとつは、ファイルサイズの効率の良さだと思います。他の国でも同様で、表音文字なら1バイトで扱うことも容易だと思うんですが、これがUTF-8では3バイト必要になります。非効率が嫌われることは少なくないので、UTF-8方式がどれほど普及してもローカル方式が消えて無くなるとは思えませんでした。
ユニコードには「古代文字」や「記号」、「図形」など「現代文字以外」のグリフが収録される予定です。内容が充実するのは将来の話だろうと思うので今のところメリットは未知数ですけど、コンパクトなコードにはないこの利点に「将来性あり」と思いたいです。(携帯電話の絵文字は2010年に追加されたそうです)
周辺の事情が少し分かったところで、本題のリスト整理に移りたいと思います。
フォントリスト:
リストでは、「グリフ(字形)サンプル」及び「フォントファミリーのファイル数」、「登録グリフ数」、「登録文字種類」を比較できるようにしました。- グリフ数と収録文字種類は、(Ubuntuソフトウェアセンターにあった) FontForge で調べました。
- 文字種類が多いので「アラビア文字」以降は「他」としか記載していないものもあります。
- 各フォントのラテン文字の収録範囲は、「基本ラテンだけ」や「ラテン1補助まで」など様々でした。
【文字凡例:】「 ラ:ラテン」「Φ:ギリシャ」「キ:キリル」「ル:アルメニア」「へ:ヘブライ」「ア:アラビア」
| 分類 | フォントファミリー名 | スタイル・ウェイト | グリフ数 | 文字 | Note |
| コアフォント | Andale Mono (01IOl) | 標 | 661 | ラΦキ | Lucida Console |
| Arial | 標伊 太伊 | 1378 | ラΦキ へア | 主要sans-serif | |
| Arial Black | 標 | 671 | ラΦキ | ||
| Comic Sans MS | 標 太 | 579 | ラΦキ | ||
| Courier New | 標伊 太伊 | 1378 | ラΦキ へア | 主要monospace | |
| Georgia (0123456789) | 標伊 太伊 | 590 | ラΦキ | ||
| Impact | 標 | 663 | ラΦキ | ||
| Times New Roman | 標伊 太伊 | 1378 | ラΦキ へア | 主要serif | |
| Trebuchet MS | 標伊 太伊 | 577 | ラΦキ | ||
| Verdana | 標伊 太伊 | 701 | ラΦキ | ||
| Webdings | 標 | 255 | 非文字 | ||
| 代替フォント | Liberation Mono | 標伊 太伊 | 666 | ラΦキ | Courier New |
| Liberation Sans | 標伊 太伊 | 674 | ラΦキ | Arial | |
| Liberation Serif | 標伊 太伊 | 667 | ラΦキ | Times New Roman | |
| GNU FreeFont | FreeMono | 標 斜太 斜 | 3331 | ラΦキルへア他 | |
| FreeSans | 標 斜太 斜 | 4000 | ラΦキルへア他 | ||
| FreeSerif | 標伊 太伊 | 7972 | ラΦキ へア他 | 文字種最多フォント | |
| Unicode Large font | DejaVu Sans | 標 斜太 斜 | 5465 | ラΦキルへア他 | |
| DejaVu Sans Condensed | 標 斜太 斜 | 5465 | ラΦキルへア他 | ||
| DejaVu Sans Light | 標 | 1799 | ラΦキル | ||
| DejaVu Sans Mono | 標 斜太 斜 | 3168 | ラΦキ ア他 | ||
| DejaVu Serif | 標伊 太伊 | 3063 | ラΦキ 他 | ||
| DejaVu Serif Condensed | 標伊 太伊 | 3063 | ラΦキ 他 | ||
| 一般名 | monospace | フォント不定 | |||
| serif | フォント不定 | ||||
| sans-serif | フォント不定 | ||||
| ポストスクリプト | Century Schoolbook L | 標伊 太伊 | 561 | ラ キ | |
| Dingbats | 標 | 201 | Type1,非文字 | ||
| Nimbus Mono L | 標 斜太 斜 | 561 | ラ キ | ||
| Nimbus Roman No9 L | 標伊 太伊 | 561 | ラ キ | ||
| Nimbus Sans L | 標伊 太伊 | 668 | ラ キ | ||
| Standard Symbols L | 標 | 188 | Φ | Type1 | |
| URW Bookman L | 標伊 太伊 | 543 | ラ キ | ||
| URW Chancery L | 伊 | 501 | ラ キ | 標準スタイルなし | |
| URW Gothic L | 標 斜太 斜 | 561 | ラ キ | ||
| URW Palladio L | 標伊 太伊 | 523 | ラ キ | ||
| Symbol | 標 | 188 | Φ | Type1 | |
| Bitstream Charter | 標伊 太伊 | 227 | ラ | Type1 | |
| Courier 10 Pitch | 標伊 太伊 | 227 | ラ | Type1 | |
| その他 | OpenSymbol | 標 | 909 | 記号 | |
| アラビア文字 | KacstOne | 標 | 443 | ア | |
| インド系文字 | gargi | 標 | 449 | ラ(A-Z) | デーバナーガリー文字 |
| Lohit Hindi | 標 | 352 | デーバナーガリー文字 | ||
| Mukti Narrow | 標 太 | 601 | ラ(A-Z) | ベンガル文字 | |
| Lohit Bengali | 標 | 484 | ベンガル文字 | ||
| Lohit Punjabi | 標 | 155 | グルムキー文字 | ||
| Saab | 標 | 197 | グルムキー文字 | ||
| Rekha | 標 | 406 | ラ(A-Z) | グジャラーティー文字 | |
| Lohit Gujarati | 標 | 344 | グジャラーティー文字 | ||
| ori1Uni | 標 | 289 | オリヤー文字 | ||
| Lohit Tamil | 標 | 245 | タミル文字 | ||
| Pothana2000 | 標 | 635 | テルグ文字 | ||
| Vemana2000 | 標 | 635 | テルグ文字 | ||
| Kedage | 標 太 | 387 | カンナダ文字 | ||
| Mallige | 標 太 | 387 | カンナダ文字 | ||
| Meera | 標 | 1153 | ラ(A-Z) | マラヤーラム文字 | |
| Rachana | 標 | 1095 | ラ(A-Z) | マラヤーラム文字 | |
| タイ文字 | Garuda | 標 斜太 斜 | 355 | ラ | |
| Kinnari | 標伊斜太伊斜 | 239 | ラ(A-Z) | ファイル多過ぎ | |
| Loma | 標 斜太 斜 | 279 | ラ(A-Z) | ||
| Norasi | 標伊斜太伊斜 | 399 | ラ | ファイル多過ぎ | |
| Purisa | 標 斜太 斜 | 405 | ラ | ||
| Sawasdee | 標 斜太 斜 | 359 | ラ | ||
| Tlwg Typist | 標 斜太 斜 | 331 | ラ | ||
| Tlwg Typo | 標 斜太 斜 | 326 | ラ | ||
| TlwgTypewriter | 標 斜太 斜 | 331 | ラ | ||
| TlwgMono | 標 斜太 斜 | 319 | ラ | ||
| Umpush | 標 斜太 斜 | 280 | ラ(A-Z) | 細いフォントあり | |
| Waree | 標 斜太 斜 | 408 | ラ | ||
| ラオ文字 | Phetsarath OT | 標 | 290 | ラ | |
| クメール文字 | Khmer OS | 標 | 730 | ラ | |
| Khmer OS System | 標 | 730 | ラ | ||
| CJK統合漢字 | 文泉驛等寬微米黑 | 標 | 48640 | ラΦキ 漢かカハ | 中国語 |
| 文泉驛微米黑 | 標 | 48638 | ラΦキ 漢かカハ | 中国語 | |
| Takao Pゴシック | 標 | 12738 | ラΦキ 漢かカ | 日本語 | |
| Takao P明朝 | 標 | 12738 | ラΦキ 漢かカ | 日本語 | |
| TakaoExゴシック | 標 | 12505 | ラΦキ 漢かカ | 日本語 | |
| TakaoEx明朝 | 標 | 12505 | ラΦキ 漢かカ | 日本語 | |
| Takaoゴシック | 標 | 12739 | ラΦキ 漢かカ | 日本語 | |
| Takao明朝 | 標 | 12739 | ラΦキ 漢かカ | 日本語 | |
| UnBatang | 標 太 | 19458 | ラΦキ 漢かカハ | ハングル | |
| UnDotum | 標 太 | 19448 | ラΦキ 漢かカハ | ハングル |
まとめ:
搭載フォントをひと通り調べて、文書作成で不要なフォントは区別できるようになりました。私が使えるのは日本語とローマ字や記号としてのラテン文字の一部なので、それ以外は不要です。Web閲覧時の「文字欠け」が気になるので全部削除するわけにもいきませんけど、時間を掛ければ「いい塩梅」にできそうな気がしました。今のところ、残すべきフォントの優先順位は次のようになっています。
- Web の閲覧では、"Takao Pゴシック"、"Takao P明朝"、Takaoゴシック の3フォントは最低限必要ということが分かりました。一般名として sans-serif, serif, monospace を何にするか、ブラウザに指示する必要があるためです。
- Fontconfig システムの初期値では、 suns-serif として "Dejave Sans", "Takao Pゴシック" 、 serif として "Dejave Serif", "Takao P明朝" 、 monospace として Takaoゴシック が割り当てられていました。この2つのフォントグループはお薦めの組み合わせと思われるのでそのまま使うことにします。
- コアフォントは普及しているフォント集なので Webページ で指定されていることが多いようです。搭載しておくと読み易さを期待できると思います。
- ユニコードラージフォント(の類)は「重宝するかもしれない」と思います。
- ポストスクリプトフォントはシステムやPDFの閲覧に必要なものかもしれません。詳しいことが分からないので保留しておきます。
- 中国語フォントはユニコードのカバーに必要ですが、なくても困らないかもしれません。
削除しても(Ubuntuソフトウェアセンターから)再インストールできるものが多いので確認しながらぼちぼち試してみたいと思います。
その他に、
- italic は「傾いた飾り付きの手書き風」スタイルで、 oblique は「傾いているだけ」のスタイルという違いがある。
- ブラウザにはフォントスタイルを加工する機能があるので、「標準スタイル」だけのフォントだけでもそれほど困らない。
- 中国語フォントには「ひらがな」「カタカナ」のグリフが収録されているので日本語フォントの代用になる。
ということも分かりました。
フォントのグループごとに分かったこともあるのですが、それは別の機会にまとめたいと思います。