WebKit の一部である WebCore は、ソースコードが公開されているんだ。だから、問題があれば、ユーザが解決できる可能性がある。Safari は、公開された当初から日本語の問題が多かったけど、それはある程度まで修正できる。
という目的で、新井隆浩さんが、Safari の文字化けパッチを公開しています。これは、Safari を使っていると、ときどき文の途中が数文字から数十文字いきなり化けることがあるでしょう?それのためのパッチだ。
技術的な説明をすると、Safari はページの読み込みを開始すると、読み込んだそばからテキストデータをデコード(たとえば Shift-JIS から Unicode へ)していくんだ。だけど、知っての通り、日本語(やアジア圏の言葉)は、2 byte 以上でできている。だから、常にきりのいいところでテキストが送られてくる保証はなくて、途中でぶった切られている可能性もある。これを、多バイトの泣き別れっていったりするんだ。
テキストのデコードには Text Encoding Converter っていうライブラリが使われているんだけど、こいつは多バイトの分断が起きたときに、kTECPartialCharErr っていうエラーを返す。だから、このエラーをチェックして分断されたバイトを保存しておけばいいんだけど、Apple がこれをやっていないんだな。多バイト圏のことを考えていないのか、Apple。
この問題を解決するのが、新井さんのパッチだ。パッチを当てるには、WebCore のソースコードと、コンパイルができる環境が必要なので、注意。
で、コンパイルできる環境が無い人のために、公開してみることにした。新井さんのパッチを適用した、WebCoreHMDTv85 と、WebCoreHMDTv85.5 だ。それぞれ Safari v85 用と v85.5 用だ。バージョンは、Safari のアプリケーションメニューから、「Safari について」を見ることで、調べることができるぜ。じゃ、インストールの方法を。
注意!:以下にインストール方法を書くけれども、意味が分からない人は実行しないで下さい。また、実行した場合は必ず自己責任でお願いします。
これでオッケー。インストールが終わったら、Safari を起動すればよい。起動しない場合は、落ち着いてファイル名を確認する。どうしてもだめな場合は、バックアップのフレームワークに戻す。ここまで読んでよく分からなかった人には、おすすめしません。