doubledepth

noteでのルビ(ふりがな)対応の実験

興味深い記事を教えていただいた(ありがとうございました)。見出しの記事で予定されている記法は、現時点でのWHATWG HTML仕様(rb/rtc要素が存在しない仕様)に準拠するようだ。

帰ってくるHTML Rubyrb/rtc)要素」という記事を以前見かけたが、Pull Requestへの付けの返信を見る限り感じでは、結局のところBlinkとWebkitにrb/rtc要素がすぐさま実装される予定は無さそうに見える。英語を読めない私には顛末がよくわからなかったが、lobbyingよりもcodeを書いてねってことだろうか。

系webpagesはおおむねrb要素を出力するが、W3C HTML5.x仕様はに廃止済みrb要素を出力しない件の記事は仕様に敏感な感じ。記法が唯一の正解とは私は思わないが、とはいえrb/rtc前提の簡易記法というのも想像がつかないし、記法に倣う見出し記事の方針は現実的ではあるのだろう。rb/rtc要素を含めたrubyはinline-tableにも似る。こういった複雑な構造なら簡易記法はむしろ遠回りかもしれない。文章投稿用formでHTML直打ちは許容しないほうが安全ではあるのだろうが。

3==🚗

FINALFANT
      ASY

うるせ〜〜〜!!!!!

知らね〜〜〜!!!!!

00()が等価だとして、(00)は?

#TITLE LN or not?
#BPM 130
#WAV00 bomb.wav
#WAV11 kick.wav
#LNOBJ ()
#00111:1100(00)00

        FINALFANT
              ASY  

Enclosed BMS test #2

#TITLE Enclosed BMS test #2
#BPM 130
#BPM(0) 130.1
#BPM01 512
#BPM1 256
#STOP(1) 2
#STOP1 192
#BMP() default_poor_320-64.png
#BMP(0) 320-64-blue.png
#BGA(0) (0)   32    0  288  256    0    0
#BGA00    0    0    0  320  320  -32    0
#WAV00 landmine.wav
#WAV(0) v_foon.wav
#WAV(000) C:(0)
#WAV01 do_overwrite.wav
#WAV(01) kick.wav
#WAV (01) do_not_parse_1.wav
#WAV(01)do_not_parse_2.wav

#00103:(100)(0000)
#00104:00(0)
#00108:00()01(0)
#00109:01(1)
#00111:00()(0)
#00113:(000)()(00)()()(000)
#00119:01(01)01(01)
#001D1:(56789ABCDEFGHIJK)(1)(0)

(1)(01)(001)が区別されるなら、(0)(00)(000)も区別されるのだろうが、非dataのheader tagにおいても00()を同一視して構わないのだろうか? 前述の例でいうと#BGA00#BMP()をcropできるべきなのか、それともそれをしてはならないのか、よくわからない。とりあえず同一視したが。

#00103(標準BPM変更)や#001D1(地雷)などのvalues listは“Enclosed Alphanumeric Keys”仕様の範囲に含まれるのだろうか? #00103:(56789ABCDEFGHIJK)BPM 1143448453347401269920800に変換するような振る舞いは、以下の仕様に抵触するかも。でもvalues listはkeys仕様と関係ないかも。

The reader must treat enclosed alphanumeric keys as a string with the fixed length, not a base-36 number.

そういったよくわからない箇所に目を瞑れば、う〜ん、一応、私の書きかけscriptはtestsをpassできたんじゃないかな?

Enclosed BMS sample

#TITLE enclosed test
#BPM 130

// ["11", "222", "33", "00", "00"]
#00111:11(222)33()00

// []
#00221:123(456789)0

// ["12", "34", "56789ABCDEFGHIJK", "00", "56789ABCDEFGHIJL", "00"]
#00322:1234(56789ABCDEFGHIJK)00(56789ABCDEFGHIJL)00

// []
#00423:1234(5678

// [] ?
#00429:1234(5678))

// ["00", "1", "01", "001", "02", "03"]
#00524:00(1)(01)(001)0203

// ["01", "01", "01", "01"] ?
#00625:01(01)((01))(((01)))

// ["12", "00", "9A"] ? // hope to: ["12", [layered "345" + "678"], "9A"]
#00728:12((345)+(678))9A

Enclosed Alphanumeric Keysを部分的に実装した

BMS形式のまま1296個以上の定義を使えるようになるSonorous拡張をうろおぼえの記憶だけで実装してから仕様を眺めたらmust notが予想外にいっぱいあった。従来のBMS仕様を満たしきれていないhand-coded invalid BMSがそこそこ存在するので「可能な限り寛容さを維持しつつ括弧が含まれる行だけはSonorous仕様に合わせて厳格にparseする」という方針で私はscriptを書き直すつもり。

μBMSC 3.5.0.2は「BMSON形式にexport可能なkeyboard 24 keys BMS(およびそのDoublePlay図表)」を読み書きできる。μBMSCのmenuからTheme2OCT.Theme.xmlを選択することで24 keys図表を編集できる。この中間形式も私の書きかけscriptでsupportしたい。しかしμBMSCによってexportされた24 keys BMSON図表はWHEEL UPがG1に移動しWHEEL DOWNがF#1に移動する。これはbugに見える。

括弧拡張などの新しい要素を実装するのは自分なりに楽しいと思える。しかし過去の自分が書いたcodeに向き合うのは個人的にはまったく楽しくない。「4000行の巨大なwhileから20層以上に及ぶ入れ子」など読んでいると比喩でなく吐き気がこみ上げてくる。

202112

BGAEncAdvance Ver0.035がreleaseされた。32-bit Windows環境ではもはや動作しない。必要な人は旧版も確保しておくのが無難かもしれない。sample/sample.bmsの変換に失敗するようになったが、自分が動画をどういった設定でcroppingしていたか思い出せない。

Qwilight v1.12.8でいくつかのBMS独自拡張が追加されるようだ。従来の構文解析と競合しそうな#SWIPE0などの命名は個人的には歓迎しづらいが、swipe系の図表がどう表現されるのか楽しみ。

日記

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
Brilliant Techno Square
雑多なメモ
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)
BMS Editors
Do not use non-ascii filenames
BM98 Kikuchan Version 3.30 Revision #4.2
BMSON Checker
_wsh_bms2bmson.js

その他

HTML関連メモ
Dakuten on HTML
nest1000
EVS
Nervous Cascading
Source Han Sans test
User-Agent String
CSS Logical Properties