- Safari Developer Center-
WebCoreHMDT

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 について」を見ることで、調べることができるぜ。じゃ、インストールの方法を。

注意!:以下にインストール方法を書くけれども、意味が分からない人は実行しないで下さい。また、実行した場合は必ず自己責任でお願いします。

  1. WebCoreHMDTv85.dmg または WebCoreHMDTv85.5.dmg をダウンロードして、マウントする。Safari を使っているなら、ダウンロードすると自動的にマウントされるはずだ。

  2. WebCore.framework のバックアップを取る。ターミナルを立ち上げて、まず WebKit のディレクトリに移動する。

    cd /System/Library/Frameworks/WebKit.framework/Frameworks/

    そして、次のコマンドを打ち込む。

    sudo mv WebCore.framework WebCore.old.framework

    パスワードを聞かれたら、パスワードを打ち込む。

  3. WebCoreHMDTv85 または WebCoreHMDTv85.5 をコピーする。次のコマンドを打ち込む。

    sudo cp -R /Volumes/WebCoreHMDTv85/WebCore.framework .
    または
    sudo cp -R /Volumes/WebCoreHMDTv85.5/WebCore.framework .

    最後のピリオドを忘れないように。

これでオッケー。インストールが終わったら、Safari を起動すればよい。起動しない場合は、落ち着いてファイル名を確認する。どうしてもだめな場合は、バックアップのフレームワークに戻す。ここまで読んでよく分からなかった人には、おすすめしません。

■ダウンロード
WebCoreHMDTv85.dmg
WebCoreHMDTv85.5.dmg


[Home] [Download] [Archives] [BBS] [Cocoa Programming Tips 1001] [Core Foundation の秘密] [Safari Developer Center] [はじめてのブラウザのつくり方] [Sketch BP] [スクリーンセイバーを作ろう] [Objective-C 最適化] [Authorization API 完全理解] [Mac OS X Programming Books Review] [オブジェクト指向の言語比較論]

mailto: mkino@xd5.so-net.ne.jp