2010年 10月 14日

BDF フォントを canvas にレンダリングする

ブラウザでアンチエイリアスのきいてない bitmap フォントを使おうと思い webfont でいけるかなと思いきや、手元の環境だとどのブラウザでも bitmap フォントを使用できなかった、ということがありました。(Firefox はオプションを入れればできるみたいなのを最近見たんですが試さず)

で、それなら自力でレンダリングしたらいいんじゃないかなと思いつつ、面倒でやってなかったのですが、bdf のフォーマットがただのテキストファイルということを知って多少やる気が沸いたのでやってみました。

依存しているブラウザの機能は

  • canvas
  • 2d Context
  • fillRect

だけなので canvas が実装されていれば大抵のブラウザで動きます。

日本語も対応 bdf さえあれば描けるのですが、JS の charCodeAt でとれる数値と、bdf のコードポイントが一致していないといけないので、普通は変換が必要です。mplus の bdf 用の変換器 (というか jis から ucs) は書いたのを一緒のレポジトリにいれてあります

どや

2010年 10月 13日

2010年 10月 12日


そういえば、月読尊という神様について、自分は女神だと思っていたけれど、(ハッキリはしないものの) 基本的には男神らしい。松尾大社の月読神社も男神らしい。なんで自分が女神だと思っているのかはよくわからないが (クロノクロスのせい?)、男神ってのは、あんまりピンとこないなあ。

2010年 10月 09日

ワンダーワンダーの足利義政の回がおもしろかった

2010年 10月 08日

gerry++

2010年 10月 07日

vim、三項条件演算子の第二項と第三項を入れかえる

nnoremap e3 :s/?\s*\((.\{-1,})\\|\S\+\)\s*:\s*\((.\{-1,})\\|\S\+\)/? \2 : \1/<CR>

でいける。


以下つくりかたのメモ

#!/usr/bin/env perl
use strict;
use warnings;
use Test::Most;

my $tests = [
	'aa ? bb : cc' => 'aa ? cc : bb',
	'aa ? bb : cc | foobar' => 'aa ? cc : bb | foobar',
	'aa ? (bb bb) : (cc cc)' => 'aa ? (cc cc) : (bb bb)',
];

while (my ($a, $b) = splice @$tests, 0, 2) {
	$a =~ s/\?\s*(\(.+?\)|\S+)\s*:\s*(\(.+?\)|\S+)/? $2 : $1/;
	is $a, $b;
}
done_testing;

みたいなのを書いて正規表現を確定させる

eregex.vim を入れた状態で

:echo E2v('\?\s*(\(.+?\)|\S+)\s*:\s*(\(.+?\)|\S+)')

する

でてきた正規表現でだいたいいいのだけれど .vimrc に書くと \| が | として認識されるので \| は \\| にさらに置換する

2010年 10月 06日