2013年4月19日金曜日

Firefox21以降のpdfjsと設定

Firefox 21ではディスプレイドライバがDirect2Dを使うことのできないもの場合(Firefoxがブロックする場合も含む)には、PDFJSを使う場合に対応が必要となる。

1.DirectWriteをfalseにする。

user_pref("gfx.font_rendering.directwrite.enabled", false);
ただし、こうすると他のページのフォントの表示が悪くなる。

2. gfx.canvas.azure.backendsからskiaを除く。
user_pref("gfx.canvas.azure.backends", "direct2d,cairo");
ただし、こうするとcairoを使うことになるので動作が重くなる。

3.無理矢理Direct2Dを使う。(ブロックされている場合のみ)
user_pref("gfx.direct2d.force-enabled", true);
ただし、もちろん動作の安全性は保障できない。

なお僕は3を選んだ。

2013年4月3日水曜日

全パッケージのWin8 SDK化が完了した。

これですっきりした。

Firefox 21.0β1は難産になってしまってるけど、現在PGOビルド中。

2013年3月31日日曜日

Win8 SDK化進行中。

パッチを修正して、Win8 SDKを使っている場合にはWin8 SDKだけを使うように、そうでない場合にはDirectX SDKを使うように修正した上で、全てのパッケージをビルドしなおしている。

理由は使っているSDKが混在しているのでは、気分が悪いからだ。

2013年3月21日木曜日

SeaMonkeyで上手くいかないというのは勘違いだった

angleprojectのソースで、r1984以降では仕様変更があり動かなくなっていただけだった。

というわけで、gfx_angle.diffに含まれるangleを動作する最新trunkのr1835に戻し、Firefox 20.0β6はWin8 SDKだけでビルドした。この場合、Win8 SDKに含まれるD3DCompiler_*.dllをパッケージに同梱しなければならないので、そのようにも修正した。

なお、Win8 SDKに変更したところで、特段に動作が軽くなったりするわけではない。ただ、今後Win7 SDKが更新されていくことはないだろうし、Win8 SDKにはなにがしらの更新が行われるかもしれない。だから、Win8 SDKを使うようにすることが正しいと思う。


2013年3月18日月曜日

SeaMonkeyでは上手くいかなかったので諦めた

先のエントリはFirefoxでは上手くいったがSeaMonkeyでは失敗した。なので、諦めてDXSDKを使うことにした。

2013年3月16日土曜日

Win8 SDKだけではFirefoxのビルドができない件とその対策

最新のmozilla-buildを使うとWindows SDK for Windows 8を認識して、そちらを使うようになる。このバージョンからはWindows  SDKとDirect Xが統合されたので、別途DirectX SDKは不要となるはずなのだが、Firefoxのビルドに関しては訳あって別途Direct X SDK(June 2010)が必要とされる。

その原因はfirefoxに含まれるgfx/angleが廃止予定のd3dx9を使っているからだ。これは困る。

ところで、最新のangleprojectのソースではd3dx9を使用していない。 これを利用して、FirefoxをDirectX SDK(June 2010)なしでビルドしてみようと試してみた。

そのために必要な修正が必要となるソースは次の通り。詳しい修正内容はパッチを見てほしい。
  1. browser/installer/package-manifest.in DirectX関連dllをインストーラから外す。
  2. configure.in Windows SDKがインストール済みのときはDirectX SDKの検索をしない
  3. content/canvas/src/WebGLContextGL.cpp 最新のangleに対応するための修正
  4. content/canvas/src/WebGLProgram.h 同上
  5. content/canvas/src/WebGLShader.h 同上
  6. gfx/angle以下 angleを最新にする。
  7. gfx/gl/GLLibraryEGL.cpp d3dx9_*.dllの呼び込みを止める
  8. layout/media/Makefile.in Windows SDKがインストール済みのときは、リンクするライブラリディレクトリにDirectX SDKのディレクトリを含めないようにする。
  9. toolkit/library/Makefile.in 同上
苦労したところで分かったことは、こんな面倒なことをするくらいならDirectX SDKをインストールする方が簡単ということだった。
しかし、生来の捻くれ者の僕はDirectX SDKをインストールしないという方向でビルドしていこうと思う。

2013年3月14日木曜日

現在のuser.js

コピペして使っても構いませんが、自己責任でどうぞ。

pdfjsでフォントが埋め込まれていないpdfを表示するときには、 メイリオを使う方が良い

ということを教えてもらったので、フォントの指定を追加した。ありがたい。
 user_pref("browser.cache.memory.capacity", 65536);
user_pref("browser.link.open_newwindow", 3);
user_pref("browser.link.open_newwindow.override.external", 3);
user_pref("browser.newtab.url", "about:blank");
user_pref("browser.newtabpage.enabled", false);
user_pref("browser.search.openintab", true);
user_pref("browser.tabs.animate", false);
user_pref("browser.tabs.closeButtons", 1);
user_pref("browser.tabs.closeWindowWithLastTab", false);
user_pref("browser.tabs.showSingleWindowModePrefs", true);
user_pref("browser.tabs.warnOnClose", false);
user_pref("browser.tabs.warnOnCloseOtherTabs", false);
user_pref("browser.xul.error_pages.enabled", true);

user_pref("content.interrupt.parsing", true);
user_pref("content.max.tokenizing.time", 3000000);
user_pref("content.maxtextrun", 8191);
user_pref("content.notify.backoffcount", 5);
user_pref("content.notify.interval", 1000);
user_pref("content.notify.ontimer", true);
user_pref("content.switch.threshold", 1000);

user_pref("font.name.serif.ja", "メイリオ");

user_pref("gfx.color_management.enablev4", true);
user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100);
user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 30);
user_pref("gfx.font_rendering.cleartype_params.pixel_structure", 1);
user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5);
user_pref("gfx.font_rendering.directwrite.enabled", true);

user_pref("network.http.max-connections", 24);
user_pref("network.http.max-connections-per-server", 8);
user_pref("network.http.max-persistent-connections-per-proxy", 4);
user_pref("network.http.max-persistent-connections-per-server", 4);
user_pref("network.http.pipelining", true);
user_pref("network.http.pipelining.firstrequest", true);
user_pref("network.http.pipelining.maxrequests", 8);
user_pref("network.cookie.cookieBehavior", 2);
user_pref("network.dns.disableIPv6", true);
user_pref("network.prefetch-next", false);

user_pref("nglayout.initialpaint.delay", 1);

user_pref("plugin.expose_full_path", true);

user_pref("signed.applets.codebase_principal_support", true);

user_pref("ui.submenuDelay", 0);