hironishihara / ofxTrueTypeFontUC

An extension of ofTrueTypeFont class for using UNICODE characters. Tested on OSX, iOS, and Windows.
Other
116 stars 46 forks source link

crash on win7 vs2010 #3

Closed Akira-Hayasaka closed 11 years ago

Akira-Hayasaka commented 11 years ago

こんにちは。

いつも便利に使っています。 いままでosxでしかつかったことがなかったのですが、 win7vs2010で使用してみるとクラッシュすることがあったので、 ちょっとだけ手を加えました。 (実のところ、クラッシュの本当の原因はわかっていません。)

hironishihara commented 11 years ago

こんにちは

早速マージさせていただきました。ありがとうございます。 あと、localeは後ほど.cppに移すつもりでいます。

あいにくwin7vs2010の環境がないのでこちらで確認できないのですが、 これらの変更後も時折クラッシュしているのでしょうか?

もしよろしければ教えていただければと思います。

Akira-Hayasaka commented 11 years ago

お返事ありがとうございます!

クラッシュはしなくなったのですが、stringからwstringに変換するところで文字化けすることがあります。 サーバから受け取った文字列を変換してるので、 サーバ側の文字コードの問題かもしれないのですが、 まだ原因が特定できていない状況です。。。 なにか情報をお持ちでしたらぜひ教えてください!

A

hironishihara commented 11 years ago

文字コード周りはちょっと複雑すぎて、私自身よくわかっていない部分がありますが。 もしかしたら、サロゲートペアが関連しているかもしれません。

Windows環境のデフォルトではwchar_tにUTF-16が入ります。 そして、XP以前ではサロゲートペアを無視して、 UCS-2に含まれる文字(wchar_t×1個で表現できる文字)だけを扱ってました。

Vistaからサロゲートペアの文字にも対応するようになり、 それらの文字はwchar_t×2個で1文字を表現するようになりました。

ofTrueTypeFont や ofxTrueTypeFontUC は、freetypeのライブラリを呼ぶ際に、 UCS-4表現で文字を指定します。

しかし、現状のofxTrueTypeFontUCでは、 サロゲートペアの文字(wchar_t×2個で表現されるUTF-16の文字)を UCS-4に変換することができていません。

このような場合に文字化けしているという可能性もあります。

Akira-Hayasaka commented 11 years ago

情報ありがとうございます。 うーんめちゃくちゃ複雑ですね... サーバの人にも伝えて相談してみます。 ありがとうございました。

hironishihara commented 11 years ago

サロゲートペア思い出したついでに関数つくってみました。 ともあれ、バグの報告と修正ありがとうございました。