2002-12-06(金) [長年日記]
■ 左利きカーソル(4)
なんか、成功事例の報告とか、メールでわざわざツールを送って下さる方とか、ありがたいことです。今夜にでも時間を取ってチャレンジしてみるつもり。
やっぱねぇ、仕事終わって帰宅すると、たいして時間ないんだよね。IRCに入るのがいけない気もするけど(笑)。職場のLinux環境はサーバ専用だしなぁ。
■ CSS: em単位指定
ほほぅ、そんな問題があったのか。どれどれ。
- これは通常(無指定)の文字サイズ。ようは100%状態。
- これはfont-size: 90%;を指定。まぁ、そんな感じはする。
- そしてこれはfont-size: 75%;を指定。
- そしてこれはfont-size: 0.9em;を指定。
最後のヤツは、IEで見ると「どこが0.9やねんっ」とツッコミを入れざるを得ないほどひどく小さい。見た目の大きさは75%のとほぼ同じである。なるほど、一部のテーマでツッコミの文字サイズが妙に小さかったのはこのせいか。これはひどいなぁ。おれはたいてい「%」で指定してるんだけど、「em」で指定してる人も少なくないよねぇ。
■ ↑の実験はIEのフォントサイズを「小」にした場合の話。「最小」にするとさらに小さくなるし、逆に「最大」にすると120%くらいのサイズになる。下のツッコミに書いたように、font-sizeをemで指定すると特別ルールが適用されるようなので(原本と和訳)、単に文字サイズを指定したいのなら(IEの実装が正しいかどうかは別にしても)パーセント指定が無難という気はする。
ちなみに、font-sizeにemを使っているテーマは……121個もありました。うげ、多数派じゃん。つーか、自分でも使ってるじゃん!(笑)
■ 左利きカーソル(5)
さて、じゃあいってみよう。いろいろトライしたけど、成功事例かつ一番楽な方法を書いておく。実はかずひこさんにデータやツールをメールでもらったりしているんだけど、のちのちのためにそれ抜きでできる方法としてまとめる。
■ まずは元ネタになるcursor.bdfを取得する。これはftp://ftp.x.org/pub/R6.4/xc/fonts/bdf/misc/cursor.bdfから取ってきた。
コイツの左向き(右利き用)矢印を、右向き(左利き用)に変換するのだが、どこにどんなカーソルがあるのか見やすくするために、16進のデータを2進にする。東雲フォントに付属のbdf2bitコマンドをmakeしてもいいんだけど、見るためだけならこんなRubyスクリプトでいい。
# bdf2bit.rb while l = gets if /^[0-9a-f]+$/ =~ l then l = ('%016b' % eval( "0x#{l.chomp}" )).gsub( /0/, '.' ) end puts l end
これを通して見たフォントデータから、left_ptrがそれだとわかる(top_left_arrowというのもあるが、少なくともKDEでは使われていないようだ)。
% ruby bdf2bit.rb cursor.bdf (中略) STARTCHAR left_ptr ENCODING -1 68 SWIDTH 548 0 DWIDTH 17 0 BBX 8 14 0 -14 BITMAP ........1....... ........11...... ........111..... ........1111.... ........11111... ........111111.. ........1111111. ........11111111 ........11111... ........11.11... ........1...11.. ............11.. .............11. .............11. ENDCHAR (後略)
で、かずひこさん情報によれば、「BBX」のところがサイズとホットスポットの情報とのこと。8x14のサイズで、(0,-14)がホットスポットということだ(変な座標系だ)。イメージを左右反転して、ホットスポットを再計算すれば左利き用カーソルができる……わけだが、実はもっと楽な方法がある。少し下に「right_ptr」というのがあるのだ(笑)。
コイツのBBXからENDCHARまでをそっくりコピーしてくれば、すべて揃ったデータが作れる。労力最小限。さらに、マスク用画像である「left_ptr_mask」も「right_ptr_mask」で置き換える。
■ あとはできたcursor.bdfを、pcfに変換し、使えるようにするだけである。bdftopcfコマンドやmkfontdirコマンドはすでにインストールされていたので、そのまま使う。
% mkdir ~/.xfonts % bdftopcf cursor.bdf > ~/.xfonts/cursor.pcf % mkfontdir ~/.xfonts
さらに、~/.xinit.d/hookに以下の2行を入れておく。
xset +fp $HOME/.xfonts xsetroot -cursor_name X_cursor
あとはいったんlogoutして、Xを再起動するだけである。
もうね、カーソルが右向いてるのを見たときは、ちょっと涙が出てきたよ。いつもWindowsではこんな感じなんだけどね。いつもLinux使ってる時に感じる微妙なストレスの原因がこれだと、いまさらながら気づいたよ。もう戻れません。
%は高さ基準で、emは幅基準じゃないですかね。(嘘だったらごめんなさい)
高さを90%にした場合と幅を0.9にした場合で、違いがあったら困るような……。
あ、仕様書に「font-sizeにemを使った場合は親要素の値を参照する」って書いてあるなぁ。これか?
お気づきの通りemの場合は親要素を参照するので、入れ子式になった場合は非常に小さくなってしまうようです。そしてそれに気づかずにテーマを作ってしまったのは私です。あはん。
参考になるかどうか…。
http://a10.s21.xrea.com/css/csstest2_1.html
exって、「x」(小文字のエックス)の高さ基準でしたっけか?
あー、たださんずるいー。全部反転しましょうよぉ (T T)
もし MacOS みたいに時計カーソルが回るのなら、時計が逆回転になって面白かったんだけどなあ。
よくできてるけど、パーセントがないのがちょっと >エグゾゼ
しかし、exってemの半分ってことになってるんですかね……?
む、パーセントか。なるほど、後で補完しておきましょう。