2013年11月27日水曜日

Windows 8.1:CJKフォント変化とU+200Xの空白文字

まだ8がCP版だった頃、コメントのU+2001に未知の幅があるという話を書きました。
他の特殊文字と同様、これもSegoe UI Symbolなのでは?とその時は思ったのですが、どうも違うようです。

下図は上段がSimSun化したコメント、下段がGulim化したコメントです。フォント変化文字の間に幅の異なる空白文字、U+2001・U+2002・U+2009を挟んでいます。8.1と7で表示に差異はありません。


これらの空白文字はSimSunにもGulimにもありません。フォントリンクにより代替表示がされていると思われます。フォントリンクは8.1も7も同じで、MICROSS.TTF(Microsoft Sans Serif)が参照されているはずです。


このコメントの最後の文字を罫線記号のU+2500に変更してみます。8.1と7とで表示が変わりました。


ここでなぜU+2500を使用したかは、話が長くなるので割愛します。
8.1の方では、幅が異なる空白文字が同じ幅に変わってしまったように見えます。似たような現象をXPで見たことがあります。


しかし8.1とXPでは状況が異なります。XPのMicrosoft Sans SerifにU+200Xの空白文字はありません。と言うか、フォントリンクの登録もありません。XPで表示されているSimSunの全角幅の空白、およびGulimの「は未定義(表示するものが無い)を表していると思われます。

試しに8.1でもXPと同じ状況にしてみます。8.1・7のフォントリンク先でU+200Xを持っているのは、Microsoft Sans SerifとMS P明朝(SimSun)/MS UI Gothic(Gulim)です。これらをフォントリンク先から削除してOSを再起動すると、XPと同じ表示になります。


8.1で空白文字が同じ幅になったのはXPのような未定義ではなく、元々U+200Xが同じ幅で定義されているフォントにフォールバックされたのではないか?と思いました。もっとも、それはSegoe UI Symbolではないようです。

Export Font Glyphs - BabelMap

調べてみると、他のフォントではそういうケースもあるようでした。このコメントの話とは直接関係ないと思いますが、例えば下図はConsolasというフォントの場合です。

Export Font Glyphs - BabelMap

MS ゴシックやMS 明朝でもU+2002とU+2009が同じだったりしました。なんなのか特定には至りませんでした。

さて、このように8.1と7で表示に違いが出てしまう場合の対処です。
トリガーとなったU+2500とその前の文字との間にArialを挟むだけで直ります。下図はゼロ幅のU+200Cを挟んでいます。


とは言うものの、そもそもCJKフォント変化させたコメントでU+200Xの空白文字を使うのはChromeとの互換性で問題が発生します。下図はSimSun化のコメントについて、Chromeで縮むU+2588をU+2587に、U+2500をU+2501に変えてIEの表示と比較しているところです。


IEのU+200XがMicrosoft Sans Serifなのに対して、ChromeはArialだと思われます。Arialの方が幅が広いようです。互換性を図るのであれば各フォント変化文字とU+200Xの間にArialを挟み、IEのU+200XもArialにする必要があるでしょう。


上のコメントはXPではU+200Xが豆腐になりますが。


これはXPのArialにU+200Xが無いためでしょう。例えばU+2001のあるフォントを調べると、8.1とXPとでは下図のような差があります。

Font Coverage - BabelMap

XPを考慮する必要がなくなれば、上のようなやり方もアリだろうと思います。

2013年11月14日木曜日

Chrome 31:PepperFlashの手動アップデートについて

Chrome 31ではFlash Player(PepperFlash)が手動でアップデートができるようになったそうです。

“PNaCl”をサポートした「Google Chrome 31」がベータ版に - 窓の杜

自動アップデートではなかなか更新されなかったのも、これで解決するなと思いました。ところが31にアップデートしてchrome://components/を開いてみると、なんか変です。


31への更新でPepperFlashも最新の11.9.900.152に上がっています。


しかし、コンポーネントで表示されているのは前のバージョンです。「アップデートを確認」をクリックしてみましたが、グレー表示になったまま何も起こりません。
どうもProgram Files (x86)ではなく、ユーザープロファイルのフォルダにある以前のpepflashplayer.dllを参照しているようです。Windows 7では以下の場所にありました。

C:\Users\<ユーザー名>\AppData\Local\Google\Chrome\User Data\PepperFlash\11.9.900.117

試しに上のフォルダを削除してChromeを再起動してみたところ、表示が変わりました。


もう一度「アップデートを確認」をクリックしてみましたが、やはり何も起こりませんでした。バグですかね。

ちなみにこの状態で実際にFlash Playerを表示しても、特に問題はありません。使われているのはProgram Files (x86)にあるpepflashplayer.dllだからです。


いくつかのPCで試して同様でした。
ChromeのFlash PlayerはこのPepperだけになるみたいですし、ちゃんと機能するところが見てみたいです。

2013年11月8日金曜日

GINZAちょっとだけ改変

ニコニコがGINZAになってからStylish使ってませんでした。ZeroWatch以来不満だったことがだいたい解消されたからです。でもやっぱり再生リストは邪魔です。間違ってクリックすると他の動画に飛ばされてしまいます。
その部分だけ改変しました。


図はFirefox(Cyberfox)です。
Stylishを使うと言っても実はCSSがよくわかってるわけではないので、今までここに具体的なことは書いてませんでした。この件は簡単なので書いておきます。

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document url-prefix("http://www.nicovideo.jp/watch/")

1行目はお約束です。2行目で適用するURLを指定しています。Chromeの場合、この記述は要りません。かわりに「適用先」の欄でURLを指定します。

さて、わかるのは「!important」というキーワードで元のプロパティの値を強制的に上書きできるということだけです。パーツの名前は「要素を調査」で当たりをつけています。
再生リストを非表示にします。

{
    #playlist {
        display: none !important;
    }
}

適用後:


まだ「動画をもっと見る」が残っています。同じように非表示にもできますが、これは使いたいので縮小して残します。


動画プレイヤーを再読み込みせずに任意の動画へ移動できるのは、やはり便利です。
以前はサムネを選択しないと表示されなかった再生数やマイリス数などの数字も、現在はタグ検索のページと同じように表示されています。

{
    #playlist {
        display: none !important;
    }
    #videoExplorerExpand {
        margin-left : auto !important;
        width : 170px !important;
        }
}

適用後:


右寄せで縮小しています。右寄せは「margin-left : auto」と書くそうです。
まぁ正直かっこよくはないものの、実用的な形にはなりました。再生リストと同じように広告も非表示にできるはずですが、あえてやっていません。広告をブロックするのは営業妨害だと思ってるので。

こんなんじゃ使えねえ!という方には、すばらしいユーザースタイルが配布されています。ご紹介まで:

CompactGINZAPlayer CSS for ニコニコ動画:GINZA  - Themes and Skins for Nicovideo - userstyles.org

2013年11月7日木曜日

Cyberfoxの日本語化(補足:「XMLパースエラー」について)

2013/11/28追記
下記の件は25.01の言語パックで対応した模様です。

[Update] Cyberfox Language Packs 25.0.1 - 8pecxstudios Support Forums

次回更新時に様子を見てみたいと思います。

2013/12/12追記
26のインストール時、言語パックで互換性の確認は出ませんでした。


前にも書きましたが、現在のCyberfoxに公式の言語パックをインストールしてしまうとエラーになります。先日25に更新する際、うっかり互換性の確認で言語パックも更新してしまいました。


これでは公式の言語パックが入ってしまいます。
このまま起動しようとしても「XMLパースエラー」が表示され、Cyberfoxは開きません。


ちなみに「browser.xul」というのはFirefoxのインターフェースのことだそうです。
引っ掛かっている「appmenu_minimizeMemoryUsage」は、名前からしてCyberfoxで独自に追加されている「Clean Ram Cashe」のことではないかと思われます。


公式のFirefoxには存在しない名前が記述されているため、エラーになるんじゃないでしょうか。

この場合、インストールしてしまった言語パックをいったん削除します。Windows 8・7であれば以下の場所にファイルがあります。

C:\Users\<ユーザー名>\AppData\Roaming\Mozilla\Firefox\Profiles\○○○.default\extensions

※AppDataは隠しフォルダです。

ファイル名:langpack-ja@firefox.mozilla.org.xpi

削除後、Cyberfoxを起動して以前の記事に書いたように手動で言語パックをインストールします。

なお同じプロファイルを使っているFirefoxがあれば、言語パックはアドオンマネージャの「言語パック」からも削除できます。