フリーゲーム・フリーソフトの開発過程を記録していく、TDtechnic公式ブログです。製品はカテゴリの「ダウンロード場」からダウンロードして頂けます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

こんにちは。今日はIMEに関連して文字列関係に奮闘しています。

今の開発環境ってプロパティでマルチバイト文字(実質Shift_JIS?)とUnicode(厳密には「ワイド文字」)を選べますよね。tchar.hなどを使っている状態でこれのプロパティを変えると、まあ確かに文字列のほとんどがマルチバイトとUnicodeに切り替えられますよね。

しかしこの両対応を前提としている状況は時として邪魔にもなります。私は―C#がそうであるように―もうUnicode専用で書きたいのですが、例えば文字列リテラルがL" "となったり、MessageBox関数がMessageBoxWとなったり、どうも書きにくい&見栄えが悪い。そこで仕方なくtcharを使って書くのですが、こんどは「一応」マルチバイトでも動くのか気になってしまうんですね。そしてそのための修正がしばしば…。とまあ要するに私が神経質すぎるだけなんですが、このようにして私はUnicode問題によく悩まされています。

ネットで調べると、どのサイトでも書いてあるのが「過渡期」という言葉。Windowsにおけるマルチバイト時代(Meまで)からUnicode時代(2000以降)のつなぎとしてこんな仕様になっている、らしいです。でも、ちょっと待って下さいよ。2000が作られた時点でもう10年以上前じゃないですか。私の感覚では十分古いと思うんですけど、それなのに未だに(少なくとも、私が使っているVS2012では)Microsoftが両対応させているのは何でですかね。過渡期過渡期って一体いつになったら移行できるんですか。.Net FrameworkもDirectXも、古いものはすぐ切り捨てていったくせに(そのせいで私が苦労した)。

まあ過渡期だからという意味合い以外にも、メモリ節約とかファイルの読み書きとか、複雑に絡み合っているみたいですけどね。それに本当はMicrosoftの問題ではありません。C言語の規格が本当の原因、らしいです(MicrosoftはC#を作った時にUnicodeを標準にしています。Microsoftも移行したいのは山々なのでしょう)。独自拡張の好きなMicrosoftなら…という淡い期待はありますけどね。結局はすべて愚痴に過ぎません。

真面目な報告をすると、今まで(内部処理が)Unicode専用だったフォントテクスチャ生成クラスをマルチバイト/Unicode両対応にしました(製品にはUnicodeしか使わないのにねw)。あと、IMEは文節変換時に変換中の部分を強調するようにしたり、それに伴いフォントテクスチャに背景色を付けられるようにしました。どれもこれも目立たない部分で、苦労の割に見た目からは面倒さがわからないという…(笑)
関連記事

[2014/03/19 20:28] | 不死女 -Immortal girl-
|
コメント:
この記事へのコメント:
コメント:を投稿
URL:

パスワード:
非公開コメント: 管理者にだけ表示を許可
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。