2002-12-07(土) [長年日記]
■ 夢
イミダスに「アレゲビル」という項目が載っているのを発見するという夢を見た。しかし、内容は覚えていないというオチ。役立たず……。
■ 左利きカーソル(6)
ずるいって言われてもなぁ……。でもまぁ、使っているとまだ問題が残っていることが判明してはいるのだ。例えばGaleonでリンクの上にカーソルを持ってくると指をさすカーソルに変わるんだけど、これが左向き。これは「hand2」というグリフだけど、逆向きの「hand1」はデザインが違うのでそのまま使うのは気が引ける。
あと、やはりGaleonのバックグラウンド処理中を示す矢印+砂時計のカーソルは、cursor.bdfの中にはないようだ。これはどうしようもない。
■ 左利きカーソル(7)
ずるいと言われたらやらねばなるまい(違)。もっとも、↑を書いた直後に、かずひこさんからbdf2binやbin2bdfと組み合わせて使う反転ツールと、反転済みのcursor.bdfを送ってもらってしまったので(左利きでもないのにありがたいことです)、使うだけならここまでやる必要はない。
が、bdf2bin/bin2bdfが必要なのもなんだかしゃくにさわるというか、できるだけ標準的なツールだけでできるようにしておきたいというのもあり。Ruby onlyなツールを書いた。ホットスポットの変換は、かずひこさんの計算そのままである。
元のcursor.bdfにはゴミのような謎のピクセルが混じっていて、素直に2進数にして反転してもうまくいかないので、それを取り除いてやるためにあまりに汚いソースになってしまったが、まぁ動けば正義だ。
#!/usr/bin/env ruby # # reverse-font.rb # bitmap = [] while gets chomp if /^BBX ([\d-]+) ([\d-]+) ([\d-]+) ([\d-]+)/ then width = $1.to_i puts "BBX #$1 #$2 #{-($1.to_i + $3.to_i - 1)} #$4" elsif /^[0-9a-f]+$/ then xwidth = $_.length bin = ("%0#{width}b" % eval( "0x#{$_}" )).reverse bitmap << bin elsif /^ENDCHAR$/ max = width bitmap.each do |bin| max = bin.length if bin.length > max end bitmap.each do |bin| bin = bin + ('0' * (max - bin.length)) bin = bin[max - width,width] + ('0' * (max - width)) printf( "%0#{xwidth}x\n" % eval( "0b#{bin}" ) ) end puts "ENDCHAR" bitmap = [] else puts $_ end end
元のcursor.bdfを食わせて、標準出力に出てきたのが反転済みのbdfファイルである。あとはbdftopcfをして、mkfontdirして云々……は昨日のとおり。これで、Mozilla独自カーソル以外は幸せになれた。
しっかし、cursor.bdf見てると、歴史的な経緯があるとは言え、あまりに無駄なカーソルばかりで頭が痛くなるぞ。「埴輪の形のカーソル」なんて、何に使うんだよ(笑)。肝心なのは入ってないしさ。
いずれにしても、今回はかずひこさんに助けられっぱなしであった。もちろん、ずんだあんさんにも。感謝。
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使ってる時に感じる微妙なストレスの原因がこれだと、いまさらながら気づいたよ。もう戻れません。
◆ ただただし [高さを90%にした場合と幅を0.9にした場合で、違いがあったら困るような……。 あ、仕様書に「font-sizeにe..]
◆ しめりぃ [お気づきの通りemの場合は親要素を参照するので、入れ子式になった場合は非常に小さくなってしまうようです。そしてそれに..]
◆ えぐぞせ [参考になるかどうか…。 http://a10.s21.xrea.com/css/csstest2_1.html ex..]
◆ かずひこ [あー、たださんずるいー。全部反転しましょうよぉ (T T) もし MacOS みたいに時計カーソルが回るのなら、時計..]
◆ ただただし [よくできてるけど、パーセントがないのがちょっと >エグゾゼ しかし、exってemの半分ってことになってるんですかね…..]
◆ えぐぞせ [む、パーセントか。なるほど、後で補完しておきましょう。]
2002-12-05(木) [長年日記]
「たださん、珍しくマックですかぁ」
「マクドと言え」
といった会話が繰り返されるのだが、とにかく、グラコロだけは別なのである。
■ 左利きカーソル(3)
座して待っているだけで情報が寄せられるようになると、「教えて君」になってしまうので、あまり甘やかしてはいけません。なんて。うそです。いつもありがとう(汗)。
ホットスポットがあるという情報は助かります。でも反転するっつっても、そんなに単純な話ではないような。たとえば昨日のフォントを反転すると(「@」がホットスポット):
% cat arrow 11............11 @111............ .11111.......... .1111111........ ..11111111...... ..1111111111.... ...11111........ ...11111........ ....11..1....... ....11...1...... .....1....1..... .....1.....1.... ............1... .............1.. % ruby -pe '$_.reverse!' arrow 11............11 ............111@ ..........11111. ........1111111. ......11111111.. ....1111111111.. ........11111... ........11111... .......1..11.... ......1...11.... .....1....1..... ....1.....1..... ...1............ ..1.............
このようホットスポットを(15,-1)に移動できるのか、それとも(0,-1)固定なのか。前者ならいいけど、後者なら使い物にならない。はてさて。
……と言うわけで、あとは実験するだけやな。時間見つけて取り組もう。全世界6億人(推定)の左利きのために!!(おおげさ)
◆ きた [なんつー夢見とんねん!]
◆ いけがみ [埴輪カーソルことgumby、実際に使われているのをみたことがあります。 …………某国産PC Xサーバのむかーしのマニ..]
◆ ただただし [おぉ。紙媒体で活躍していたとは……]