DejaVuフォントで日本語を使いたい!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DejaVuフォントで日本語を使いたい!

DejaVu Sans Monoサンプル

プログラミングに使える良いフォントを探していたら、DejaVuフォントというものを見つけた。確かにすごくきれいだし見やすい。

で、VimでDejaVu Sans Monoを使おうと思ったんだけど、Vimでは欧文フォントと和文フォントを別々に指定することができないから、DejaVu Sans Monoを指定してしまうと日本語が表示できなくなってしまう。だから、いろいろと試行錯誤してみた。まだ途中だけどとりあえずメモ。

方法1 Font Linkingを使う

Font LinkingっていうのはWindowsの機能で、任意のフォントを組み合わせて使えるようになる機能らしい。これを使ってDejaVu Sans MonoとIPAゴシックを組み合わせてみたい。

詳しい方法はこちらこちらなどを参考にしてもらいたいが、要はレジストリに一つキーを追加すればいいらしい。

regeditを起動したら、まずは↓の位置に移動。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

そうしたら、DejaVu Sans Monoという名前の文字列エントリーを新規作成して、ipag.ttfという値を入力する。↓の図のような感じになるはず。

regedit

一度Windowsを再起動したら、VimでDejaVu Sans Monoを指定してみる。

:set guifont=DejaVu_Sans_Mono:h11

:set guifont=DejaVu_Sans_Mono:h11

日本語がすごく横に伸びてしまいました。一般に日本語フォントに含まれる半角文字は縦横比が2:1なんだけど、DejaVu Sans Monoはそれよりも少し横幅が広いことが原因らしい。ということで、↓のように幅がちょうど半分になるように指定してあげます。

:set guifont=DejaVu_Sans_Mono:h11:w5.5

:set guifont=DejaVu_Sans_Mono:h11:w5.5

結構いい感じなんじゃないかなと。Vim以外で使わないならこれだけでも大丈夫な感じ。

方法2 FontForgeで合成する

とはいえ、レジストリをいじったりする方法だと.gvimrcの移植性に劣るかもなとか思ったので、FontForgeを使ってDejaVu Sans MonoとIPAゴシックを合成してみようと思った。これが全くうまくいかないんだけど、とりあえずそこそこ使えそうなものができあがったから、できたところまでメモ。

まずはFontForgeのインストール。以前導入したcoLinuxを起動して、↓のコマンド。

sudo apt-get install fontforge

次に、適当なディレクトリに移動して、WindowsのフォントフォルダからDejaVu Sans MonoとIPAゴシックをコピーしてくる。

mkdir ~/tmp && cd ~/tmp
cp /mnt/c/WINDOWS/Fonts/{ipag,DejaVuSansMono}.ttf .

次に、↓のような内容のスクリプトファイルを用意して、適当な名前(script.peなど)で保存する。このスクリプトをもう少し改良できれば結果がかなり変わってくるんだろうけど、もっとFontForgeについて勉強してからじゃないと無理そう。

#!/usr/bin/fontforge -script

# 新しいフォント名
family = "DejaVu+IPAG"


Open("ipag.ttf")

# IPAゴシックの高さをDejaVu Sans Monoに揃える
ScaleToEm(2048)

# 別ファイルとして保存
Generate("ipag-scaled.ttf")

Close()


Open("DejaVuSansMono.ttf")

# DejaVu Sans Monoの横幅を縮小する処理
SelectWorthOutputting()
Scale(75,100)
SetWidth(1024)
SelectNone()

# 高さを揃えたIPAゴシックをマージ
MergeFonts("ipag-scaled.ttf")

#フォント名等を指定して保存
SetFontNames(family, family, family, "Regular")
Generate(family + ".ttf")

Close()

↓のようにしてスクリプトを実行。coLinuxではメモリ不足でkillされることがしばしばあるので、その場合はcoLinuxの設定ファイルを編集してメモリの割当量を増やす。

fontforge -script script.pe

できあがったttfファイルをWindowsのファイルシステムに移動する。coLinuxではWindowsのファイルシステムをいじるのにroot権限が要るっぽい。

sudo mv DejaVu+IPAG.ttf /mnt/c

ttfファイルをC:\WINDOWS\Fontsに移動してフォントをインストールしたら、またVimでフォント指定をしてやる。

:set guifont=DejaVu+IPAG:h10.5

:set guifont=DejaVu+IPAG:h10.5

これはこれでいい感じ。スクリプトを改良すればもっと良くなるかも。

合成したフォントを公開してみようかと思ったけど、IPAフォントのライセンスが面倒そうなのでやめた。

まとめ

Font Linkingを使うか、FontForgeで合成したフォントを使うかは結構悩みどころ。

総合的なきれいさではまだFont Linkingの方が上かもしれない。特に、太字にしたり斜体にしたりしたときに結構差が出る (DejaVu Sans Monoは太字・斜体・太字斜体がそれぞれ別のttfファイルとして用意されていて、FontForgeで合成フォントを作るときにそれらのttfは使っていないから、当然といえば当然の話)。

でも、Font LinkingだとVimの外では横に伸びた日本語になっちゃうから、例えばATOKの変換候補が間抜けな感じになっちゃっていたりする。Font Linkingを使うとしたらDejaVu Sans Monoをインストールして、その上レジストリの設定までしなきゃダメだけど、合成フォントならフォントをインストールするだけで使えるようになるしなー。

どうしようかな。

スポンサーサイト

関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/169-9343014c

トラックバック

[FontForge] IPAゴシックとDejaVu Sans Monoを合成するスクリプトを修正
前回のエントリーで、FontForgeのスクリプトを使ってDejaVu Sans MonoとIPAゴシックを合成したりしてみた。そのとき使ったスクリプトを手直しして、少...
  • 2008-12-06
  • 発信元: 文系大学的IT系の悲哀

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。