Mac OS X対応化計画 Part1
Mac OS XでMiyakoを動かそうとしたときに起こった問題に対処してみようかというわけで、いろいろ情報を集めてみました。
(id:watura さん、MakさんThanks!)
フォントパスの指定
フォントパスが見つからない問題への対応。
pre7・8でのフォントパスの指定は、日本語名のパスが利用可能ということで、以下の様に指定しましたが、
@@font_base_path["mac_osx"] = ["./", "/ライブラリ/Fonts/", "/システム/ライブラリ/Fonts/"]
Mac OS Xのバージョンによっては、旧来の英語表記でのパス名に固定されているらしいので、英語表記でのパス名を
追加しました。
@@font_base_path["mac_osx"] = ["./", "~/Library/Fonts/", "/Library/Fonts/", "/System/Library/Fonts/", "/ライブラリ/Fonts/", "/システム/ライブラリ/Fonts/"]
ファイルパスの文字コード
Mac OS XでのファイルパスはUTF-8なのですが、完全に対応し切れなかったため、できる限り、パス名のUTF-8変換を行う様にしました。
(MacOSはパス名が云々とコメントされている箇所が追加箇所)
あと、検索対象のファイル拡張子に「.otf」を追加しました。
def Font.search_font_path_file(hash, path) #:nodoc: Dir.glob(path+"*"){|d| hash = Font.search_font_path_file(hash, d+"/") if test(?d, d) d = d.toutf8 if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため hash[$1] = d if (d =~ /\/([^\/\.]+\.tt[fc])\z/ || d =~ /\/([^\/\.]+\.otf)\z/) # MacOSX対応 } return hash end def Font.create_font_path #:nodoc: osn = Miyako::getOSName @@font_base_path[osn].each{|path| path = path.toutf8 if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため @@name_2_font_path = Font.search_font_path_file(@@name_2_font_path, path) } end def Font.findFontPath(fname) #:nodoc: fname = fname.toutf8 if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため return @@name_2_font_path.fetch(fname, nil) end def Font.get_font_inner(fname, fpath, size=16) #:nodoc: if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため fname = fname.toutf8 fpath = fpath.toutf8 end @@font_cache[fname] ||= {} @@font_cache[fname][size] ||= SDL::TTF.open(fpath, size) return @@font_cache[fname][size] end
serif/sans_serifファイル名の指定
pre7,pre8では、serif,sans_serifファイル名に「ヒラギノ明朝 Pro W3.otf」「ヒラギノ角ゴ Pro W3.otf」を指定していましたが、
このファイル名で入っていないシステムがあるようですので、以下の様に対象のファイル名を追加しました。
@@font_base_name["mac_osx"] = [{:serif=>"Hiragino Mincho Pro W3.otf", :sans_serif=>"Hiragino Kaku Gothic Pro W3.otf"}, {:serif=>"ヒラギノ明朝 Pro W3.otf", :sans_serif=>"ヒラギノ角ゴ Pro W3.otf"}, {:serif=>"VL-Gothic-Regular.ttf", :sans_serif=>"VL-Gothic-Regular.ttf"}, {:serif=>"umeplus-gothic.ttf", :sans_serif=>"umeplus-gothic.ttf"}]
もしこれで、引っかからないときは・・・VL-Gothicかumeplus-gothicのインストールをお願いします・・・。
「miyako_no_katana」のインストール
Mac OS Xだけの話ではないのですが、拡張ライブラリmiyako_no_katanaがインストールされないバグがありました・・・。
次のバージョンで対応させます・・・。
参考にしたページのURL
「Mac OS X 10: フォントの保存場所とその目的」
http://docs.info.apple.com/article.html?artnum=106417-ja
「Mac OS X 10.4: フォントリスト」
http://support.apple.com/kb/HT1538?viewlocale=ja_JP
「Mac OS X 10.3: フォントリスト」
http://docs.info.apple.com/jarticle.html?artnum=25710
「Way of My Life」
http://d.hatena.ne.jp/watura/comment?date=20080517#c
「[ruby-dev:25046] Re: 拡張ライブラリの拡張子(".bundle")」
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/25046