2012年5月4日金曜日

U+200BとU+200C

ZeroWatchの修正が早速来ていました。

ZeroWatch修正、設定の追加やチューニングなど - ニコニコ動画開発者ブログ

やはりコメント入力については要望が多かったようで、「常にコメント入力フォームをプレーヤー下に表示」 というオプションが追加されていました。


改行の入力もできるようになっていました(Ctrl+「.」)。しかしおそらく想定されていたとは言え、開発なさっている方々はGWだというのに大変ですね・・・UIを一新するという試み自体はいいことだなと思うので、フィードバックを活かしながらさらに改良を進めてくださることを期待したいです。
ちなみに新たな入力フォームでAlt+「160」(U+00A0)単独での入力はエラーになりました。まぁそんなことしてるのは自分だけかもしれませんが。
追記:
その後Alt+「160」(U+00A0)単独で入力できることを確認しています。プレーヤーの修正と関係あるのか、この時はコメント自体が弾かれただけだったのかはわかりません。

さて前々回の日記の中で、U+200C(ゼロ幅文字)を使ってフォント変化文字の隣接による影響を無効にする例を紹介しました。これについて、「U+200B(同じくゼロ幅)じゃダメなのか?」というツッコミをいただきました。
ゼロ幅文字と言えばなぜかU+200Cをいつも使っていたので、考えたこともありませんでした。今さらながら確かめてみました(オワニン開さんご指摘ありがとうございました)。

今度はGulim化で見てみます。SimSun化でも同じはずです。


上図の「a」をゼロ幅文字に置き換えてみます。
コードポイントU+200Xの並びには、5つのゼロ幅文字があります:

  • U+200B    Zero Width Space
  • U+200C    Zero Width Non-Joiner
  • U+200D    Zero Width Joiner
  • U+200E    Left-To-Right Mark
  • U+200F    Right-To-Left Mark

それぞれ別の名前がついているのは機能の違いを示していますが、ここでそのことは関係ないと思われます。下図が実際に置き換えてみたところ:


U+200Bだけダメですねwこれは知りませんでした。
U+200Bと他とは何が違うんでしょうか。少なくともコードページの定義には違いがありました。

Unicode cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258
200B - - - - - - - - -
200C - - - - - - 9D - -
200D - - - - - - 9E - -
200E - - - - - FD FD - -
200F - - - - - FE FE - -

1255はヘブライ語・1256はアラビア語です。U+200Bだけどちらにも定義がありません。
なおCJKコードページにはいずれの文字も定義はありません。

自分が勝手に言ってることですが、ニコニコプレーヤーの既定のフォントはArialであり、ArialがサポートするWindowsコードページに定義がある文字はそのままArialで表示されていると思われます。

Code Pages Supported by Windows - MSDN

Arial - Version 5.05 - Microsoft typography

そしてArialで表示されている文字は、冒頭の図の「a」のように隣接の影響を無効にします。U+200Bだけダメなのは、そういうことじゃないのかなと思いました。

じゃあU+200Bのフォントはなんなのか・・・は、長くなるので割愛します。調べてみたものの特定はできませんでした。さしあたり実用的な意味では上の結果だけわかればいいですよね^^;

本題とまったく関係ないんですけど、この件を調べてておもしろいものを見ました。
Windows 7でarialbd.ttf(Arialの太字)を無効にしたところ、英字が斜体になりました。


Arialが太字らしいことはわかってたのでどうなるんだろと思ったのですが、こういう挙動をとるとは。

0 件のコメント:

コメントを投稿