トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


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使ってる時に感じる微妙なストレスの原因がこれだと、いまさらながら気づいたよ。もう戻れません。

本日のツッコミ(全7件) [ツッコミを入れる]
Yuya (2002-12-06(金) 14:51)

%は高さ基準で、emは幅基準じゃないですかね。(嘘だったらごめんなさい)

ただただし (2002-12-06(金) 15:26)

高さを90%にした場合と幅を0.9にした場合で、違いがあったら困るような……。
あ、仕様書に「font-sizeにemを使った場合は親要素の値を参照する」って書いてあるなぁ。これか?

しめりぃ (2002-12-06(金) 15:38)

お気づきの通りemの場合は親要素を参照するので、入れ子式になった場合は非常に小さくなってしまうようです。そしてそれに気づかずにテーマを作ってしまったのは私です。あはん。

えぐぞせ (2002-12-07(土) 00:25)

参考になるかどうか…。
http://a10.s21.xrea.com/css/csstest2_1.html
exって、「x」(小文字のエックス)の高さ基準でしたっけか?

かずひこ (2002-12-07(土) 02:25)

あー、たださんずるいー。全部反転しましょうよぉ (T T)
もし MacOS みたいに時計カーソルが回るのなら、時計が逆回転になって面白かったんだけどなあ。

ただただし (2002-12-07(土) 12:42)

よくできてるけど、パーセントがないのがちょっと >エグゾゼ
しかし、exってemの半分ってことになってるんですかね……?

えぐぞせ (2002-12-08(日) 00:11)

む、パーセントか。なるほど、後で補完しておきましょう。


トップ «前日 最新 翌日» 編集
RSS feed