comment -*- mode: text -*-
comment $Id$

Frequently Asked Questions
よくある(かどうかは分かりませんが)質問と回答集


1. フォント

[Q1]
README.ja に可変長コラム幅云々と書かれていたのですが、意味が分かりません。
プロポーショナルフォントとは関係あるのですか?

[A1]
結論からいえば、あるフォントが、固定ピッチであるか、プロポーショナルであるか、と
いう問題と、mlterm が固定長コラム幅モードであるか、可変長コラム幅モードであるか、
という問題は直交しており、直接関係はありません。


以下では、それぞれがどういうものなのかを説明します。

まず、mlterm が固定長コラム幅モードで使用される場合についてです。

もちろん、固定ピッチフォントが使用された場合、文字幅が固定長になるのは当然ですが、
例えば、~/.mlterm/font に、

ISO8859_1 = 12,-adobe-utopia-regular-i-normal--12-120-75-75-p-67-iso8859-1;

のように、プロポーショナルフォントを記述し、mlterm を -w 12 -V=false オプション
で起動してみてください。
すると、プロポーショナルフォントを使用しているにも関わらず、固定ピッチフォント
のように、一定の間隔で文字が表示されると思います。

このように、mlterm が、固定長コラム幅モードで使用された場合、固定ピッチ、プロポ
ーショナル問わず、あらゆるフォントが、(場合によっては無理矢理)固定幅で表示される
ことになるのです。

一方、mlterm が可変長コラム幅モードで使用された場合はどうなるでしょうか?

この場合も、固定ピッチフォントが使用された場合は、相変らず文字幅は固定長です。
しかし、ここで、固定長コラム幅モードの場合と同じく、~/.mlterm/vfont に、

ISO8859_1 = 12,-adobe-utopia-regular-i-normal--12-120-75-75-p-67-iso8859-1;

と記述し、mlterm を -w 12 -V オプションで起動してみてください。
すると今度は、コラム幅が一定でなくなり、文字同士が詰めて表示されると思います。

このように、mlterm が、可変長コラム幅モードで使用された場合、プロポーショナルフ
ォントがそのまま表示されるようになるわけです。


これらのモードは、実行時に変更できますし、フォント指定も、font,aafont /
vfont,vaafont のように分かれていますから、用途に応じて適宜切り替えて使用してくだ
さい。

ちなみに、固定長コラム幅モードで、プロポーショナルフォントを使用した場合、文字間
隔が一定になるように、一文字ずつ描画しますので、処理速度はかなり低下することにな
ります。注意してください。


[Q2]
プロポーショナルフォントを可変長コラム幅で使用した場合、画面の右端に空きができて
しまって見づらいです。
また、固定長コラム幅で使用した場合も、文字間隔が空きすぎて、気持ち悪いです。
なんとかなりませんか?

[A2]
mlterm は、プロポーショナルフォントを表示する際、すべての文字が画面に収まるよう
に、通常の X フォントの場合はフォントの最大幅を、xft フォントの場合は 'W' の文字
幅を取得してコラム幅とし、それにコラム数を掛けることで、画面のサイズを決定してい
ます。
また、固定長コラム幅モードでは、そのように決定されたコラム幅が、プロポーショナル
フォントを無理矢理固定長で表示する際の文字幅として使用されます。

したがって、プロポーショナルフォントで、幅の小さい文字ばかり使用すると、[Q2] のよ
うな問題が生じることになります。

この問題は、根本的には解決不可能ですが、font を設定する際に、[Percentage]指定
(see README.ja)をつけることで、ある程度の対処は可能です。

[Percentage]指定は、例えば次のようにします。

ISO8859_1 = 12,-adobe-utopia-regular-i-normal--12-120-75-75-p-67-iso8859-1:100;

ここで、フォント指定の最後に、":100" を付けているのがそうです。

もし、このように明示的に、[Percentage] が指定されている場合、mlterm は、初めに述
べたようなコラム幅決定を行なわず、フォントサイズに、指定された百分率を掛けた値を
コラム幅とします。
つまり、上記の例のようにすることで、コラム幅を、強制的に 6 にすることができるわ
けです。

もちろん、こうすると、プロポーショナルフォントで幅の大きな文字を表示した場合に、
文字の右側が切れて表示されたり、一行が、画面からはみだしてしまったりする虞れがあ
ります。

その辺は、十分注意していただいた上で、適当に妥協した値を探してだしてみてください。

もう一つの解決策として、-1 , --wscr , screen_width_ratio オプションを使用する方法
もあります。
このオプションは、column , line で指定された端末サイズがおさまるだけの画面に対し
て、どれだけ分を実画面サイズとするか、を指定します。

たとえば、font size 10 で、横 80 、縦 30 の端末を起動した場合、画面サイズは、
横 80 * 5 = 400 dot
縦 30 * 10 = 300 dot
となりますが、ここで、screen_width_ratio オプションに、50 を指定すると、画面の
横幅が、半分の 200 dot になります。

もし、プロポーショナルフォントを使った結果、画面が、横長になってしまった場合、こ
のオプションに適当な値を指定することで、画面の大きさを縮めることができます。


[Q3]
東風フォントや Dynalab フォントをアンチエイリアスさせると、「〜」などの文字が表
示されません。

[A3]
これは、JISX0208 => UNICODE の変換テーブルが、mlterm の使用しているものと、それ
らのフォントが使用しているもので、異なっているのが原因です。

-c , --cp932 オプションをつけて mlterm を起動するか、~/.mlterm/main に、

use_cp932_ucs_for_xft = true
と設定することで回避できます。
(このオプションはデフォルトで有効になっています)


[Q4]
画面の上端や下端に点や線のようなものが消えずに残ったままとなります。

[A4]
行の高さよりも高さの大きいフォントが描画されたためと思われます。
line_space オプションにより、適宜行間を広げてください。
