概要
Ricty (リクティ) は Linux 環境での研究・開発に適したフリーなプログラミング用 TrueType フォントです。Emacs や Vim を用いた C、C++、FORTRAN、Python、Perl、Ruby、AWK、sed、シェルスクリプト、LaTeX などのコーディングにおける使用を想定しています。以下の 2 つの等幅フォントの合成、および、プログラミング用フォントとしてのいくつかのチューニングを行う生成スクリプトの配布を行なっています。
- Inconsolata
「Top 10 Programming Fonts」や「プログラミング時に最適なフォント『Inconsolata』」などで高い評価を受けているサンセリフ体等幅欧文フォント
- Migu 1M
M+ 1M と IPA ゴシックの合成フォント (旧称 M+1VM+IPAG circle/M+2VM+IPAG circle) であり、「Windows でプログラミングに最適なフォントを探す」などで高い評価を受けているゴシック体等幅和文フォント
Inconsolata 作者の Raph Levien 氏、Migu 1M 作者の itouhiro 氏、M+ 1M 作者の coz 氏、IPA ゴシックのベースとされている TB ゴシック作者の林隆男氏、私のイニシャルから “Ricty” と命名しました。
特徴
ラテン文字には Raph Levien 氏の Inconsolata が適用されます。
それ以外の文字には Migu 1M が適用されます。美しい M+ とロバストな IPA、そして、itouhiro 氏が改良された視認性の高い日本語文字 (半濁音など) が使用できます。
半角文字と全角文字の横幅の比が 1:2 に調整されています。
全角スペースが可視化されます。
全角のコンマ、ピリオド、コロン、セミコロンが半角のそれぞれに対して差別化されています。
en ダッシュ、em ダッシュが破断線のようになります (LaTeX での入力ミス防止のため)。
ライセンス
Ricty が SIL Open Font License Version 1.1 section 5 に違反する解釈ができるとの指摘を受け、万全を期すために Version 3.0.0 より TrueType フォントの配布を中止し、生成スクリプトのみの配布とさせていただいております。
Ricty 生成スクリプトは public domain とします。派生物への著作者表示を要求しません。ただし、使用・複製・改変・再配布は自己責任にて行うことをお願いしています。
Ricty 生成スクリプトにより生成されたフォントは、SIL Open Font License (OFL) Version 1.1、および、IPA Font License Agreement v1.0 に従うものとします。特に、OFL 1.1 section 5 に従い、生成されたフォントの再配布は禁止とします。
生成スクリプトの配布
Ricty の生成スクリプトを配布しています。また、姉妹フォント Ricty Diminished は TrueType フォントを配布しています。
Beta Version
Current Version
Version 3.2.1 (6 Nov. 2012)
- M+ FONTS LICENSE 記述の除去 (Migu 1M の更新に追従)
- いくつかの環境で等幅でなくなる問題に対処
- em ダッシュ処理の修正
Old Versions
Version 3.2.0 (16 Apr. 2012)
- 行間の調整
- コマンドラインオプションの追加
Version 3.1.3 (24 Nov. 2011)
- Ricty Discord のコマンドラインオプション
- コマンドラインオプションの追加
Version 3.1.2 (3 Oct. 2011)
- Migu 20111002 に同期 (後方互換を担保せず)
- コマンドラインオプションの追加
Version 3.1.1 (8 July 2011)
- コマンドラインオプションの追加
Version 3.1.0 (19 June 2011)
- Mac OS X で Regular と Bold が異なる高さで表示される問題に対処
Version 3.0.2 (2 June 2011)
- 生成スクリプトへの auto オプションの追加
Version 3.0.1 (20 May 2011)
Version 3.0.0 (17 May 2011)
- 生成スクリプトの配布開始
- TrueType フォントの配布中止
Version 2.1.0 (7 May 2011)
- Ricty Discord 版パッチスクリプトの配布開始
- 全角のコロン、ピリオドの半角に対する差別化
- em ダッシュの破断線化
Version 2.0.2 (4 May 2011)
- Inconsolata 由来の Ambiguous 文字の全角化
Version 2.0.1 (26 Apr. 2011)
Version 2.0.0 (23 Apr. 2011)
- Inconsolata Version 001.010
- Migu 1M Version 20110418 (M+ TESTFLIGHT 038, IPA ゴシック Ver. 033.02)
- ボールド体の提供開始 (Inconsolata 部分は機械的に生成されたボールド体)
- 和文文字の縮小
- 全角のコンマ、ピリオドの半角に対する差別化
Version 1.1.0 (19 Apr. 2011)
- Inconsolata Version 001.010
- Migu 1M Version 20110418 (M+ TESTFLIGHT 038, IPA ゴシック Ver. 033.02)
- Migu 1M Version 20110418 への追従
- 行間の切り詰め
- em ダッシュの破断線化を中止 (Migu 1M Version 20110418 にて導入された Ambiguous 文字の全角化により)
Version 1.0.0 (18 Apr. 2011)
- Inconsolata Version 001.010
- Migu 1M Version 20110207 (M+ TESTFLIGHT 036, IPA ゴシック Ver. 033.02)
- 全角スペースの可視化
- en ダッシュ、em ダッシュの破断線化
生成方法
FontForge のインストール
Debian/Ubuntu
# apt-get install fontforge
Fedora/CentOS
# yum install fontforge
OpenSUSE
# zypper install fontforge
その他の Linux
FontForge 公式サイトより入手してください。
Inconsolata のインストール
Inconsolata 公式サイトより OpenType file を入手し、インストールしてください。
Migu 1M のインストール
「M+ と IPA の合成フォント」より入手し、インストールしてください (MigMix ではありません)。
Ricty の生成
以上 2 種類のフォントをインストールした後で
% sh ricty_generator.sh auto
もしくは、
% sh ricty_generator.sh Inconsolata.otf migu-1m-regular.ttf migu-1m-bold.ttf
生成には 2–5 分程の時間がかかります。
Ricty のインストール
% cp -f Ricty*.ttf ~/.fonts/
% fc-cache -vf
(おまけ) ricty_generator.sh のコマンドラインオプション
-hヘルプを表示する。
-Vバージョン番号を表示する。
-f /path/to/fontforgefontforge コマンドのパスを指定する。
-vfontforge の警告メッセージを表示する。
-l生成の過程で生じる中間ファイルを削除せずに残す。
-n stringフォントファミリ名を「Ricty」ではなく「Ricty ○○○」として生成する。
-w行間を広くする。
-W行間をかなり広くする。
-bASCII グリフのボールド体をより太くする。
-BASCII グリフのレギュラー/ボールド体をより太くする (レギュラーを、デフォルトのボールド体程度の太さにする)。
-Z unicode他のグリフのコピーすることで全角スペースを可視化する (たとえば
-Z 2318とすると、全角スペースが ⌘ になる)。-z全角スペースを可視化しない。
-aInconsolata のグリフを優先し、Ambiguous 文字を全角化しない。
-sMigu 1M のグリフを縮小しない (
-wオプションとの併用を推奨)。
派生フォント Ricty Discord
Ricty では、調和・統一感の維持のため、プログラミング用フォントのコアである Inconsolata 由来の ASCII 文字に手を入れないようにしています。Discord (不協和音) 版は、統一感を乱す覚悟で ASCII 文字に手を入れた Ricty の派生フォントです。通常、Ricty Discord は Ricty 生成の際に自動的に生成されますが、パッチスクリプトを直接実行することによっても生成できます。このとき、オプションを指定することで個々の変更点を無効化することができます。
% fontforge -script ricty_discord_patch.pe [options] Ricty-Regular.ttf Ricty-Bold.ttf
ricty_discord_patch.pe のコマンドラインオプション
-quotedbl「"」を拡大しない。
-quotesingleまたは-quote「'」を拡大しない。
-asterisk「*」を少し下方に移動しない。
-plus「+」を少し下方に移動しない。
-comma「,」を拡大しない。
-hyphen「-」を少し下方に移動しない。
-period「.」を拡大しない。
-0または-zero「0」をドットゼロにせず、スラッシュゼロのままにする。
-7または-seven「7」にクロスバーを付けない。
-colon「:」を拡大しない。
-semicolon「;」を拡大しない。
-less-greaterまたは-angles「<」および「>」を少し下方に移動しない。
-equal「=」を少し下方に移動しない。
-D「D」を Eth にしない (「D」にクロスバーを付けない)。
-Z「Z」にクロスバーを付けない。
-asciicircumまたは-circum「^」を拡大しない。
-grave「`」を拡大しない。
-l「l」の左下のセリフを切り落とさない。
-r「r」をセリフ体 (Inconsolata の不使用グリフ) にしない。
-z「z」にクロスバーを付けない。
-bar「|」を破断線 (Inconsolata のグリフ) にしない。
-asciitildeまたは-tilde「~」を上方に移動しない。
Emacs/GVim のフォント設定
Emacs
(set-face-attribute 'default nil
:family "Ricty Discord"
:height 120)
(set-fontset-font (frame-parameter nil 'font)
'japanese-jisx0208
(cons "Ricty Discord" "iso10646-1"))
(set-fontset-font (frame-parameter nil 'font)
'japanese-jisx0212
(cons "Ricty Discord" "iso10646-1"))
(set-fontset-font (frame-parameter nil 'font)
'katakana-jisx0201
(cons "Ricty Discord" "iso10646-1"))
GVim
set guifont=Ricty\ Discord\ 12
set guifontwide=Ricty\ Discord\ 12
もしくは
set guifont=Ricty\ Discord:h12
set guifontwide=Ricty\ Discord:h12
表示確認環境
Ricty は研究・開発を主とした Linux 上のプログラミングでの使用を想定していますが、Linux に限らず以下の環境において簡単な表示確認をしています。
- Ubuntu
- Mac OS X
- Cocoa Emacs
- MacVim KaoriYa
- CotEditor
- iTerm2
- Windows with gdi++ Helium
既知の問題
Gnome-terminal において、フォントに Ricty を設定できないことがあります。
gconf-editor などで
~/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xmlのfontを直接編集してください。
Mac OS X を含む一部の環境において、生成スクリプトを実行すると FontForge が segmentation fault で異常終了することがあります。
「Ricty のビルド中に fontforge が segmentation fault でクラッシュする問題」にてこれを回避したとの報告がありました。
また、一部のバージョンの FontForge にはファイル名を誤認識するというバグがあるようです。
-vオプションで誤認識後のファイル名を確認し、ファイル名を変更することで対応してください。
一部の環境において、生成されたフォントの全角文字の文字間隔が不自然に大きくなることがあります。
生成されたフォントを
os2version_reviser.shに食べさせることで修正できます。
Windows ではアンチエイリアスがキレイにかからず、特にフォントサイズが小さいときに文字が部分的に欠けます。
gdipp、ezgdi、gdi++ Helium などを使用すると Linux と同等の美しさで表示されます (アプリケーションによってまったく機能しないことがあります)。
一部のフォントサイズで半角文字と全角文字の横幅比が 1:2 にならないことがあります。
ピクセル値 (px) が偶数でないとき、どのフォントにおいても起こりうる問題です。
一般的な 96 DPI のフォントレンダリングでは、9 pt、10.5 pt、12 pt、13.5 pt、15 pt など、1.5 の倍数を指定すると 1:2 で表示されると思います。
一般的なフォントと比較すると相対的にフォントサイズ (横幅) が小さくなります。
横幅は和文フォントに合わせてあるので、一般的な Courier 互換メトリックの欧文フォントと比較すると 83 % 程度の大きさになります。
また、アルファベットとのバランスをとるために日本語文字を 91 % に縮小しています (その分文字間隔が広くなっています)。