トップ 最新 追記
RSS feed

ただのにっき


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見てると、歴史的な経緯があるとは言え、あまりに無駄なカーソルばかりで頭が痛くなるぞ。「埴輪の形のカーソル」なんて、何に使うんだよ(笑)。肝心なのは入ってないしさ。

いずれにしても、今回はかずひこさんに助けられっぱなしであった。もちろん、ずんだあんさんにも。感謝。

本日のツッコミ(全3件) [ツッコミを入れる]

きた [なんつー夢見とんねん!]

いけがみ [埴輪カーソルことgumby、実際に使われているのをみたことがあります。 …………某国産PC Xサーバのむかーしのマニ..]

ただただし [おぉ。紙媒体で活躍していたとは……]


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件) [ツッコミを入れる]

Before...

ただただし [高さを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(木) [長年日記]

マクド

祝!! 今年もグラコロの季節がやってまいりました♥

毎年、職場でグラコロを食べていると、

Tags: gracoro

「たださん、珍しくマックですかぁ」
「マクドと言え」

といった会話が繰り返されるのだが、とにかく、グラコロだけは別なのである。

左利きカーソル(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億人(推定)の左利きのために!!(おおげさ)

新型ASIMO

ずいぶん賢くなったもよう。かわいいのぅ。

本日のツッコミ(全7件) [ツッコミを入れる]

Before...

Nyan2 [たださん、マクド派だったんですね。 「マクドじゃなくてマックでしょう〜」と、無駄なことを主張してみる(笑]

ただただし [じゃあAppleのアレは「マッキン」と呼ぶのだな?]

s.sawada [じゃあ著名なアンプのあれは‥]

Yuyang [すごい賢くなりましたね。我が家の猫以上に賢くなったなあ>呼んでも無視する猫]

zoe [普通にマッキンと呼んでましたけど、みんなそうでないかったのか。。]

通りすがり [McJobという言葉はなんて読むんでしょうか?]


トップ 最新 追記
RSS feed