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見てると、歴史的な経緯があるとは言え、あまりに無駄なカーソルばかりで頭が痛くなるぞ。「埴輪の形のカーソル」なんて、何に使うんだよ(笑)。肝心なのは入ってないしさ。
いずれにしても、今回はかずひこさんに助けられっぱなしであった。もちろん、ずんだあんさんにも。感謝。
なんつー夢見とんねん!
埴輪カーソルことgumby、実際に使われているのをみたことがあります。
…………某国産PC Xサーバのむかーしのマニュアル(バージョン1とかそれくらい)の表紙にいました(爆)。が、なぜそこにいたのかは不明です……。
おぉ。紙媒体で活躍していたとは……