« 2008年11月 | トップページ | 2009年1月 »

2008年12月の記事

2008年12月28日 (日)

翻訳ボランティア募集のお知らせ

「宣伝してね」ということなので、宣伝します。

リンデンさんたちが、翻訳ボランティアを募集しているそうです。

リンデン社では現在「リンデン賞」の候補プロジェクトを募集していますが、応募書類は英文で提出することになっています。しかし、リンデン賞に値する活動を行っている人は必ずしも英語が堪能とは限らないことは、リンデン社でも認識しており、応募書類の (候補者の母国語から英語への) 翻訳を手伝うボランティアの斡旋をすることにしました。

今回の募集は、このボランティアです。

リンデン賞の募集自体が1月15日締切りなので、ボランティアの募集も急いでいるようです。詳しくは、以下のメッセージ (抜粋) をお読みください。

There is a project available for translators.  This project will assist residents in translating their applications into English for submission for the Linden Prize.

Link: https://wiki.secondlife.com/wiki/Linden_Prize_Translation_Project

Translators can sign up from that wiki page.  I will add names to the translator table.  The project page also needs to be translated as soon as possible.  Please do not include the translator name table on the language pages.

Also feel free to post links to this wiki page in your language specific blogs or community forums.  We will want the international community to be aware this volunteer translation assistance is available for the Linden Prize applicants! 

**Time is short on this project since applications are only accepted until January 15, 2009.

Thank you for helping make Second Life an even better place!!  ~  Lexie  Linden

以上、Lexie Lindenに代わりましてAlissaがお送りしました。

2008年12月27日 (土)

Mac miniをSSDに

先日アラレカフェで雑談していたところ、SSDの話題になりました。それで (ということもないのですが)、Mac miniのハードディスクをSSDに交換してみました。

私のMac miniはCore Duo (Core 2 Duoじゃなくて) の1.66GHz。ディスクは60GB。シーゲートのST96812ASという5400回転品がついていました。データシートによると、シーク12.5ms、レイテンシ5.6ms、サステインドデータレート最大42MB/s。対して、交換用に買ってきたSSDは、CFD販売のCSSD-SM60NJというもの。MLCで容量60GB、リード140MB/s、ライト90MB/sと書いてあります。(秋葉原をぐるっと回って、このクラスで最安値だったんです。)

せっかくなので交換前後で性能を比較してみました。

起動時間 (電源投入から): 35秒→20秒
Xcodeの起動時間: 10秒→3秒
SL viewerのソースディレクトリでsvn stat: 15秒→1秒
SL viewerのビルド (UniversalでRelWithDebInfo): 65分→50分

ということで、確実に速くなっている模様です。いやー、良かった。

私の場合、Macでは基本的にSLの開発 (テスト実行を含む) しかしないので、これくらいしか測定することがないのですが、svnに限らず、unixコマンド類の実行が非常に速くなっている感じがしてうれしいです。grep -R なども非常に速い。それもそのはずで、Activity Monitorの表示で、ディスクリードが80MB/sくらいの値になっています。コンパイルは普通CPUがボトルネックになる処理ですから、あまり期待していませんでしたが、それでも20%ほど速くなっています。これはおそらく、デバッグ情報がたくさんついて、ファイルが大きくなっていることが原因と思います (実に、実行ファイルは2GBになります) が、なんであれ、ビルドが速くなるのはありがたい。

ディスクの交換の手順は、「Mac mini 改造 / Studio Milehigh」を参考に (と、いうか、ここに書いてある通りに) しました。

なお、一点だけ期待と違ったのは音。SSDは可動部分はありませんが、データの書き込みに必要な電圧 (普通は18Vくらいらしい) を発生させる回路が内部に入っていて、この回路を構成するコンデンサ等が振動して音を出します。その知識はあったのですが、この音が予想以上に大きい。もともとのMac miniのハードディスクは非常に静かで、アクセス音は注意していないと聞こえない程度なのですが、それと比べてむしろSSDの方がうるさい。ちょっと驚きました。

※ ついでにアフィリエイトリンクです:

CFD [CSSD-SM60NJ] SSD 60GB MLCモデル

2008年12月21日 (日)

9ヶ月ぶりにLinux版ビューアでその場入力

JIRAのVWR-2261を9ヶ月ぶりに更新しました。

LinuxのSLビューアで、WindowsとかMacintoshのように日本語 (中国語・ハングルなども) を「その場入力」できるようにする、というものです。

このパッチは、実はSDLを使うのをやめて全面的にGTKベースにするという、日本語入力云々以外にも影響のある大改造になっていまして、そのほかにも、OpenOffice.orgとの間のテキストのcut'n'pasteが改善されるとか、マウスカーソルが色つきになるとか (例えば「Buy」できるアイテムをポイントしてみてください) さまざまな改良を含んでいます。

お試しください…と言いたいところなのですが、これのコンパイルはかなり大変で、それなりにわかっていないと失敗するような気がします。なので、腕に覚えのある方限定になってしまいますが。そのうち、ビルド手順なんかも文書化するかもしれません。

2008年12月13日 (土)

Pango対応ビューアの12月13日版をアップロードしました

という、タイトルの通りですが。

今回は1.22 RC3ベースになっています。1.22は最初からかなり安定しているので、RCとは言え安心して使えるような気がします。微妙に軽くなってもいるようです。

pango版としての機能は、今回の主要な変更はアラビア文字関連なので、日本語圏の皆様にはあまり面白くないかもしれません。ただ、マウスによるテキストの範囲選択が微妙に狂う件とか、ノートカードに埋め込んだオブジェクト (ランドマークなど) がクリックできなくなる件などの、11月23日版にあったバグ修正も含まれています。

あ、そうだ、そういえば、日本語Windowsを念頭において、フォントオプションのデフォルトを調整した、という件がありました。11月23日版よりは、日本語のテキストが読みやすくなっているのではないかと思います。

また、今回から、MacOSでのコンパイルもできるようになりました。

例によってソースに対するパッチはJIRAのVWR-10131の添付ファイルとしてアップロードしてあります。

すぐに使える (実はそれなりに手間のかかる…) Windows用のバイナリも、例によってSkyDriveにアップロードしました。

    http://cid-88858bc052aea782.skydrive.live.com/self.aspx/SecondLife/snapshot-20081213-win32.zip

からダウンロードしてください。(このURLは直接リンクではなくて、ダウンロードの案内のページです。URLがまぎらわしいので注意してください。)

2008年12月 7日 (日)

MacOSのPangoはイマイチなのかも

うーむ。

やっとMacOSでPango対応ビューアが動くようになりました。今までは動かすことで頭がいっぱいだったのですが、動くバイナリができたので、いろいろと機能のテストをやりました。そうしたら、予想以上に、MacOSとpangoは相性が悪いことを思い知らされました。

いや、日本語は別に問題ありません。日本語ユーザにとってのpango対応の意味は主に禁則処理だと思うのですが、禁則処理はMacOSでも問題なく働きます。問題はいわゆる複雑な文字、つまり、インド系の文字とかアラビア系の文字とかの扱いにあります。

以下、何がどういう風に問題なのか、まとまりなくずらずら書きます。どうやって回避するか、現在考え中です。

pangoというのは主に文字の配置を扱うライブラリです。フォントファイルのデータに基づいて個々の文字を描画 (ラスタライズ) する機能はpango自体は備えていず、別のAPIを呼び出す仕組みになっています。ラスタライズを担当するAPIをpangoではラスタライズバックエンドと呼びますが、これは複数提供されていてアプリケーションが選ぶようになっています。

従来私が作ってきたpango対応ビューアでは、pangoのライスタライズバックエンドはpangoft2という、要はFreeTypeライブラリを使うものを前提にしていました。これを選んだ理由はいくつかあって、

  • どのプラットフォームでも共通に利用できるバックエンドは事実上これだけであること。pangoxftはX11でしか使えず、pangowin32はWindowsでしか使えない。pangocairoは、pangoから見るとプラットフォーム独立だが、内部ではプラットフォーム固有のフォントラスタライザを呼び出しており、動作がプラットフォームごとに異なる。
  • GTKの元祖であるGIMPは、もっぱらpangoft2を使ってテキストを描画しており、実績がある。
  • もともとSLビューアはFreeTypeを使ってテキストを描画するようになっており、そこから改造するのに相性がいいと思った。

ところで、最初に作っていたLinux版が動くようになる前から、並行して、WindowsやMacOSでのpangoの状況を調べていました。Windowsでは特に問題を聞きませんでしたが、実はMacOSでは、アラビア文字がうまく表示できないという報告をウェブでみつけていました。テストプログラムを作って試してみると、確かにアラビア文字のシェイピングがうまくいきません。しかし、pangoft2を使わずにpangocairoを使うときれいに表示されます。それで作戦を変更し、当面はpangoft2とpangocairoの併用にしたのです。(pangocairo対応は、20081031版には間に合いませんでしたが、20081123版に入れました。)

ところが、ここにまた落とし穴がありました。MacOSのpangocairoは、フォントの自動補完が機能しないようなのです。これはどういうことかというと、アラビア文字を表示するためにはアラビア文字フォントを指定しなければならず、アラビア文字フォントを指定すると今度はアラビア文字以外の文字がまったく表示されないのです。

これには、まいりました。

さらにいろいろ調べると、pango/cairo の MacOS (というか、darwinと書いていたが) 対応のメンテナの人が「Linuxのcairoでは、指定されたフォントに含まれないグリフを他のフォントを使って補完してしまうが、darwinではそういう動作をしないように直した」と書いているのを発見しました。どうやら、このメンテナ氏は、補完しないのが正しい動作だと考えていて意図的にそうしているようなのです。なぜだかわかりませんが。困ります。

ところで、そもそもの、pangoft2がどうしてMacOSだとアラビア文字をちゃんとシェイピングできないか、なのですが、

これは、OSの問題というよりはフォントファイルの仕様の問題で、もっというとTrueType仕様をめぐるAppleとMicrosoftの駆け引きの結果であることがわかりました。

TrueTypeというのはもともと,AppleがAdobeの支配力を弱めるために戦略的に設計したファイル形式なわけですが、当時Apple単独でAdobeに対抗するのが厳しかったためMicrosoftとつるんで業界標準として確立させたわけです。これはおおむね1990年代の初めくらいの状況。

その後、Appleの思惑通りに、ハイエンドプリント分野を除いてはAdobeのテクノロジの影響力が弱まると、今度はAppleとMicrosoftの争いの構図になり、両者はTrueTypeの共同開発をやめ、それぞれ独自に発展させることになってしまいました。この断絶は1990年代半ばに起き、Appleが独自にTrueTypeを拡張したフォーマットがQuickDraw GXと同時に投入されたTrueType GX、同時期にMicrosofotが独自にTrueTypeを拡張したフォーマットがTrueType Openでした。さらにその後、AppleがTrueType GXをさらに独自に拡張したものが現在のAAT (ATSUI として知られるライブラリのベース)、Microsoftがなぜかかつての仇敵Adobeと組んでTrueType Openを発展させたのがOpenTypeになっています。

この結果、Windowsの標準フォントは、TrueType Open仕様またはOpenType仕様、MacOSの標準フォントはすべてAAT仕様、ということになっています。両者はもともと共通仕様だったTrueType 1.0を拡張した仕様なので、基本的な部分には互換がありますが、拡張仕様には互換がありません。

困ったことに、アラビア文字のシェイピング情報は、互換がない拡張仕様の一部なんですね。

OpenTypeでは、シェイピングは、ひとまとめにしてOpenType Layout (OTL) と呼ぶ形式でフォントファイル中に格納されています。GDEF、GSUB、GPOSという三つのテーブルが主要な働きをします。AATでは、これに相当する情報はmorxというテーブルに入るのです。

現在のpangoft2は、GDEF/GSUB/GPOSは扱えますが、morxは扱えません。MacOSのアラビア文字フォントにはGDEF/GSUB/GPOSというテーブルが入っていないために、MacOSでpangoft2を動かすと、アラビア文字をうまく処理できないのです。

さて、私はどうしたらいいのでしょうか。

2008年12月 6日 (土)

MacintoshでSLビューアを起動するとログイン画面になる前にクラッシュ

ひょっとしたらMacユーザーには常識だったりするのかもしれませんが、私は知らなくて、これで2日間つぶしたので、書いておきます。

MacintoshでSecond Lifeを起動して、ウィンドウが表示されて真っ黒になり、さてログイン画面が、と思うとクラッシュしちゃう。前はちゃんと動いたのに。そういうときはSecondLifeの設定ファイルをまるごと削除するとうまく動くようになるかもしれません。

設定ファイルは、ホーム配下のライブラリの中の、Application Supportというフォルダの中にあるSecondLifeというフォルダにまとまっています。このフォルダを丸ごとゴミ箱に入れてしまいましょう。(このフォルダの中には、過去のチャットやIMの記録なども入っていますから、必要な場合は、ゴミ箱ではなくて別の場所に移しておくほうがいいかもしれません。)

pango対応ビューアの状況

20081123版以降の状況です。

やったこと:

  • ベースのビューアを1.22シリーズに変更。(現在は1.22.2ベース。)
  • ノートカードに埋め込んだオブジェクト (ランドマークなど) がクリックできなくなってしまうことがあるバグを修正。
  • コミュニケーションのフレンドパネルにゴミが表示されるバグを修正。
  • pango+FreeType から pango+cairo に切り替えると落ちることがあるバグを修正。
  • 「グリフキャッシュを使わない」オプションを追加。
  • 「Auto Hintのデフォルトを調整」オプションを追加。Windows用。
  • 表示する行の「前」を考慮してテキストの方向を決める。
  • テキストの方向を調整するオプション。

やりつつあること:

  • Macでビルド中。Intel専用のバイナリは作れるようになった。Universalバイナリがうまく作れない。
  • Macでは、現状のpanogft2では問題があることがわかったので、pangocairo + cairo-atsui を前提に考え中。
  • ノートカードなどで、テキストの範囲選択で反転の範囲と選択範囲がずれることがある件を調査中。
  • LLTextEditorとLLLineEditorの改造について思案中。

来週には、次の配布に持って行きたいと思ってます。

2008年12月 3日 (水)

Universal Binary

pangoのUniversalBinaryが作れません。っていうか、そもそもUniversalって、わからないことばかりですが。

単なるpangoならバイナリあるみたいですが、pangoft2が必要で。これがない。

困ってます。

« 2008年11月 | トップページ | 2009年1月 »