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とかそれくらい)の表紙にいました(爆)。が、なぜそこにいたのかは不明です……。
おぉ。紙媒体で活躍していたとは……