Track Info Panel Modのマルチバイト文字処理@foobar2000 v0.9.5.1

foobar2000を0.9.3.1から0.9.5.1にしたらマルチバイト文字の処理がめんどくさい。具体的にはTrack Info Panel Modなどでのはみ出す文字の省略など。以前は$padcut()とか使ってた気がしたけど0.9.5〜だと1バイト文字と2バイト文字の区別がつかないので、foo_etcとfoo_funcを使ってなんとかする。

コンポーネントの入手

foo_etcはfoobar2000 Wiki Uploaderで。今は0.08が最新みたい。foo_funcはblog.99ravens.net::foo_func (foo_func.dll)で配布してくれてる。

Track Info Panel Modの設定

まず曲のタイトル。foo_funcに奇数バイトを出力させても日本語をうまく出してくれるのでうれしい。

$ifgreater(
  //$ifgreater(hoge,huga,piyo,poyo)
  //hogeがhugaより長かったらpiyoして、そうでなければpoyoするよというやつ
$len932(%title%),
  //%title%のバイト数をfoo_etcの$len932()で教えてもらう
24,
  //24バイトより長ければ↓を行う
$wstrsplit(%title%,23,0)..,
  //foo_funcの$wstrsplitで、%title%を23バイト目まで読み込み、最後に".."を付ける
%title%
  //%title%が24バイトより短ければそのまま表示
)

%artist%、%album%についても同様に。改行は$char(10)もしくは$crlf()。

$ifgreater(
$len932(%artist%),
24,
$wstrsplit(%artist%,23,0)..,
%artist%
)

$char(10)

$ifgreater(
$len932(%album%),
24,
$wstrsplit(%album%,23,0)..,
%album%
)

というわけでこうなった。

和英混在でもうまくいくよ。