enlightenment-kondara patch for DR-0.16.5
Ganymede Theme with DFGotP3.ttc (ja_JP.UTF-8)
enlightenment-kondara.patch (20010606)
Enlightenmentは最近では、ethemeの設定さえきちんと設定すれば特に苦労する事なしに
日本語も表示する事が可能なWindow Managerで、大変つかいやすいと(僕は)思っています。
ただし、EnlightenmentのデフォルトのethemeはロカールがCならばりっとTrueTypeフォント
を利用する設定になっているのに対し、日本語を表示するためには、TrueTypeフォントを
利用する事はできないといった制限もあります。
このパッチではEnlightenmentをさらに拡張し、より扱いやすくする事を目的にしています。
このパッチを適用する事で
-
freetype2 に対応
freetype2 適用時(自動的に判別します)にはEnlightenmentのテーマに
日本語等のTrueTypeフォントを利用する事が可能になります。
(現在ではShift_JIS と Unicode のCharMap に対応しています。)
これで、KDE等と同様、Enlightenmentもアンチエイリアスの恩恵をうけ
る事ができます。
-
UTF-8なロカールに対応
メニュー構築時には、適切なコード変換をしてくれるはずです。
eesh等を通じたIPCのコマンドは、
dialog_ok
win_op (windowid) title
についてはコード変換をするように調整してあります。
ただし、doxはコードの自動変換はしてくれません。
それぞれのロカール毎にMAINファイルを用意する必要があります。
-
Gnome,KDEのメニューのパーサの改善
GnomeとKDEのメニューをパースする際に[ja]なエントリのDesktopファイルを
ちゃんともってくるように調整しています。
といった事ができるようになります。
必要なもの
このパッチを適用してコンパイルするためには
-
iconvが動作する
-
mbstowcs,wctomb といった関数が動作する
-
nl_langinfo が動作する
事が必要です。現状では、Kondara MNU/Linux でしか動作確認はしていませんが、
最近のLinux Distribution では動作すると思います。
ただし、UTF-8なロカールはKondara MNU/Linux 以外では動かないかもしれません。
他のOSでも動作できた方がいましたら教えてください。
使い方
利用したいテーマのディレクトリのttfontsの中にごろっとTrueType Fontをいれて
ください。ttc でも ttf でもよいです。でテーマファイルのjapaneseフォントを
指定している個所をTrueTypeを読むように変更してください。
Kondara MNU/Linux でいえば
find ./ -name "*ja" |
xargs perl -p -i -e "s|-alias-variable-medium-r-normal--12-\*-\*-\*-\*-\*-\*-\*,\*|hoge/12|g"
(hoge は適宜変えてください。 例) DFGotP3/12 とか)
等とすればいいと思います。しかし、なぜかEnligntenmentではdpi = 96
となっているので、指定したサイズより多少大きくみえます。
謝辞
このパッチでも特にfreetype2に関連する部分は Yuki Sawada さんの書かれた xkanon
に対するパッチを大変参考にしています。
その他、Akira Higuchiさんのコードにも大変お世話になっております(パチっただけともいう)。
バグ等
もしバグや改善要求等ありましたら、famao@kondara.orgまでメールしてください。
特に、このパッチを適用する事で、コード変換をかなり多用する事になりますので、
バグがあちこちに潜んでいる可能性があります。
-
メニューをつかいまくってるとだんだん色がニジむ(苦笑)。これはおそらくImlibの影響と
勝手に推測。メニュー以外は問題なし。
技術的なメモ
-
Kerning については今の所無視。(サポートしてるフォントの情報求む)
-
advance.x だけすすめちゃうと半角英数字がえらくひろがっているように感じてしまうので、
bitmapを作成してからbitmapのwidth + 1だけすすめている。
グリフがみつからなかった場合にはadvance.x / 2だけすすめている。
-
サポートしているCharMap はSJIS,Unicode。それ以外にもiconvさえ対応していれば
すぐにサポート可能。
-
TrueType のCharMapへの変換は
1. mbstowcs でワイドキャラに変換
2. wctomb で1文字分のマルチバイト文字に変換
3. nl_langinfo (_NL_CTYPE_CODESET_NAME) -> UCS-4 or SJIS へiconv
4. 各CharMap 毎に適当にFT_UIntにキャスト
という手法。今のKondaraだとどうもmbstowcsの引数に適切なマルチバイト文字列が
ないとダメ?な感じあり。
-
UTF-8なエンコードの文字をサポートするために
format 8 -> 32 に変更(16でも大丈夫なようで)
Xlib-I18Nのコードを適当にみつつ nitems のサイズも適当に調整
特にTrueTypeフォントを利用している時には、コード変換は確実に行ってないとダメ。
へんなCharMapをくわせるとさくっとメモリくいつくすよん。
Tooltip,Menu,eesh のコード変換
-
ttcもttfと同様によみこむ。ただし、扱い方もttfと同様(汗)。
読み込む順番は ttf->ttc の順
履歴