doubledepth

BMS Editors

とても眠いので後日詳細を書きます。

HTML5 ruby element (2)

Windows 98 is pronounced as:
“wɪ́ndoʊz nάɪnṭi éɪt”
bm98k330r42\bm98wav\logo.wav

B(biː)M(em)9(kj)8(hat͡ɕ)

現状で互換性が高い書き方を選ぶと、Mono-Rubyは糞text一直線で辛い。「ちょうでんほう」を読み上げると「ちょうちょうでんでんじじほうほう」、Google翻訳結果は“Den and magnetic same gun law ultra power”。FirefoxだけでなくDe facto standardたるBlink/WebKitにも、“Jukugo Ruby”が早く実装されますように。

HTML5 ruby element

例を書いてみる。“IE5.5”に対するspellingとして“Internet Explorer Five point Five”を加える。さらにその発音を日本語で示すために「インターネットエクスプローラーファイブポイントファイブ」を加える。正式名称ではなく読み方を示したいので、abbr要素ではなくruby要素を用いる。いくつかの異なる書き方がある。

1. Nested Mono-Ruby

<p title="Not well-formed example"
  ><ruby>I<rt><ruby>Internet<rt>インターネット</rt></ruby></rt></ruby
  ><ruby>E<rt><ruby>Explorer<rt>エクスプローラー</rt></ruby></rt></ruby
  ><ruby>5<rt><ruby>Five<rt>ファイブ</rt></ruby></rt></ruby
  ><ruby>.<rt><ruby>point<rt>ポイント</rt></ruby></rt></ruby
  ><ruby>5<rt><ruby>Five<rt>ファイブ</rt></ruby></rt></ruby
></p>

私の記憶が確かなら、後述の書き方だとMono-Rubyとして好ましくない表示になる環境があったが、度忘れ。前述の書き方はそれを避けるためのもの(だったはず)。普通は次のように書くだけでよいはず。

<p title="Not well-formed example"><ruby
  >I<rt><ruby>Internet<rt>インターネット</rt></ruby></rt
  >E<rt><ruby>Explorer<rt>エクスプローラー</rt></ruby></rt
  >5<rt><ruby>Five<rt>ファイブ</rt></ruby></rt
  >.<rt><ruby>point<rt>ポイント</rt></ruby></rt
  >5<rt><ruby>Five<rt>ファイブ</rt></ruby></rt
></ruby></p>
実際の表示(rp要素を追加し、かつ段落のfont-sizeを倍にしている):

I (Internet (インターネット) ) E (Explorer (エクスプローラー) ) 5 (Five (ファイブ) ) . (point (ポイント) ) 5 (Five (ファイブ) )

I (Internet (インターネット) ) E (Explorer (エクスプローラー) ) 5 (Five (ファイブ) ) . (point (ポイント) ) 5 (Five (ファイブ) )

Windows 8.1 + Iron 42.0.2250.1
文字「I」の上側に「Internet」が、「Internet」の上側に「インターネット」が描画される。改行可能な「I/E/5/./5」のそれぞれに対して、同様にRuby textが積み上げられる。
Windows 8.1 + Forefox 38.0.1
文字「I」の上側に「Internet」が、「Internet」の上側に「インターネット」が描画される。改行可能な「I/E/5/./5」のそれぞれに対して、同様にRuby textが積み上げられる。
Windows 8.1 + Internet Explorer 11.0.19
文字「I」の上側に「Internet」が、「Internet」の右側に「インターネット」が描画される。改行可能な「I/E/5/./5」のそれぞれに対して、同様にRuby textが積み上げられる。
Windows 8.1 + Lynx 2.8.6rel.4TH
I (Internet (インターネット) ) E (Explorer (エクスプローラー) ) 5 (Five (ファイブ) ) . (point (ポイント) ) 5 (Five (ファイブ) )
Windows XP + Internet Explorer 8.0.6001.18702
「IInternet)」の上に「インターネット」が描画される。Ruby Baseは「IInternet) EExplorer) 5Five) .point) 5Five)」のように見える。閉じ括弧ごとに改行しうる。

利点は、広範にsupportされていることと、禁則処理に強いこと(例は五個の改行機会を持つ)。

欠点一、IEがどうやらNested Rubyを想定していない。これに関してはIEに罪はないはず。

欠点二、広くsupportされている方法でMono-Rubyを表現するためには複数のruby要素を使うしかなさそうだが、それをやるとtextが意味不明になる

2. Nested Group-Ruby

Screen readersやtranslatorに対して“well-formed” plain textを提供するための手軽な方法: Mono-Rubyを忘れる。

<p title="Machine Friendly"
  ><ruby>IE5.5<rp> (</rp><rt
    ><ruby>Internet Explorer Five point Five<rp> (</rp><rt lang="en-Kana" xml:lang="en-Kana"
      >インターネットエクスプローラーファイブポイントファイブ</rt><rp>)</rp
    ></ruby></rt><rp>)</rp
  ></ruby
></p>
実際の表示

IE5.5 (Internet Explorer Five point Five (インターネットエクスプローラーファイブポイントファイブ))

Windows 8.1 + Iron 42.0.2250.1
略語の上側にspellingが、spellingの上側にKatakanaが描画される。画面幅が狭い場合、ruby要素全体が三行一列のtable要素のように伸縮し、各段内で各Ruby Textが改行される。
Windows 8.1 + Midori 0.5.10
Iron (Blink)とほぼ同じ。東Asia文字によるRuby Textを、Blinkは均等割り付けするが、Midori (WebKit)は左寄せする。
Windows 8.1 + Forefox 38.0.1
略語の上側にspellingが、spellingの上側にKatakanaが描画される。全三行一列のtable要素のよう。Ruby Textは折り返されない。
Windows 8.1 + Internet Explorer 11.0.19
略語の上側にspellingが、spellingの右側にKatakanaが描画される。全二行一列のtable要素のよう。Ruby Textは折り返されない。
Windows 8.1 + Lynx 2.8.6rel.4TH
IE5.5 (Internet Explorer Five point Five (インターネットエクスプローラーファイブポイントファイブ))

この方法は書きやすく機械に優しい反面、親textと子textのword chunk的な対応関係を視覚的に示すことができない。さらに、狭い画面上で都合よく改行させたい場合は小細工も必要になる。Browsers' default CSSにおいて、IE/Firefoxはtextを折り返さないことを優先するが、Blink/WebKitはtextを画面内に収めることを優先する。

3. Non-Nested Complexed-Ruby

現時点でこれを期待通り描画してくれるbrowserはFirefox 38に限られる。

<p title="Ruby text container"
  ><ruby>
    <rb>I</rb><rb>E</rb><rb>5</rb><rb>.</rb><rb>5</rb>
    <rp>(</rp
    ><rtc
      ><rt>Internet</rt>
      <rt>Explorer</rt>
      <rt>Five</rt>
      <rt>point</rt>
      <rt>Five</rt
    ></rtc
    ><rp>,</rp>
    <rtc lang="en-Kana" xml:lang="en-Kana" style="ruby-position: under;"
      ><rt>インターネット</rt
      ><rt>エクスプローラー</rt
      ><rt>ファイブ</rt
      ><rt>ポイント</rt
      ><rt>ファイブ</rt
    ></rtc
    ><rp>)</rp>
  </ruby
></p>
実際の表示

IE5.5 (Internet Explorer Five point Five, インターネットエクスプローラーファイブポイントファイブ)

Windows 8.1 + Iron 42.0.2250.1
「折り返し可能な一行のRuby Base」のように描画される。Ruby BaseとRuby Textの文字は同じ大きさで描画される。
Windows 8.1 + Firefox 38.0.1
略語の上側にspellingが、略語の下側にKatakanaが描画される。全三行五列のtable要素のよう。Ruby Textは折り返されない。
Windows 8.1 + Firefox 38.0.1 (without style attribute)
略語の上側にspellingが、spellingの上側にKatakanaが描画される。全三行五列のtable要素のよう。Ruby Textは折り返されない。
Windows 8.1 + Internet Explorer 11.0.19
Ruby Baseの右側(後方)に、Ruby Textが描画される。Rubyは折り返されない。
Windows 8.1 + Lynx 2.8.6rel.4TH
IE5.5 (Internet Explorer Five point Five, インターネットエクスプローラーファイブポイントファイブ)

Browser既定のCSSでは、IE/Firefoxは折り返し無し。CSS Rubyは縦書きにも対応できるはずだが(ruby-position: after;)、現時点では装飾が効いてない模様。追記: 最新の仕様では値afterが削除されていた。

いくつかの些細な指摘

BMS/PMS難易度表sitesにときどき現れる全角空白:
<table align="center" cellspacing="1" cellpadding=2 border="0" bgcolor="#000000" id="table_int">
普通のbrowsersは、前述の誤りを次のように修正する:
<table align="center" cellspacing="1" cellpadding="2 border=&quot;0&quot;" bgcolor="#000000" id="table_int">

妥当でない属性値"2 border=&quot;0&quot;"は値"2"として解釈される。指定されていたはずのborder属性は無視される。しかし、大抵は枠線に対してCSSが指定されるので、この誤りを積極的に修正するべき理由は無い。私が閲覧した時点では、PMS通常難易度表と西ヶ蜂難易度表だけがこの誤りを正しく修正している。

Another B.J.Cup Stage #01: Alternative”のQ&Aがに更新されていた。手打ち由来の誤りは以下の通り:

  • about="_blank" (正しくはtarget="_blank"
  • <a href="mailto:xxx"<>メール</a> (1文字余計)
  • 段落の中に箇条書きが含まれている
  • <BR /> (大文字の要素はXHTMLの語彙にないので、XHTMLとして配信された場合は改行されない)
  • <BR>(XHTMLとして配信された場合はXML parserが終了タグを要求する)

文書がapplication/xhtml+xmlとして配信されないなら、これらの誤りを積極的に修正するべき理由も無い。

Compatibility for 20 years

BM98 kikuchan version 3.30 Revision #4.2のminimum requirementsは、Windows 95 () + DirectX 5.0.

BM98de 3.31, MixWaver, bemaniaDX, Delight, nazo, otama, BMS2WAV, BMSC, BMSV, KbMedia 2.63aも、Windows 95の上で動作する(と各関連文書は主張している)。BM98de 3.32に関する詳細は不明。

2010年代にRichard Roeによって書かれたいくつかのBMSは、BM98kの上で正しく演奏されることができるWindows usersにとってBM98kを試すことは難しくないが、Windows 95にとってBMSへの道は険しい。

【PC-98】Windows95で仕事ができるか実験してみた【フロッピー】によれば:

  • Windows 95 (OSR2.5?) + Internet Explorer 4.0で、Yahoo!/Googleの検索画面が文字化けする。『侍魂』は表示される
  • Windows 95 (OSR2.5?) + Internet Explorer 5.5 (SP2?)で、Yahoo!/Googleは文字化けしない。

Windows 95の上で、二十世紀のInternet Explorer 1.0–5.5が仕事しうる。Encodingが互換性を阻む。二十世紀のWindowsは多言語化のために拡張を必要とする。互換性の信奉者たちは“Plain Vanilla ASCII”を貫く。

古いIEはCSS/JSの友達ではない。古いIEはhtml5shivやjQueryを参照すると死ぬ。test用の環境はもう作れない。

// try { // IE4 is killed by try-catch (Really?)
if (!xxx) {return; } // loophole
if (xxx === undefined) {return; } // IE3–5 do not know “undefined” type
if (typeof xxx === 'undefined') {return; } // IE3/NC4.05 is killed by === / !== (Really?)
if ((typeof xxx).indexOf('undefined') > -1) {return; } // ambiguous

書いて試せないなら、CSS/JSを古い環境から隠すべきだ。server-side技術を使わない場合は、IE1–5.5を諦めるか、CSS/JSを諦めるしかない。“Rapid Release”は互換性を緩やかに断ち切り、いつの日かIE1–11を諦めさせる。

BGA-like charts

楽曲と図表との同期をvideoclip的に誇張する例がいくつか知られている。読譜(solfège)の公正性よりも映像的な快楽を優先する傾向は、様々なrhythm gameに見られる(図表が立体である場合もある)。読譜を重視しない遊戯性は、Asshole Mario的STAGEを許容する。叩いて光れば正しいrhythm。叩けば分かる。

楽曲のtempoが変化しない局面で#BPMを変更するscrollingは邪道だが、在来形式は図表を踊らせる手段を他に持っていない。#BPMは楽曲のtempoと区別されないので、scrollingの辻褄を合わせたい著者は小節長やnotes間隔も適宜変更しなければならない。“Virtual”の細切れ#STOPや、nanasigrooveの#CHANGEOPTIONや、Bemuseの#SCROLL/#SPEEDなど、tempoとscrollingを分離しうる拡張も存在するが、互換性は保証されない

scrolling用の#BPM、装飾用の小節線、実際の音価と異なるnotes間隔、外観変更用のsuper-short Charge Notesなどは、明らかに本来の役割から逸脱している。制約が多い在来形式において、このような逸脱は新たな表現技法としてむしろ積極的に歓迎されてきた。その一部を実装する試みもある(既に動画も存在する)。私はこの調子で#PRESENTATIONAL-MEASURE-LINEなどの新命令が提案されるかもしれないことを期待あるいは危惧する。

日記

BMS関連

拙作BMS
bubble / hitkey
二次配布BMS
ノイズの海と鯨 / moka
PARTY TIME IN MY DREAM / HAIJI
BMSE非公式ヘルプ
Lite
Lite-online
Full
Full-online
buglist
iBMSC
Web (Japanese version)
issues
BMS差分
a­nal­gam
boléro
Ketch­up
quovadis
SELF
yellows
Do not use non-ascii filenames
雑多なメモ
bmsplayer data
bms benchmark
Secrets - Feeling Pomu 2nd
grid2sec
bmx2xxx
BMx Outliner
BMS command memo
BMS command memo (Japanese version)
BMS EVENT LITE
#RANDOM BMS list
BMS #OPTION command
BMS Bitmap test
Extended BPM
STOP Sequence
BMS Edge Cases
BMS extensions proposed by Sonorous (unofficial Japanese version)
BMS 2.0 (unofficial Japanese version)

その他

HTML関連メモ
Dakuten on HTML
nest1000
EVS