2012/09/30

Ubuntu 10.04 搭載フォントリスト

Ubuntu 10.04 に搭載されているフォントを整理したいのですが、私には要不要の区別ができません。それぞれのフォントの内容を知らないので当然なのですが、区別できるようリストにして整理したいと思います。

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 - エンコードの対象外
という6階建てのエンコード体系になっているそうです。「UTF-8」を使ってエンコードするデータファイルでは、日本語は3バイト/文字を消費するようです。「EUC-JP」や「Shift_JIS」だと2バイト/文字で済むようですが、それと比べるとファイルサイズが(だいたい)5割増しというのはムダと感じることもありそうです。

「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閲覧時の「文字欠け」が気になるので全部削除するわけにもいきませんけど、時間を掛ければ「いい塩梅」にできそうな気がしました。

今のところ、残すべきフォントの優先順位は次のようになっています。

  1. Web の閲覧では、"Takao Pゴシック"、"Takao P明朝"、Takaoゴシック の3フォントは最低限必要ということが分かりました。一般名として sans-serif, serif, monospace を何にするか、ブラウザに指示する必要があるためです。
  2. Fontconfig システムの初期値では、 suns-serif として "Dejave Sans", "Takao Pゴシック" 、 serif として "Dejave Serif", "Takao P明朝" 、 monospace として Takaoゴシック が割り当てられていました。この2つのフォントグループはお薦めの組み合わせと思われるのでそのまま使うことにします。
  3. コアフォントは普及しているフォント集なので Webページ で指定されていることが多いようです。搭載しておくと読み易さを期待できると思います。
  4. ユニコードラージフォント(の類)は「重宝するかもしれない」と思います。
  5. ポストスクリプトフォントはシステムやPDFの閲覧に必要なものかもしれません。詳しいことが分からないので保留しておきます。
  6. 中国語フォントはユニコードのカバーに必要ですが、なくても困らないかもしれません。

削除しても(Ubuntuソフトウェアセンターから)再インストールできるものが多いので確認しながらぼちぼち試してみたいと思います。

その他に、
  • italic は「傾いた飾り付きの手書き風」スタイルで、 oblique は「傾いているだけ」のスタイルという違いがある。
  • ブラウザにはフォントスタイルを加工する機能があるので、「標準スタイル」だけのフォントだけでもそれほど困らない。
  • 中国語フォントには「ひらがな」「カタカナ」のグリフが収録されているので日本語フォントの代用になる。

ということも分かりました。

フォントのグループごとに分かったこともあるのですが、それは別の機会にまとめたいと思います。