[コメントアート] Chrome pepflashplayer対応技術:U+2001の漢字幅化
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

[コメントアート] Chrome pepflashplayer対応技術:U+2001の漢字幅化

2013-05-18 21:32
  • 8
2014/2/23 追記
2014/2/20のchromeのバージョンアップにより、こちらの技術は使用できなくなりました。

こんにちは。
ごっつっつと申します。
この度はコメントアート(以後CA)の技術関連のブログを書かせて頂きます。

最近のCA界隈の課題はQwatch大画面やChrome pepflashplayer(以後pep)への対応だと私は考えています。皆さんの中にもそう考えている方は多いのではないでしょうか。
Chromeはニコニコ動画非推奨ブラウザながらも、その使い勝手の良さから使用している方は多いと思います。なので、pep対応を蔑ろにするわけにはいきません。私自身がCheomeユーザーだからということもありますが(笑)
今回はpep対応技術について新たに開発し、検証した結果を述べていきたいと思います。

まず、pepの大きな問題点と言えばこの二つ。

①「フォント変化しない」
     2589+「う」  
   
その他player        pep
 (明朝化)     (ゴシックのまま)


②「U+2001が漢字幅よりもやや小さい」
        「漢字幅」×1+2001×6
        「漢字幅」×7
  
      その他player                  pep
      (2001=漢字幅)               (2001<漢字幅)

①「フォント変化しない」については当初多くの方にとって衝撃だったのではないでしょうか。明朝化はかなり使い勝手のよい技術だったので・・・
②「2001が漢字幅よりもやや小さい」は配置がずれたり、二重リサイズの崩壊を招く危険性があるので、2001を迂闊に使用できなくなりました。代わりに空白に全環境共通の3000や0a00を使えばいいのですが、どちらも幅が小さく文字数が多くなりがちです。また、2001は「漢字幅」だというところも重要なポイントでした。

私はこの二つの問題をどうにか解決できないか、今まで検証してきました。
①については、CAが「なんとか崩壊しない」程度の技術を開発することは出来ましたが、いろいろやることがめんどくさく、どれも対処療法的な技術のため、まだまだ自分の中では実用的なものとはなっていません。次回のブログでこちらの進捗について書いていきたいと思ってます。
②については、検証の結果、根本的な解決策になり得る技術を開発できました。
以下、検証の詳細を述べていきます。

実は、「結合分音記号」などの結合文字を使用することによって、pepにおいても2001を漢字幅にすることができます。
      FB30+0323+2001×6+「漢字幅」×1
      FB30+0323+「漢字幅」×7

                 Windows 7 pep
                 (2001=漢字幅)

この挙動はこちらの動画で知ることが出来ました。→watch/1365251152 (CA制作者 あめんぼ様)
恐らく結合文字を加えることによってフォントが変化しているのだと推測しています。(見ためは完全にゴシックですが)
ちなみにpep以外だとこうなります。
           FB30+0323+2001×6+「漢字幅」×1
        FB30+0323+「漢字幅」×7

                 windows 7 非pep
                  (2001=漢字幅)

もちろん2001は漢字幅です。また、0323がFB30と結合して組み込まれています。

この挙動を知った時、次のように考えました。
「2001を漢字幅化させ、且つ自身は空白文字のように見えず、更にすべての環境下で幅が同じ文字はないのか?」
この考えの下、様々な結合文字の検証を行いました。
が、そんな文字は確認することが出来ませんでした。
どれも、「2001を漢字幅化させるけど、環境によって幅が異なる」とか「空白どころかどえらく見えてる」ものばかり・・・
やはり結合文字1文字だけでは、掲げた要件を満たすことは出来ませんでした。

次に検証しようと思ったのが、ゼロ幅文字+結合文字の組み合わせです。
「結合文字もゼロ幅文字に組み込んでしまえば見えないのではないか?」
と考え、いろんな組み合わせを試しました。
その結果ベストな組み合わせとなったのが、こちらです。

          「202A+0655」

実際に使ってみるとこうなります。

       202A+0655+2001×6+漢字幅×1
       202A+0655+漢字幅×7

   
    Windows 7 非pep               Windows 7 pep
     (2001=漢字幅)                (2001=漢字幅)

202A+0655はゼロ幅文字として機能しており、pepにおいて0655の影響で2001が漢字幅化しています。
主要OS(XP Vista 7 8)で検証した結果、すべて同じ挙動を示しました。今のところ文字化け等の不具合は確認されていません。
(8は ōrz 様、Vistaは monmon@(・ヮ・)ノ 様に検証して頂きました。ありがとうございました!)

したがって、この「202A+0655」によって2001を漢字幅化させる技術は「実用化できる」
と考えています。
やり方は、行頭に「202A+0655」を半角文字感覚で挿入するだけでとても簡単です。
(行末に挿入するとなぜか左側に隣接している2001がキャンセルされることが確認されています。なので行末ではなく、行頭に挿入することをお勧めします。行頭では不具合は確認されていません。)
皆様是非お試しください。
文字化け等の不具合を発見された場合は↓ブログコメント欄等にて報告して頂けると嬉しいです。
よろしくお願い致します。


ちなみにこちらは本検証を簡単に投コメでまとめた動画です。
→watch/sm20882339





広告
×
chromeにしてみたら今までのCAが崩れてショックでした・・。
とても参考になりました ありがとうございます!
82ヶ月前
×
こういうの調べるの本当にすごいと思う。
でも、結局万人に受けるものは難しいし、それらのことばかり考えれば偏ってしまう。
chrome勢には悪いけど、これまで通りやっていこうかな。
79ヶ月前
×
>Antさん
お返事大変遅れましたが、コメントありがとうございました!

>Αν περιμένετεさん
コメントありがとうございます!
そうですね。いろんな環境に対応させようとするとできることがどんどん限られていってしまいますよねぇ~
CAは楽しむことが一番の目的だと思うので、どの環境まで対応させるかは個人の裁量で全く問題ないと私も考えています。
かく言う私も演出を取るか環境を取るかでいつも葛藤しておりますw
79ヶ月前
×
お返事頂きありがとうございます。
ところで、chrom視点においてフォント変化を起こさず、U+2001が漢字幅よりも狭くなるということでしたが、
先日、Chrom導入して確認してみました。

ちなみにOSはXPです。GINZA Playerによる視聴です。
その結果、確かにフォント変化は起きませんでした。しかし、U+2001は本来の漢字幅で表示されました。
また、XPではU+2001は全角文字を隣接させない限り、□に化けるという認識でしたが単体でも化けませんでした。
普段はFire Foxを使用しておりますが、単体では□に化けてました。

一体どういうことでしょうか?GINZA Playerの影響ですかね。
知識不足な点もあるかもしれません。
長々と申し訳ありません。

78ヶ月前
×
私もコメントのシステム的ところに関してはにわか知識しかないため、できる限り説明させていただきますが、間違っていたらすみません;
それらはGINZA Playerのせいではなく、お使いのOSと各ブラウザで適用されるフォントの問題ですね。
システム的な問題なのでかなりややこしいですが、ちょっと長くなってしまいますが、できるかぎり簡潔に説明させていただきます。
○XPのChromeでは全角文字を隣接せずともU+2001は化けず、Fire Foxでは化けた
 ・Fire Foxで化ける理由
  →ニコニコ動画のコメントは、Windowsでは基本的に「MS Pゴシック」で描写されます。しかしそれは、ひらがなや漢字などの全角文字等が存在している場合です。半角文字や2001を全角文字に隣接せずに使用した場合、その部分は別のフォントで描写されていると思われます。(確かTimes New Romanだったかな…)
OSがXPの場合、そのフォントに2001は存在しないので、文字化け「□」で表示されます。で、全角文字が隣接するとMS Pゴシックになり、それに2001は存在するので文字化けせず、ちゃんと漢字幅の空白文字として描写せれる仕組みです。
ちなみにOSがXP以上では、2001を単独で使用した場合のフォントに2001が存在しているので、文字化けせずに表示されます。(同じフォントでも、低いバージョンだとない文字でも高いとあったりします。)
 ・Chromeでは全角文字を隣接せずともU+2001は化けない
  →Chromeだけはかなり例外的なブラウザで、「MS Pゴシック」ではなく「Arial」で描写しているそうです。また、Chromeでは2001等を単独で使用しても「Arial」で描写され、且つ「Arial」に2001は存在するので、全角文字を隣接せずともちゃんと描写されます。
○U+2001は本来の漢字幅で表示された
 →上で「ChromeはArialで描写される」と言いました。XPに限らず、vistaや7でも「Arial」で描写されていると思います。しかし、同じ2001でもバージョン間では幅が異なります。XPでは漢字幅ですが、7ではやや小さいということです。あれです、明朝化した際に7以前のバージョンでは2001は漢字幅の空白として使用できたが、7で幅が小さくなってしまった、これと同じです。
以上です。長々とややこしい説明になってしまいすいません;
こちらのブログやサイトではもっと正確に詳細に書いてあるので、よかったら見てみてください(勝手に紹介^^;)
http://ch.nicovideo.jp/meg_nakagami/blomaga/ar224487
http://bardiel-of-may.blogspot.jp/2013/04/chrome-26windows-xp.html
自分も最近になってかなり参考にしているとこです。
78ヶ月前
×
なるほど・・・あまりに複雑で愕然としました( ゚Д゚)
ですが、おかげで疑問が解消されました。ありがとうございました!
それと、ご紹介頂いたブロマガとサイト参考にさせて頂きます。
78ヶ月前
×
そんな御苦労をされていたとは・・・しかもその技術がもう使えない!?ご心痛お察しします。あんまりだ(TдT)
他にもChromeで使われているフォントやXPで2001が化ける理由など、すごく勉強になりました。ありがとうございました!
63ヶ月前
×
模範囚さん、確かにこれが使えなくったときは結構ショックでしたねw でもflashplayerに依存するコメント機能を使っている限り、しょうがないことなんですね~。 この件で改めてコメント環境の不安定さが身に染みましたw
あと、No.5の私の説明、所々間違ってると思います;; bardielさんのブログでならば、正確な知識を得られると思いますので、是非とも覗いてみてください!
62ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。