※環境ごとの互換性の優劣とSwitchのフォントコマンドの適用について修正しました 2020.04.27
CAの視聴環境による互換の情報をまとめます。
ちょくちょく更新していく予定ですが、抜けなども多いと思うのでコメントで指摘していただけるとありがたいです。
ここで紹介している内容はマニアックなものが多いので、全てについて把握する必要はありません。
基本的な互換の方針については以下の記事が分かりやすくまとまっています。
また、本記事の内容は多くの方々の素晴らしいはたらきによって成り立っています。
日々の地道な検証作業について改めて感謝します。
互換性の検証は、日常のふとした気づきがきっかけの場合が多々あるので、今後も積極的に情報交換を行っていくことが望ましいです。
現在の大まかな状況
今の環境は一時期に比べると格段によくなっています。
コメントの互換性が全く考慮されずに乱発されていたPC以外のデバイス向けアプリが落ち着き、逆に縮小の流れになりました。
テレビアプリの終了 2019.09.25 (Bravia以外はすでに終了済み)
https://blog.nicovideo.jp/niconews/110746.html
PS Vitaアプリの終了 2019.12.27
http://blog.nicovideo.jp/niconews/114427.html
Amazon fireアプリの終了 2019.09.25
https://blog.nicovideo.jp/niconews/111809.html
Apple TVアプリの終了 2020.03.18
https://blog.nicovideo.jp/niconews/123749.html
加えて、今年の1月にwindows7のサービスが終了したことも環境互換においては大きな追い風となっています。
現在の主要環境はPC(windows,mac)、スマホとタブレット(android OS,ios)、スマホ向け公式アプリ、任天堂ゲームデバイスの大きく4つです。
その他の視聴環境
ガラケー ニコモバ環境(情報が少なすぎてわからない)
PS4 公式アプリなし(基本的にはHTML5プレーヤー?)
Google Chrome OS(Chromium OS)、Linux 情報が少なすぎてよく分からない
HTML5プレーヤーへの切り替わりに際して、それまではFlashの仕様に依存していたコメント表示の大部分が、ニコニコのプレーヤー側できちんと定義がなされるようになりました。
これによって各環境でコメントの仕様がある程度統一され、互換性は飛躍的に向上しました。
しかしフォント等の問題があるため完全な互換には至っていません。
現在の互換性の悪さを比べると大体以下のような感じです。(windows PC基準)
android版公式アプリ>>androidブラウザ>ios版公式アプリ>任天堂ゲームデバイス>iosブラウザ>=mac>windows PCブラウザ
主要環境の中ではandroid版公式アプリが頭一つ抜けて劣ります。
スマホ環境で公式アプリよりもブラウザの方が互換性が高いのはいつものニコニコクオリティ。
以下では互換に関する個別の事項について紹介します。
- 1. Android版公式アプリではデフォルトサイズの横方向の互換性がない
- 2. Android版公式アプリのリード行判定
- 3. 「defont」「gothic」「mincho」の環境安定性
- 4. 使用する空白文字について
- 5. フォントコマンドの適用可否
- 6. ゲームデバイスの対応記号
- 7. Androidのブラウザ表示
- 8. Androidで引用されるフォントが異なる?
- 9. ブラウザによる表示の違い
- 10. 画面サイズによる互換性
- 11. 臨界幅リサイズについて
- 12. ニ重リサイズについて
- 13. コマンドの書式について
- 14. @秒、_liveコマンドについて
- 15. 他個別の文字の互換情報
- 16. 投稿者コメントの仕様
Android版公式アプリではデフォルトサイズの横方向の互換性がない
Android版の公式アプリでは幅リサイズをしていないデフォルトのサイズでも横方向の互換が取れていません。
おそらく主要環境の中で唯一互換が取れていない視聴環境となります。
windows PC
Androidブラウザ
Android版公式アプリ(横表示)
Android版公式アプリ(縦表示)
図 デフォルトサイズの表示(紫:big、黄:medium、赤:big改行リサイズ、緑:small、青:medium改行リサイズ、白:small改行リサイズ)
縦表示、横表示でもズレの様相が大きく変わります。
他の仕様は作り手の努力次第である程度なんとかできますが、この仕様だけは対処することができません。
しかも環境的に仕方ないわけではなくておそらくアプリの実装上の不具合なのでなんとかしてほしいですね。。。
Android版公式アプリのリード行判定
Androidアプリの謎の仕様その2
公式アプリではコメントの幅を決定する行が最も幅が広い行ではなく、最も文字数が多い行になります。
ヒロスのブロマガ
Android版ニコニコ公式アプリのコメント幅の決定基準がおかしい件について【コメントアート】
https://ch.nicovideo.jp/883797/blomaga/ar1442121
基本的な対処方法はリード行の空白文字をU+2003(全角幅)→U+2004×3(1/3幅×3)に置換することです。
タブスペースは2文字としてカウントされるようなのでタブスペースの置換は対策になりません。
足元をすくわれやすく、しかも引っかかると盛大にズレるため、Android端末があるならその都度確認することが好ましいです。
報告は結構前にしていますが、修正される気配は全くないです。。。
「defont」「gothic」「mincho」の環境安定性
最も環境安定性が高いのはgothicです
特にこだわりがなければgothicを使うのが最も安全です。
参考
定義としては、
defont : その環境でもっとも自然なフォント
mincho : セリフのある日本語が等幅なフォント
gothic : セリフのない日本語が等幅なフォント
という定義・・・のつもり。— MegumiNakagami (@meg_nakagami) January 4, 2017
ただ、html5 版の現在の実装では、mincho, gothic は 游明朝、游ゴシック が確実にあるとわかっている環境ではそれにしようとするという考え方で実装されてる。
— MegumiNakagami (@meg_nakagami) December 16, 2016
defontはひらがな・カタカナがwindowsPCとその他の環境で全て幅が変わるのと、厳密には漢字ですら幅が若干異なるので扱いには注意を要します。
使用する空白文字について
最安定の空白文字はU+2003「 」です。mincho、gothicコマンドの条件であればU+3000「 」も使えます。
U+2001はAndroid版の公式アプリで若干幅が広くなることが判明したため、現在は非推奨空白となります。
加えて、tabスペースもU+2001×2で定義されている関係上、Android版公式アプリでズレます。
参考
アプリで「【ニコニコ動画】Androidアプリとコメントアート【TAB編】」をトゥギャりました。 https://t.co/fXYlGG0gFj
— ・M・(まー) (@x_0227) April 20, 2020
その他互換性が高い空白はU+2004(1/3幅)『 』
次点にU+2005(1/4幅)『 』、U+2002(1/2幅)『 』となります。
これらの全角幅の〇分の1空白は後述する、小数点以下のピクセル数の扱いが各環境で異なる関係で完全な互換性を確保することができません。
ただ、極端に多用しなければ環境によって大きくズレることはないでしょう。
フォントコマンドの適用可否
フォントコマンドは一部の環境については適用されません。
Switchは現在はフォントコマンドがきちんと適用されるようです。
ゲームデバイスはそもそも実装されているフォントが一種類しかないようなので、全て同じフォントで表示されます。
Switchでminchoコマンドが表示されない例
Androidのブラウザ表示は日本語は2種類のフォントを同時に表示することができないというのが仕様らしく、基本的に一つのフォントしか表示されません。
ただ、英字に関してはフォントコマンドが適用されます。
参考
androidも同じ指定だけどそもそもandroidではブラウザは日本語フォント1種類しか使えないらしく日本語等のフォントは変化しない (英文字は変化する)
— yammaboo (@yammaboo) March 2, 2019
ヒロスのブロマガ
Androidにおけるスマホブラウザのコメント描写について【コメントアート】
https://ch.nicovideo.jp/883797/blomaga/ar1639299
ゲームデバイスの対応記号
ゲームデバイスは本体に収録されているユニコードがそもそも少ないので、特殊な記号については表示されません。
ただCAで頻繁に用いられるブロック記号などは、ニコニコの開発側でドットを打ち込んで特別に用意されているため表示されます。
3DSで表示される記号の例
ニコニコ側で対策が取られる前の対応記号の例
これだけ綺麗に表示させるために並々ならぬ努力があったと思います。感謝
ゲームデバイスでは表示さない記号は全角空白に置換されます。
他の環境のように豆腐化したり幅が変わるわけではないので、対応しない文字が含まれていても表示が極端に崩れることはありません。
なお、対応記号については今後追加されることはないと思われます。悲しいなぁ・・・
Androidのブラウザ表示
あまりよく分かっていません。
というのもAndroid OSのバージョンと、端末に入ってるフォントの組み合わせが多様なため全容を把握できていません。
古いAndroid(Android5以前)はHTML(not HTML5)によって表示されるため崩壊するらしいです。
yammabooの記録@web
[コメントアート] 古いandroidのweb版表示が酷かった話
https://yammaboo.sakura.ne.jp/weblog/180917.html
ヒロスのブロマガ
Androidにおけるスマホブラウザのコメント描写について【コメントアート】
https://ch.nicovideo.jp/883797/blomaga/ar1639299
Androidで引用されるフォントが異なる?
上項と関連して、例えば一部のAndoridのブラウザ環境だとU+2588が縮みます。
(minchoのフォントとしてMSP明朝が引用されている?ほかの環境では游明朝?)
参考
android7.0 chrome
2588×60
15コメ
一枚目gothic
二枚目mincho
昔のchromeみたいにバカみたい縮まないけどやっぱり幅は変わる pic.twitter.com/9klMsC2gKh— ヒロス (@hirosususu) September 16, 2018
デフォルトで参照されるフォントが端末によって異なる可能性があります。
特にこだわりがなければgothicがやはり安定するみたいです。
ブラウザによる表示の違い
windowsPCでもブラウザによって若干表示が異なります。
これは小さいフォントサイズのコメントにいて小数点以下のピクセルの扱いが異なるためで、詳しくは以下の記事にまとまっています。
yammabooの記録@web
[コメントアート] 小数点以下の文字幅のブラウザによる扱いの違いの検証
https://yammaboo.sakura.ne.jp/weblog/181008.html
例えば1/4空白やdefontのひらカナというように微妙な幅の文字はブラウザ間で幅が変わります。
変化する幅が小さいので多くの場面で問題となることはありませんが、臨界幅リサイズを利用する場合には注意が必要です。
これは新プレの臨界幅リサイズは横幅の変化に非常に敏感であるため、少しの幅の変化でリサイズ率が変わる可能性があるためです。
画面サイズによる互換性
新プレーヤーは基本的にプレーヤーサイズによる互換性は担保されていますが、臨界幅リサイズをつかう場合はズレる可能性があります。
図 中画面、大画面でズレる例(上:中画面、下:大画面、どちらも拡大率100%)
理由の1つは中画面と大画面とで、fullの臨界幅が1px違うことによります。
もう一つの理由は上で紹介したように、フォントサイズによって小数点以下のピクセルの処理が変わるためです。
臨界幅リサイズを使う場合は念のため両方の画面サイズで確認した方がいいでしょう。
臨界幅リサイズについて
互換性は高くありません。
最も危険なのはフォントサイズが小さくかつ多量改行する場合です。
逆に単行のコメントや、フォントサイズが大きい場合はそこまでズレが大きくないため、ある程度使えます。
ender固定コメントのAndroidブラウザの互換性
ender固定コメントのAndroid版公式アプリの互換性
(空白にtabスペースを使ってるため参考記録)
改行数が多くなれば多くなるほど高さ方向の誤差が蓄積されるため、画面下半分に配置する場合はshita、上半分に配置する場合はueというようにコマンドを使い分けるとズレが減ります。
高さ方向だけではなく、横方向にもズレる(特にプレーヤーの左右端付近)ので注意が必要です。
なおfullと非fullでは非fullの方が安定性が高いため、非fullで事足りるなら非fullにするのがベターです。
ニ重リサイズについて
特に注意が必要なのは意図せずに二重リサイズが発生する場合です。
非enderのコメントで、プレーヤーの左右端に配置する場合は常に気を付ける必要があります。
環境によって文字幅が異なることで臨界幅をオーバーする可能性もありますが、環境によってそもそも臨界幅リサイズが発生する幅が異なるのでギリギリいっぱいを攻めるのは自重したほうがいいでしょう。
コメントアートのためのブログ
りあむが互換性ツヨツヨな件【中曽根OFF合作】
https://chu-commentart.ssl-lolipop.jp/2020/04/19/post-5406/
fullに比べると非fullの方が臨海幅リサイズが安定している関係上、ender fullに比べると実は互換性が高い可能性があります。
iPhoneアプリとゲームデバイスはhtml5プレーヤー以前の早い段階から二重リサイズを仕様としてきちんと組み込んできたという歴史もあり、もしかしすると二重リサイズの方が環境安定性が高いかもしれません。(要検証)
参考
DRをちゃんと実装した環境間では
DR を利用したほうが互換性が高くなるのは依然としてそのまま。
昔はそれが必須だったけど、今はそういう高度なテクニックになったって考えていい。
iPhone なんかと互換を取りたかったら DR は依然として有効。— MegumiNakagami (@meg_nakagami) August 8, 2017
コマンドの書式について
PCのコマンドは「Shita」や「Yellow」など大文字が入っていてもきちんと適用されますが、一部環境ではコマンドの大文字に対応していません。
そのため、基本的にコマンドは全て小文字にすることが推奨されます。
また、コマンドの区切りの認識が環境によって若干異なるので、可能であればコマンドの後ろには必ず半角スペースを入れるのがベターです。
例えば、「ue big□」(□はU+2001)の場合、PCだと「ue big」で認識されますが、一部環境では「ue」で認識されます。
@秒、_liveコマンドについて
スマホアプリは現在対応していません。
コマンドの有無でそれほど見え方に影響がない程度であれば使用することもできます。
他個別の文字の互換情報
4分の一ブロックの話
2596系は1/1かと思いきや僅かに狭いので(画像はsmall38&×10)扱いに困る(まあiOSがアレなので使わないけど) pic.twitter.com/01vmvGlQtj
— Mytea (@suzukasu123) February 4, 2020
隣接文字によって幅が変わる話
「ひらがなカタカナの一部を文字列で使用すると狭くなる」簡易まとめ #コメントアート pic.twitter.com/EpFqoyTFWg
— Mytea (@suzukasu123) September 11, 2018
※追記2※
・この現象は【同カテゴリーの文字が直後に来た場合】のみ発生する。
・該当文字が『ひらがな』であれば『ひらがな』が直後に来た場合のみ発生。
・『ひらがな』と『カタカナ』は【別カテゴリー】のため、該当文字同士でもこの現象は発生しない(一番下) pic.twitter.com/AiyNTH4tO9— Mytea (@suzukasu123) September 12, 2018
空白文字の幅がAndroidの縦表示と横表示とで幅が変わる話
U+2000,U+2004,U+2005等は泥の縦持ち横持ちでそもそもの文字幅が変わる
edgeとchromeは一部の文字幅が異なる #コメントアート— AN.@けもフレ用垢 (@L_KemonoFriends) September 10, 2018
Tab(U+0009)+U+200C(ゼロ幅)の組み合わせがiOS版ニコニコアプリでズレる話
絵文字の表示の話
投稿者コメントの仕様
公式アプリの投稿者コメント機能周りは開発の優先度がおそらくめちゃくちゃ低いので、互換性は高くありません。
現在、ニコスクリプトは全て対応していません。
公式アプリではPC表示にあるような投稿者コメントスレッドと視聴者コメントスレッドがそもそも存在していないため、投稿者コメントの概念自体がないのかもしれません。
(公式アプリでは投稿者コメントも視聴者コメントもコメント欄に全て一緒に表示されます。)
そのため、環境互換を考えるのであれば投稿者コメント独特の仕様(例えば、3行ごとに空白を入れなくてもいいなど)を利用するのは避けた方がいいでしょう。