Sub Station Alpha の後継となるフリーソフトウェア Sabbu 0.2.5 について。
0.2.5のインストーラで同時にGTKランタイム(2.6.8)をインストールした場合、 初期状態で日本語は文字化けしている。 pango.aliases と gtkrc を sabbu025ja-fix.zip内のものと置き換えれば、解決する。 上記 gtkrc のフォントサイズは10。大きすぎれば、font-size-9フォルダ内の gtkrc を、 小さすぎれば font-size-11 フォルダ内の gtkrc を使えば良い。
GTK+ and The GIMP installers for Windowsのページにある 2.6.8-1 を手動で入れた場合、 OSのシステムフォントが Tahoma なら初期状態で日本語が表示されるが、 フォントが不自然。中国語・韓国語フォントの優先順位が高く、それらが漢字・ひらがな・句読点を持っているため、 通常の日本語フォントと違う字形が混ざるため。上記と同様にカスタマイズできる。 Gimp ページのランタイムは、行儀悪く、古い日付をそのままにして、新しいものが追加されている。
0.2.5を日本語インターフェイスで使うと、1行前に移動する Alt+V というショートカットが利かない。 これは「映像」メニューのショートカットキーとかぶってしまっているため。 sabbu\locale\ja\LC_MESSAGES 内を、上記 sabbu025ja-fix.zip 内の sabbu.mo と置き換えれば解決する。
既知の問題として、日本語のフォント名(みかちゃんなど)がリストに表示されない。 またワークスペース(.sabbu)を日本語名にして、関連付けで開こうとするとクラッシュする。 このように細かい不具合はいろいろあるが、 SSAをテキストエディタで手動でいじれるユーザなら、Sub Station Alpha より便利だろう。
http://sourceforge.net/projects/sabbu/
まもなく(24時間以内)正式公開される模様ですが、 初期状態では、英語以外の文字は文字化けすると思います。 また、メニューを何語で表示するかどこで選択するか分かりにくいかと思います。
文字化けについては、設定ファイルを二つ、ちょっと直すだけで解決します。 言語の選択は、スタートボタン→プログラム→GTK+何とか→Select languageで選べますが、 他のGTKアプリがあると、そちらにも影響します。他のGTKアプリに影響を与えず、Sabbuのみ英語にしたい場合、 Sabbuをインストールした先の、 locale というサブフォルダの JA (日本語)を削除してください。
入門者にとっては、Sub Station Alpha と、どっちもどっちなのだが、 どっちかというと、Sabbuの方が良いと思う。 Sub Station Alpha 経験者は説明不要なくらい簡単に移行でき、絶対Sabbuの方がいいが、いくつかわなもあるので、以下詳しく説明する。
まずメリットから。
上記のように決定的なメリットが複数あるのだが、 以下のように問題点もある。バージョン0.2.5だからもちろんバグは枯れていないが、 主なポイントを列挙すると、
Sabbu 0.2.5 のビデオ・プレビューは現在±0.01秒の移動を許している。 SSAは0.01秒が時間単位なので一見自然な発想にも見えるが、 この仕様はデジサブの矛盾を浮き彫りにする。SSAのタイムスタンプは確かに10ms単位だが、 現実には字幕は1フレームごとしか変化できない。 23.976fpsのビデオでは42msごとにしか変化できない。 だから字幕を出せとか消せとか10ms単位で命令できても、実際にイベントの発生するタイミングは、 最長40msくらい遅れる。 フレーム単位でコマ送りする場合、このディレイは隠されてしまうが、 ±10msのプレビューを認めると、問題が表面化する。0から数えてフレーム20は0.834秒目、 フレーム20から出す字幕をSSAでは0.83と指定する。0.83とは書くけれど、これはデジサブではフレーム20を意味し、 絶対時間の0.83秒ではない。ところがSabbuは絶対時間軸の0.83に飛べてしまう。 0.83秒にはまだフレーム20は始まっていないからフレーム19を表示しなければならないが、 フレーム19にはまだ字幕は乗っていない。 0.83秒(というよりフレーム20)に開始される字幕をプレビューしたいのに、フレーム19に飛ぶことになる。 さりとて、0.83秒へのジャンプでフレーム20に飛ぶことにすれば、0.01秒単位で動かしていったとき、 フレームの変わり目がおかしな場所に来る。どっちかが破綻する。
固定FPSを前提とするなら、字幕のタイムスタンプは時間でなくフレーム番号で指定するのが正しかった。 VFRでさえ、フレームのタイミングが定義されているなら、フレーム番号で指定できる。 連続的な(フレーム単位の精度が保証されないので連続的に扱うしかない(注))アナログビデオにゲンロックしていた古代SSA(絶対時間で指定するしかない)を、 離散的なデジサブ(時間は量子化されていて42ms単位のとびとび)に用いたところに、 矛盾の芽がある。 1フレームが時間の基本単位なら、字幕のタイムスタンプもその基本単位によるべきなのだ。 SSAを「忠実」にプレビューすると、現実の姿にならない。 純粋なSSAは100fpsだが、現実には23.976fps(あるいはビデオのfps)に変換されるからだ。 ビデオの1フレーム単位でプレビューするのが現実的な解なのだ。
(注)アナログテープでは一般には1フレームの精度が保証されなかったが、 デジタルだと、処理するアプリケーションの側で厳密にフレーム単位の処理をするようになったので、 アナログでは誤差の範囲に吸収されてしまう問題をきちんと定義する必要が生じた。 それを行うとき、フレーム単位を前提としていないSSAの仕様は、必ずしも理想的ではなかった。
GTK+上で動作する Windows アプリでは、 日本語(メニューやデータのテキスト)がしばしば文字化けする。 gtkrcを編集するだけの間違った直し方が紹介されていることが多い。 それでは文字化けが一応直っても、フォントがきれいに表示されない。
このメモは、 Sabbu 0.2.5 ユーザのためのものだが、 Gimp, Spondi など、他のGTKアプリにもほぼ共通するはずだ。
一般のGTKアプリとSabbu 0.2.5 の違いは、
GTK+(Gimp Toolkit)は、 簡単に言えば Java のような「クロスプラットフォームを実現するためのプラットフォーム」の一つ。 一般の Windows アプリが、基本的には「直接」 Windows 上で動作するのに対して、 GTKアプリは、GTKという中間的なレイヤーを介して動作する。 「直接」動くアプリに比べて多少効率が低下するし、開発もやや面倒だが、その代わり、同じアプリがクロスプラットフォームになる。 Linux 中心に開発されたアプリも、GTKアプリとして開発されていればWindows 上でも利用できる。 これは大きなメリットだろう。
GTK はもともとレタッチソフト Gimp のために作られたが(だから Gimp Toolkit という)、 今では、多くのアプリが GTK を利用して動作する。 2005年7月現在、Windows版のGTK環境は、日本語が文字化けするなど国際化対応が発展途上で、 ウィンドウの再描画処理が完全でないなど、完成度は必ずしも高くない。
GTKは、LGPL のフリーソフトウェアだ。 GTK同様の「クラスプラットフォームを実現するフリーの中間レイヤー」は他にもいくつかあるが、 Sabbu 0.2.5 は GTK アプリとして開発された。
以下のファイルの編集では、 改行文字がUnixなので、対応しているエディタ(メモ帳より高機能ならたいがい対応しているはず)を使うのが良いが、 手元のテストでは、メモ帳で無理矢理開いて、適切な場所でWindowsの改行文字を入れても動作した。
Tahoma =
と指定してフォントがコントロールできるのは、
Windows側のシステムフォント(メニューなどのフォント)がTahomaに設定されている場合に限る。
Windows XP ではデフォルトでそうだと思うが、変えている人もいるかもしれない。
以下では、システムフォントがTahomaでなくてもうまくいく一般的な方法を説明する。
位置の例。エディタで開く。 C:\Program Files\Common Files\GTK\2.0\etc\pango\pango.aliases
デフォルトでは、Tahoma= の行はこうなる予定。
Tahoma = "Tahoma,browallia new,mingliu,simhei,gulimche,msgothic,latha,mangal"
注: 2005年7月に Project: GTK+ and The GIMP installers for Windowsに置かれた gtk+-2.6.8-setup-1 では、実際、上記のようになっている。
そのリリースノートには gtk+-2.6.8-setup-1.zip adds a workaround for properly displaying Japanese text when wimp is used.
(日本語を正しく表示するための応急処置)とあるが、
実際には、上記の方法では日本語は表示はできるが、正しく表示できない。
直し方はいろいろあるが、 とりあえずもとの行はコメントアウトし(Tahoma=の行がないパッケージでは何もしないでいい)、 改めて Tahoma= を定義して、 MS UI Gothicを2番目にするのが良い。 日本語化だからと言ってMS UI Gothicを先頭に持ってくると、英語までMS UI Gothicになる、 ロシア語・ギリシャ語も全角になる、 フランス語・ドイツ語・スペイン語等ではMS UI Gothicの中に特殊文字だけ他のフォントが混ざる、 といった汚い状態になる。一般のアプリでは実害ないかも知れないが、 必然的に複数の言語がからむ字幕アプリではまずい。 必ず2番目にすること。一般のアプリでもMS UI Gothicを2番目にした方が絶対見栄えがいいはず。 (2番目にすることの欠点があるとしたら、ロシア語を使った顔文字が正しく表示されないことくらい。)
具体的には、
#Tahoma = "Tahoma,browallia new,mingliu,simhei,gulimche,msgothic,latha,mangal" Tahoma = "Tahoma,MS UI Gothic,browallia new,mingliu,simhei,gulimche,latha,mangal"
これはタイ文字フォントを3番目に検索したりして厳密には最適化とは言えないが、 msgothicを消して、2番目に使うフォントを入れただけ。Unicode 2の範囲を完全表示可能にするには、 末尾に Arial Unicode MS を加える。左から右へ検索するので、末尾でないと意味がない。真ん中に置いたら、 Arial Unicode MSでグリフが見つかって、それより右は永遠に評価されない。
OSのシステムフォントが全部Tahomaなら、この時点ですべての問題は解消されるが、 フォントが少し小さすぎるかもしれない。 またシステムフォントがTahomaでないと、この時点ではまだ文字化けは直らない。 いずれもステップ2で解決する。
位置の例。C:\Program Files\Common Files\GTK\2.0\etc\gtk-2.0\gtkrc
次のブロックをファイルの末尾にペースト。数字の10がフォントサイズなので好みで加減。
style "my-font" { # フォントサイズ(ツールチップ以外) font_name="Tahoma 10" } widget "*" style "my-font"
この指定で、wimpエンジンはメニュー等のインターフェイスで(OS自身のシステムフォントではなく)フォント名Tahomaを割り当てる。 Windows自身のフォントリンクは働かないが、働かない方がかえってカスタマイズの見通しが良く、 Tahomaの実体は、既にpango.aliasesで定義してある。OS自身のシステムフォントが最初からTahomaの場合、 上記ブロックはフォントサイズの制御のみ意味を持つ。
ボタンなどの上にマウスを置くと浮かぶことがあるツールチップは、 制御が別系統。 engine "wimp" という行の上あたりに、次の1行を足す。数字の10はツールチップのフォントサイズ。好みで加減。
font_name="Tahoma 10"