とうとうQt-4.0の最初のbetaとなるbeta1がリリースされた。地味ながらも国際化関係で目玉なのがimmodule for Qtの成果の取り込みだろう。まだまだ部分的な実装で、十分な機能は持っていないがようやく本家への取り込みが始まったとのことで開発をしている本人たちは感慨深いのではないだろうか。
で、そのimmodule関連については今後開発者たちでの内容の確認や実装の進展があると思うので私のほうからは特にチェックするつもりはないけれど、そのほかの部分でいろいろ時になる部分を見ていきたい。まずはcodec周りだ。
なお、他の部分でもいろいろと変更点をチェックしたいところはあるので、不定期にチェックと解説をやっていきたいと思う。書いてほしい内容があればコメントにでも書いておいてほしい。ただし、期待にこたえられるとは限らないが。
QTextCodec周りだが、まずはqt-3.3.3のQTextCodecとqt-4.0 beta1のQTextCodecのドキュメントを見比べてみてもらいたい。
まず、ConverterState、ConversionFlagというものが増えていることに気がつくと思う。ConverterStateはQTextDecoderでの内部状態を記憶するためのものなのでCodecを作る人意外は特に気にする必要はない。ConversionFlagは変換時の不正な文字などの扱いを指定するためのもののようだが、詳細はドキュメントがないようだ。
また、QTextCodec::aliases()というメソッドも増えている。これにより複数の名前を持つcodecの扱いが以前よりも分かりやすくなったと思う。その代わりにQTextCodec::heuristicNameMatch()はなくなった。
そして、一番の大きな違いといえるのがQTextCodec::heuristicContetMatch()とQTextCodec::codecForContent()の削除だろう。従来から決して使い勝手のいいメソッドではなかったものの、これらがなくなったことでQtの機能を使っての文字コードの自動認識の実装はほとんど不可能になったと考えてよいと思う。(代替的な機能もないはず)
codecForContent()の方はともかく、heuristicContentMatch()はcodecの実装と使い方によっては簡易的なコードチェックに便利だったので正直なところちょっと悲しいが、仕方がないことかもしれない。
ドキュメントからうかがえる変更点はこの程度か。あとはQCStringがなくなった関係の変更やmimeName()がなくなり、name()がMIMEの名前を返すようになったことなどの細かな変更はあるが、それらは特に問題にはならないはず。
ここまではドキュメントからの変更点を書いてきたが、ソースを見ているときがつくことがさらにいくつかある。
まずは日本語系などの比較的規模の大きいcodec(cn, jp, kr, tw)がプラグイン化されていること。従来もmocなどのI18Nに関係のないアプリ用でCJK系のcodecは無しでコンパイルをしているところもあったりしたが、プラグイン化することでコンパイルの手間を減らそうということだろうか。通常動作時も欧米系の人はプラグインの読み込みが行われないならばうれしいことだと思うがそのあたりの確認は未了。
もうひとつ、X11用にQFontJis0201Codec, QFontJis0208Codecの二つのcodecが追加されている。名前などからXLFDとの関連付けように用いるもののようだが、詳細は未確認。ただ、こういう関係の処理を見ていると従来よりも柔軟な仕組みになっているような感じがするな。
とりあえずは以上。
Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/class-wp-comment-query.php on line 405