@danything/arib 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,501 @@
1
+ /**
2
+ * 字幕の文字の表。**denpa が手で持つ** (字幕をデコードするのは [b24caption.ts](b24caption.ts)、番組表の外字は
3
+ * [aribtext-gaiji.ts](aribtext-gaiji.ts) がここの追加記号を引いて作る)。
4
+ *
5
+ * 元は libaribcaption v1.1.2 の表 (b24_conv_tables.hpp / b24_gaiji_table.hpp / b24_colors.cpp /
6
+ * b24_drcs_conv.cpp) に denpa の外字の直しを当てたもの。ここが元で、上流は追わない。
7
+ *
8
+ * libaribcaption: Copyright (C) 2021 magicxqq <xqq@xqq.im> (MIT。著作権表示は [LICENSE](../LICENSE))
9
+ *
10
+ * **表の名前と `export const` の形は変えない。** danything/denpa-font の道具がこのファイルを
11
+ * 名前で読んでフォントに入れる字を決める (`ADDITIONAL_ROWS`・`PLANE1_HIGH_ROWS` も。`aribtext-gaiji.ts`・`fold.ts` も同じ)。
12
+ *
13
+ * - 漢字は EUC-JP で読んだものと違うところだけ持つ (`KANJI_DIFF`。番組表は EUC-JP のまま読む —
14
+ * 1区33点の 〜 / ~ などは字幕と番組表で違えてある。aribtext.ts の説明)。1〜84区は JIS X 0213:2004 の1面と
15
+ * 同じ字 (全角の形を選んだ点と、1区17点の  ̄ など libaribcaption のとおりの数点を除く)
16
+ * - JIS X 0213 の表 (2つのコードポイントの字・1面の 85〜94区・2面) は [scripts/jisx0213.ts](../scripts/jisx0213.ts) が
17
+ * x0213.org の対応表から書く。手で直さない
18
+ * - U+FFFD は規格で空いているところ
19
+ *
20
+ * ## 外字 (DRCS) の置き換えを足す
21
+ *
22
+ * 放送は字幕の外字を小さな画像で送ってくる。画像の MD5 (`b24caption.ts` が中身の画素から取る) が
23
+ * `DRCS_REPLACE` にあれば、その字に置き換えて描く (無ければ画像のまま)。足すときは:
24
+ *
25
+ * 1. 字幕の JSON (`/api/recordings/<id>/captions.json` の `drcs`) の `md5` を読み取る。`data` の画像は送るために
26
+ * なめらかにしたもの (drcs-smooth.ts) なので、`data` から MD5 を取っても表と合わない
27
+ * 2. `[MD5, 字のコードポイント]` を足し、行末に「何の字か・どこで見たか (局・日付)」を書く
28
+ * 3. フォントにその字があること (無い字に置き換えると豆腐になる。画像のままのほうがよい)
29
+ */
30
+ /* 区点と突き合わせる表なので整形しない (bunfig.toml の ignorePatterns) */
31
+ /** ひらがな集合 (0x21〜0x7E)。0x74〜0x76 は規格で空き (字幕は全角の空白で埋める) */
32
+ export const HIRAGANA = "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん   ゝゞー。「」、・";
33
+ /** カタカナ集合 (0x21〜0x7E) */
34
+ export const KATAKANA = "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾー。「」、・";
35
+ /** 中くらい (MSZ) のときに半角へ寄せる、かなの表の 0x79 以降 */
36
+ export const KANA_SYMBOLS_HALF = "ー。「」、・";
37
+ /** JIS X 0201 カタカナ集合。字幕は全角で描く */
38
+ export const JISX0201 = "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜�������������������������������";
39
+ /** 同じものの半角 (中くらいのとき。番組表はいつもこちら) */
40
+ export const JISX0201_HALF = "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�������������������������������";
41
+ /** 英数集合。字幕は全角で描く */
42
+ export const ALNUM_FULL = "!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|} ̄";
43
+ /** 同じものの半角 (中くらいのとき)。0x5C は ¥、0x7E は ‾ (番組表は ASCII のまま。バックスラッシュとチルダ) */
44
+ export const ALNUM_HALF = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾";
45
+ /** 漢字の表の1・2区を、中くらいのときに半角へ寄せたもの */
46
+ export const KANJI_SYMBOLS_HALF = " 、。,.・:;?!゙゚´`¨^¯_ヽヾゝゞ〃仝々〆〇ー―‐/\\~‖|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+−±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓'\"-~〳〴〵〻〼ヿゟ∈∋⊆⊇⊂⊃∪∩⊄⊅⊊⊋∉∅⌅⌆∧∨¬⇒⇔∀∃⊕⊖⊗∥∦⦅⦆〘〙〖〗∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬≢≃≅≈≶≷↔ʼn♯♭♪†‡¶♮♫♬♩◯";
47
+ /** 漢字の表 (1〜84区) のうち、EUC-JP で読んだものと違うところ。[区×94+点 (0 から), そこから続く字] の並び。85区から先は `ADDITIONAL` */
48
+ export const KANJI_DIFF = [
49
+ [32, "〜‖"], // 1区33点から
50
+ [60, "−"], // 1区61点から
51
+ [108, "'"-~〳〴〵〻〼ヿゟ"], // 2区15点から
52
+ [127, "⊄⊅⊊⊋∉∅⌅⌆"], // 2区34点から
53
+ [142, "⊕⊖⊗∥∦⦅⦆〘〙〖〗"], // 2区49点から
54
+ [168, "≢≃≅≈≶≷↔"], // 2区75点から
55
+ [183, "♮♫♬♩"], // 2区90点から
56
+ [188, "▷▶◁◀↗↘↖↙⇄⇨⇦⇧⇩⤴⤵"], // 3区1点から
57
+ [213, "⦿◉〽﹆﹅◦•"], // 3区26点から
58
+ [246, "∓ℵℏ㏋ℓ℧"], // 3区59点から
59
+ [278, "゠–⧺⧻"], // 3区91点から
60
+ [365, "ゔゕゖ"], // 4区84点から
61
+ [494, "♤♠♢♦♡♥♧♣"], // 6区25点から
62
+ [526, "ς⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾☖☗〠☎☀☁☂☃♨▱ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹ"], // 6区57点から
63
+ [558, "ㇺㇻㇼㇽㇾㇿ"], // 6区89点から
64
+ [597, "⎾⎿⏀⏁⏂⏃⏄⏅⏆⏇⏈⏉⏊⏋⏌"], // 7区34点から
65
+ [645, "ヷヸヹヺ⋚⋛⅓⅔⅕✓⌘␣⏎"], // 7区82点から
66
+ [690, "㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿"], // 8区33点から
67
+ [728, "◐◑◒◓‼⁇⁈⁉ǍǎǐḾḿǸǹǑǒǔǖǘǚǜ"], // 8区71点から
68
+ [752, "€ ¡¤¦©ª«­®¯²³·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿĀĪŪĒŌāīūēōĄ˘ŁĽŚŠŞŤŹŽŻą˛łľśˇšşťź˝žżŔĂĹĆČĘĚĎŃŇŐŘŮŰŢŕăĺćčęěďđńňőřůűţ˙ĈĜĤĴŜŬĉĝĥĵŝŭɱʋɾʃʒɬɮɹʈɖɳɽʂʐɻɭɟɲʝʎɡŋɰʁħʕʔɦʘǂɓɗʄɠƓœŒɨʉɘɵəɜɞɐɯʊɤʌɔɑɒʍɥʢʡɕʑɺɧɚ"], // 9区1点から
69
+ [976, "ǽὰά"], // 11区37点から
70
+ [987, "ὲέ͡ˈˌːˑ̆‿̋́̄̀̏̌̂˥˦˧˨˩"], // 11区48点から
71
+ [1010, "̥̬̹̜̟̠̩̯̈̽˞̴̤̰̼̝̞̘̙̪̺̻̃̚❶❷❸❹❺❻❼❽❾❿⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ㋐㋑㋒㋓㋔㋕㋖㋗㋘㋙㋚㋛㋜㋝㋞㋟㋠㋡㋢㋣㋺㋩㋥㋭㋬"], // 11区71点から
72
+ [1126, "⁑⁂"], // 12区93点から
73
+ [1158, "Ⅺ"], // 13区31点から
74
+ [1182, "Ⅻ"], // 13区55点から
75
+ [1207, "���"], // 13区80点から
76
+ [1211, "����"], // 13区84点から
77
+ [1217, "���❖☞俱𠀋㐂丨丯丰亍仡份仿伃伋你佈佉佖佟佪佬佾侊侔侗侮俉俠倁倂倎倘倧倮偀倻偁傔僌僲僐僦僧儆儃儋儞儵兊免兕兗㒵冝凃凊凞凢凮刁㓛刓刕剉剗剡劓勈勉勌勐勖勛勤勰勻匀匇匜卑卡卣卽厓厝厲吒吧呍咜呫呴呿咈咖咡咩哆哿唎唫唵啐啞喁喆喎喝喭嗎嘆嘈嘎嘻噉噶噦器噯噱噲嚙嚞嚩嚬嚳囉囊圊𡈽圡圯圳圴坰坷坼垜﨏𡌛垸埇埈埏埤埭埵埶埿堉塚塡塤塀塼墉增墨墩𡑮壒壎壔壚壠壩夌虁奝奭妋妒妤姃姒姝娓娣婧婭婷婾媄媞媧嫄𡢽嬙嬥剝"], // 13区90点から
78
+ [4375, "𠮟孁孖孽宓寘寬尒尞尣尫㞍屢層屮𡚴屺岏岟岣岪岺峋峐峒峴𡸴㟢崍崧﨑嵆嵇嵓嵊嵭嶁嶠嶤嶧嶸巋吞"], // 47区52点から
79
+ [7808, "噓巢帔帘幘幞庾廊廋廹开异弇弝弣弴弶弽彀彅彔彘彤彧彽徉徜徧徯徵德忉忞忡忩怍怔怘怳怵恇悔悝悞惋惔惕惝惸愜愫愰愷慨憍憎憼憹懲戢戾扃扖扚扯抅拄拖拼挊挘挹捃捥捼揥揭揵搐搔搢摹摑摠摭擎撾撿㐂𠅘份仿侚俉傜儞冼㔟匇卡卬詹𠮷呍咖咜咩唎啊噲囤圳圴塚墀姤娣婕寬﨑㟢庬弴彅德怗恵愰昤曈曙曺曻桒鿄椑椻橅檑櫛𣏌𣏾𣗄毱泠洮海涿淊淸渚潞濹灤𤋮𤋮煇燁爀玟玨珉珖琛琡琢琦琪琬琹瑋㻚畵疁睲䂓磈磠祇禮鿆䄃鿅秚稞筿簱䉤綋羡脘脺舘芮葛蓜蓬蕙藎蝕蟬蠋裵角諶跎辻迶郝鄧鄭醲鈳銈錡鍈閒雞餃饀髙鯖鷗麴麵"], // 84区7点から
80
+ ];
81
+ /**
82
+ * 追加記号・追加漢字 (85〜94区)。1行が1区で、94 字ずつ (点の順)。ARIB STD-B24 表 7-19 / STD-B62 表 5-2。
83
+ * 番組表の外字 (aribtext-gaiji.ts) もここを引く
84
+ *
85
+ * 4K8K 用の記号 (🆛〜🆬 U+1F19B〜1F1AC と 🈻 U+1F23B。STD-B62 表 5-3「EPG で使う追加記号」) は
86
+ * **区点が無いので入れない。** 規格は UCS の符号だけを決め (UTF-8 で送る MMT の番組表用)、
87
+ * STD-B24 表 7-19 の 90区85点〜・91区50点〜も空きのまま。denpa は8単位符号しか読まないので出てこない
88
+ */
89
+ const ADDITIONAL_ROWS = [
90
+ "㐂𠅘份仿侚俉傜儞冼㔟匇卡卬詹𠮷呍咖咜咩唎啊噲囤圳圴塚墀姤娣婕寬﨑㟢庬弴彅德怗恵愰昤曈曙曺曻桒鿄椑椻橅檑櫛𣏌𣏾𣗄毱泠洮海涿淊淸渚潞濹灤𤋮𤋮煇燁爀玟玨珉珖琛琡琢琦琪琬琹瑋㻚畵疁睲䂓磈磠祇禮鿆䄃", // 85区
91
+ "鿅秚稞筿簱䉤綋羡脘脺舘芮葛蓜蓬蕙藎蝕蟬蠋裵角諶跎辻迶郝鄧鄭醲鈳銈錡鍈閒雞餃饀髙鯖鷗麴麵���������������������������������������������������", // 86区
92
+ "����������������������������������������������������������������������������������������������", // 87区
93
+ "����������������������������������������������������������������������������������������������", // 88区
94
+ "����������������������������������������������������������������������������������������������", // 89区
95
+ "⛌⛍❗⛏⛐⛑�⛒⛕⛓⛔����🅿🆊��⛖⛗⛘⛙⛚⛛⛜⛝⛞⛟⛠⛡⭕㉈㉉㉊㉋㉌㉍㉎㉏����⒑⒒⒓🅊🅌🄿🅆🅋🈐🈑🈒🈓🅂🈔🈕🈖🅍🄱🄽⬛⬤🈗🈘🈙🈚🈛⚿🈜🈝🈞🈟🈠🈡🈢🈣🈤🈥🅎㊙🈀����������", // 90区
96
+ "⛣⭖⭗⭘⭙☓㊋〒⛨㉆㉅⛩࿖⛪⛫⛬♨⛭⛮⛯⚓✈⛰⛱⛲⛳⛴⛵🅗ⒹⓈ⛶🅟🆋🆍🆌🅹⛷⛸⛹⛺🅻☎⛻⛼⛽⛾🅼⛿���������������������������������������������", // 91区
97
+ "➡⬅⬆⬇⬯⬮年月日円㎡㎥㎝㎠㎤🄀⒈⒉⒊⒋⒌⒍⒎⒏⒐氏副元故前新🄁🄂🄃🄄🄅🄆🄇🄈🄉🄊㈳㈶㈲㈱㈹㉄▶◀〖〗⟐²³🄭🄬🄫㉇🆐🈦℻���", // 92区
98
+ "㈪㈫㈬㈭㈮㈯㈰㈷㍾㍽㍼㍻№℡〶⚾🉀🉁🉂🉃🉄🉅🉆🉇🉈🄪🈧🈨🈩🈔🈪🈫🈬🈭🈮🈯🈰🈱ℓ㎏㎐㏊㎞㎢㍱��½↉⅓⅔¼¾⅕⅖⅗⅘⅙⅚⅐⅛⅑⅒☀☁☂⛄☖☗⛉⛊♦♥♣♠⛋⨀‼⁉⛅☔⛆☃⛇⚡⛈�⚞⚟♬☎���", // 93区
99
+ "ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ⑰⑱⑲⑳⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿㉑㉒㉓㉔🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡🄢🄣🄤🄥🄦🄧🄨🄩㉕㉖㉗㉘㉙㉚①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯❶❷❸❹❺❻❼❽❾❿⓫⓬㉛�", // 94区
100
+ ];
101
+ /** 追加記号・追加漢字を1つの文字列にしたもの。(区 − 85) × 94 + (点 − 1) 番目のコードポイント */
102
+ export const ADDITIONAL = ADDITIONAL_ROWS.join('');
103
+ // ここから JIS X 0213 の表 (packages/arib/scripts/jisx0213.ts が書く。手で直さない)
104
+ /**
105
+ * JIS X 0213:2004 の1面で、2つのコードポイントで表す字 (半濁点の付いたかな・発音記号と、声調の組)。
106
+ * [区×94+点 (0 から), 字]。字幕は1区画、番組表は2つのコードポイントのまま出す
107
+ */
108
+ export const KANJI_SEQUENCES = [
109
+ [368, "か゚"], // 4区87点
110
+ [369, "き゚"], // 4区88点
111
+ [370, "く゚"], // 4区89点
112
+ [371, "け゚"], // 4区90点
113
+ [372, "こ゚"], // 4区91点
114
+ [462, "カ゚"], // 5区87点
115
+ [463, "キ゚"], // 5区88点
116
+ [464, "ク゚"], // 5区89点
117
+ [465, "ケ゚"], // 5区90点
118
+ [466, "コ゚"], // 5区91点
119
+ [467, "セ゚"], // 5区92点
120
+ [468, "ツ゚"], // 5区93点
121
+ [469, "ト゚"], // 5区94点
122
+ [557, "ㇷ゚"], // 6区88点
123
+ [975, "æ̀"], // 11区36点
124
+ [979, "ɔ̀"], // 11区40点
125
+ [980, "ɔ́"], // 11区41点
126
+ [981, "ʌ̀"], // 11区42点
127
+ [982, "ʌ́"], // 11区43点
128
+ [983, "ə̀"], // 11区44点
129
+ [984, "ə́"], // 11区45点
130
+ [985, "ɚ̀"], // 11区46点
131
+ [986, "ɚ́"], // 11区47点
132
+ [1008, "˩˥"], // 11区69点
133
+ [1009, "˥˩"], // 11区70点
134
+ ];
135
+ /**
136
+ * JIS X 0213:2004 の1面の 85〜94区 (第3水準の漢字)。JIS互換漢字1面 (終端 0x39) だけが引く。
137
+ * 漢字集合 (0x42) と追加記号 (0x3B) の 85区から先は `ADDITIONAL`
138
+ */
139
+ const PLANE1_HIGH_ROWS = [
140
+ "擄擊擐擷擻攢攩敏敧斝既昀昉昕昞昺昢昤昫昰昱昳曻晈晌𣇄晙晚晡晥晳晷晸暍暑暠暲暻曆曈㬢曛曨曺朓朗朳杦杇杈杻极枓枘枛枻柹柀柗柼栁桒栝栬栱桛桲桵梅梣梥梲棈棐棨棭棰棱棼椊楉𣗄椵楂楗楣楤楨榀﨔榥榭槏㮶", // 85区
141
+ "㯃槢槩槪槵槶樏樕𣜿樻樾橅橐橖橛橫橳𣝣檉檔檝檞檥櫤櫧㰏欄欛欞欬欵歆歖歠步歧歷殂殩殭殺每毖毗毿氅氐氳汙汜沪汴汶沅沆沘沜泻泆泔泠泫泮𣳾洄洎洮洱洹洿浘浥海涂涇涉涔涪涬涿淄淖淚淛淝淼渚渴湄湜湞溫溱滁", // 86区
142
+ "滇滎漐漚漢漪漯漳潑潙潞潡潢潾澈澌澍澔澠澧澶澼濇濊濹濰濵瀅瀆瀨灊灝灞灎灤灵炅炤炫炷烔烘烤焏焫焞焠焮焰煆煇煑煮煒煜煠煨凞熅熇熒燁熺燄燾爀爕牕牖㸿犍犛犾狀狻𤟱猧猨猪獐獦獼玕玟玠玢玦玫珉珏珖珙珣珩", // 87区
143
+ "琇琊琚琛琢琦琨琪琫琬琮琯琰瑄瑆瑇瑋瑗瑢瑫瑭璆璇璉璘璜璟璣璐璦璨璩璵璿瓈瓉瓚瓿甁甗甯畯畹疒㽲痎痤瘀瘂瘈瘕瘖瘙瘞瘭瘵癃癋癤癥癭癯癱皁皛皝皞皦皪皶盅盌盎盔盦盱盼眊眙眴眶睆睍睎睜睟睢睺瞀瞔瞪矠砭𥒎", // 88区
144
+ "硃硎硏硑硨确碑碰𥔎碭磤磲礀磷礜礮礱礴社祉祅祆祈祐祖祜祝神祥祹禍禎福禘禱禸秈秊𥝱秔秞秫秭稃穀稹穝穭突窅窠𥧄窳窻竎竫竽笒笭笻筇筎筠筭筯筲箞節篗篙簁簱簞簠簳簶䉤𥶡籙籭籹粏粔粠粼糕糙糝紇紈紓紝紣紱", // 89区
145
+ "絁絈絓絜絺綃綋綠綦緂緌緖緣練縨縈縑縕繁繇繒繡纊纍罇署羑羗羿翎翛翟翬翮翺者耔耦耵耷耼胊胗胠胳脘腊腠腧腨腭膻臊臏臗臭䑓䑛艠艴𦫿芎芡芣芤芩芮芷芾芿苆苕苽苾茀茁荢茢茭茺荃荇荑荕荽莆莒莘莧莩莿菀菇菏", // 90区
146
+ "菑菡菪萁萆萊著葈葟葰葳蒅蒞蒯蒴蒺蓀蓂𦹀蔲蔞蔣蔯蕙蕤﨟薭蕺薌薏薢薰藋藎藭蘒藿蘄蘅蘐𧃴蘘蘩蘸虗虛虜虢䖝虬虵蚘蚸蛺蛼蛽蜋蝱螇螈螬螭螵䗪蟖蟬蠆蠊蠐蠔蠟袘袪裊裎𧚄裵褜褐褘褙褚褧褰褲褹襀覔視觔觥觶訒訕", // 91区
147
+ "訢訷詇詎詝詡詵詹誧諐諟諴諶諸謁謹譆譔譙譩讝豉豨賓賡賴賸賾贈贒贛趯跎跑跗踠踣踽蹰蹻𨉷軀䡄軺輞輭輶轔𨏍辦辵迤迨迮逈逭逸邈邕邗邙邛邢邳邾郄郅郇郗郝郞郯郴都鄔鄕鄖鄢鄣鄧鄯鄱鄴鄽酈酛醃醞醬醱醼釗釻釤", // 92区
148
+ "釥釭釱鈇鈐鈸鈹鈺鈼鉀鉃鉏鉸銈鋂鋋鋌鋓鋠鋿錄錟錡錥鍈鍉鍊鍤鍥鍪鍰鎛鎣鎺鏆鏞鏟鐄鏽鐳鑊鑣鑫鑱鑲閎閟閦閩閬閶閽闋闐闓䦰闚闞陘隄隆隝隤隥雒雞難雩雯霳霻靍靎靏靚靮靳鞕鞮鞺韁韉韞韛韴響頊頞頫頰頻顒顓顖", // 93区
149
+ "顗顙顚類顥顬颺飈飧饘馞騂騃騤騭騮騸驊驎驒骶髁髃髎髖髹鬂鬈鬠䰗鬭魞魹魦魲魵鮄鮊鮏鮞鮧鯁鯎鯥鯸鯽鰀鰣鱁鱏鱐鱓鱣鱥鱷鴝鴞鵃鵇鵒鵣鵰鵼鶊鶖鷀鶬鶼鷗𪆐鷧鸇鸕鹼麞麤麬麯麴麵黃黑鼐鼹齗龐龔龗龢姸屛幷瘦繫", // 94区
150
+ ];
151
+ /** `PLANE1_HIGH_ROWS` を1つの文字列にしたもの。(区 − 85) × 94 + (点 − 1) 番目のコードポイント */
152
+ export const PLANE1_HIGH = PLANE1_HIGH_ROWS.join('');
153
+ /**
154
+ * JIS X 0213:2004 の2面 (JIS互換漢字2面。終端 0x3A)。[区, 94 字 (点の順)]。字のある区だけ
155
+ */
156
+ export const PLANE2 = [
157
+ [1, "𠂉丂丏丒丩丫丮乀乇么𠂢乑㐆𠂤乚乩亝㐬㐮亹亻𠆢亼仃仈仐仫仚仱仵伀伖佤伷伾佔佘𠈓佷佸佺佽侂侅侒侚俦侲侾俅俋俏俒㑪俲倀倐倓倜倞倢㑨偂偆偎偓偗偣偦偪偰傣傈傒傓傕傖傜傪𠌫傱傺傻僄僇僳𠎁僎𠍱僔僙僡僩㒒"],
158
+ [3, "儈𠏹儗儛𠑊兠𠔉关冃冋㒼冘冣冭㓇冼𠗖𠘨凳凴刂划刖𠝏剕剜剬剷劄劂𠠇劘𠠺劤劦劯劺劻勊㔟勑𠢹勷匊匋匤匵匾卂𠥼𠦝卧卬卺厤厴𠫓厷叀𠬝㕝㕞叕叚㕣叴叵呕吤吨㕮呃呢呦呬咊咍咕咠咦咭咮咷咺咿哃𠵅哬哯哱哳唀唁唉"],
159
+ [4, "唼啁㖦啇啊㖨啠啡啤𠷡啽喂喈喑㗅嗒𠺕𠹭喿嗉嗌嗑嗝㗚嗢𠹤嗩嘨𠽟嘇嘐嘰嘷㗴嘽嘿噀噇噞噠噭㘅嚈嚌嚕嚚嚝嚨嚭嚲囅囍囟囨囶囷𡈁圕圣𡉕圩𡉻坅坆坌坍𡉴坨坯坳坴坵坻𡋤𡋗垬垚垝垞垨埗𡋽埌𡌶𡍄埞埦埰㙊埸埻埽堄堞"],
160
+ [5, "堠堧堲堹𡏄塉塌塧墊墋墍墏墐墔墝墪墱𡑭壃壍壢壳壴夅夆夋复夔夤𡗗㚑夽㚙奆㚖𦰩奛奟𡙇奵奶奼妟妮妼姈姍姞姣姤姧姮𡜆𡝂㛏娌娍娗娧娭婕婥婺媋媜媟媠媢媱媳媵媺媿嫚嫜嫠嫥嫰嫮嫵嬀嬈嬗嬴嬭孌孒孨孯孼孿宁宄𡧃"],
161
+ [8, "宖宬㝡寀㝢寎寖㝬㝫寱寽㝵尃尩尰𡱖屟屣屧屨屩屰𡴭𡵅屼𡵸𡵢岈岊㟁𡶡𡶜岠岢岦岧𡶒岭岵𡶷峉𡷠𡸳崆崐崫崝崠崤崦崱崹嵂㟨嵡嵪㟴嵰𡼞㟽嶈㠀嶒嶔嶗嶙嶰嶲嶴𡽶嶹巑巗巘巠𡿺巤巩㠯帀㠶帒帕㡀帟帮帾幉㡜幖㡡幫幬幭"],
162
+ [12, "幮𢅻庥庪庬庹庿廆廒廙𢌞廽弈弎弜𢎭弞彇彣彲彾徏徢徤徸忄㣺忇忋忒忓忔忢忮忯忳忼㤗怗怢怤㤚恌恿悊悕您𢛳悰悱悾惈惙惛惮惲惵愐愒愓愙愞愺㥯慁慆慠慼𢡛憒憓憗憘憥憨憭𢢫懕懝懟懵𢦏戕戣戩扆扌扑扒扡扤扻扭扳"],
163
+ [13, "抙抦拕𢪸拽挃挍挐𢭏𢭐挲挵挻挼捁捄捎𢭆捙𢰝𢮦捬掄掙𢰤掔掽揷揔揕揜揠揫揬揲搉搞搥搩搯摚摛摝摳摽撇撑撝撟擋擌擕擗𢷡擤擥擿攄㩮攏攔攖㩳攞攲敄敔敫敺斁斄斅斊斲斵斸斿旂旉旔㫖旲旹旼昄昈昡昪晅晑晎㫪𣇃晗"],
164
+ [14, "晛晣𣇵𣆶晪晫晬晭晻暀暐暒暙㬎暭暱暵㬚暿㬜曬㫗朁朅朒𣍲朙𣏓𣏒杌杍杔杝𣏐𣏤𣏕杴杶𣏚枒𣏟荣栐枰枲柃柈柒柙柛柰柷𣑊𣑑𣑋栘栟栭𣑥栳栻栾桄桅桉桌桕桗㭷桫桮桺桼梂梐梖㭭梘梙梚梜梪梫梴梻棻𣓤𣕚﨓棃棅棌棏棖"],
165
+ [15, "棙棤棥棬棷椃椇㮇㮈𣖔椻㮍楆楩楬楲楺楿榒㮤榖榘榦榰榷榺榼槀槑槖𣘹𣙇樰𣘸𣘺槣槮槯槳㯍槴槾樑樚樝𣜜樲樳樴樿橆橉橺橎橒橤𣜌橾檃檋㯰檑檟檡𣝤檫檽櫆櫔櫐櫜櫝𣟿𣟧櫬櫱櫲櫳櫽𣠤欋欏欐欑𣠽欗㰦欯歊歘歬歵歺殁"],
166
+ [78, "殛殮𣪘殽殾毇毈毉毚毦毧毮毱氂氊氎氵氶氺𣱿氿汍汛汭沄沉㳃沔沕沗沭泂泐㳒泖泚泜泩泬泭𣴀洀洊洤洦洧汧洯洼浛浞浠浰涀涁涊涍涑涘𣵀渗𣷺𣷹𣷓涫涮涴淂洴淈淎淏淐淟淩淶渶渞渢渧㴑渲渼湈湉湋湌湏湑湓湔湗湣㴞"],
167
+ [79, "溓溧溴溿滃滊滙漵滫滹滻漊漌漘漥漶漼𣽾潒潗潚潠潨澘潽澐澖澾澟澥澯㵤澵濈濉濚濞濩𤂖濼瀀瀇瀊瀣𤄃瀹瀺瀼灃灇灋㶚灔灥灩灬灮灶灾炁炆炕炗炻𤇆炟炱𤇾烬烊烑烓烜焃焄焆焇焈焌㷀焯焱煐煊煓煞㷔熖熀熛熠熢熮熯"],
168
+ [80, "熳𤎼燋燓燙燜爇㸅爫爫爴爸爹丬牂牓牗牣𤘩牮牯牸牿犎𤚥犭犮犰犱狁㹠狌㹦㹨狳狺猇猒猘猙㺃猹猬猱猳猽獒㺔獫獬𤢖獮獯獱獷玁玅玊玔玘玜玞玥玨玵玷玹玼玿珅珋珡珧珹琓珺琁琤琱琹瑓瑀瑃瑍瑒瑝瑱璁璅璈𤩍璒璗璙"],
169
+ [81, "璠璡璥璪璫璹璻璺瓖瓘瓞瓯瓫𤭖瓺𤭯甠甤甪㽗𤰖甽甾畀畈畎畐畒畬畲畱畺畽畾疁𤴔疌㽵疢㽷疰疷疿痀痆痏痓痝痟痠痧痬痮痱痹瘃瘘瘇瘏㾮𤸎瘓瘛瘜𤸷瘥瘨瘼瘳𤹪㿉癁𤺋癉癕㿗癮皕皜皡皠皧皨皯𥁊盉𥁕盨盬𥄢眗眚眭眵"],
170
+ [82, "𥆩䀹𥇥𥇍睘睠睪𥈞睲睼睽𥉌䁘瞚瞟瞢瞤瞩矞矟矤矦矪矬䂓矰矴矻𥐮砅砆砉砍砙砡砬硇硤硪𥓙碊碔碤碝碞碟碻磈磌磎磕磠磡磦磹磺磻磾𥖧礐礛礰礥礻祊祘祛䄅祧祲禔禕禖禛禡禩禴离秂秇秌种秖䅈𥞩𥞴䅏稊稑稕稛稞䅣稭"],
171
+ [83, "稸穇穌穖穙穜穟穠穧穪穵穸窂窊窐窣窬𥧔䆴窹窼窾䆿竌竑竧竨竴𥫤𥫣笇𥫱笽笧笪笮笯笱䇦䇳筿筁䇮筕筹筤筦筩筳𥮲䈇箐箑箛䈎箯箵箼篅篊𥱋𥱤篔篖篚篪篰簃簋簎簏簦籅籊籑籗籞籡籩籮籯籰𥸮𥹖𥹥粦𥹢粶粷粿𥻘糄𥻂糈"],
172
+ [84, "糍𥻨糗𥼣糦糫𥽜糵紃紉䋆紒紞𥿠𥿔紽紾絀絇𦀌𥿻䋖絙絚絪絰䋝絿𦀗綆綈綌綗𦁠綝綧綪綶綷緀緗緙緦緱緹䌂𦃭縉縐縗縝縠縧縬繅繳繵繾纆纇䌫纑纘纚䍃缼缻缾罃罄罏㓁𦉰罒𦊆罡罣罤罭罽罾𦍌羐养𣴎羖羜羭𦐂翃翏翣翥翯"],
173
+ [85, "翲耂耊耈耎耑耖耤耬耰聃聦聱聵聻肙肜肤肧肸𦙾胅胕胘胦𦚰脍胵胻䏮脵脖脞䏰脤脧脬𦜝脽䐈腩䐗膁䐜膄膅䐢膘膲臁臃臖臛𦣝臤𦣪臬𦥑臽臿𦥯舄𦧝舙舡舢𦨞舲舴舼艆艉艅𦩘艋䑶艏䑺艗𦪌艜艣𦪷艹艹艹䒑艽艿芃芊芓芧芨"],
174
+ [86, "芲芴芺芼苢苨苷茇茈茌荔茛茝茰茼荄荗䒾荿䓔䒳莍莔莕莛莝菉菐菔菝菥菹萏萑萕𦱳萗萹葊葏葑葒葙葚葜𦳝葥葶葸葼蒁䔍蓜蒗蒦蒾䔈蓎蓏蓓𦹥蓧蓪蓯蓰蓱蓺蓽蔌蔛蔤蔥蔫蔴蕏蕯䔥䕃蔾蕑蕓蕞蕡蕢𦾔蕻蕽蕿薁薆薓薝薟𦿸"],
175
+ [87, "𦿶𦿷薷薼藇藊藘藙藟藡藦藶蘀蘑蘞蘡蘤蘧𧄍蘹蘼𧄹虀蘒虓虖虯虷虺蚇蚉蚍蚑蚜蚝蚨﨡蚱蚳蛁蛃蛑蛕蛗蛣蛦䖸蜅蜇蜎蜐蜓蜙蜟蜡蜣蜱蜺蜾蝀蝃蝑蝘蝤蝥蝲蝼𧏛𧏚螧螉螋螓螠𧏾䗥螾𧐐蟁蟎蟵蟟𧑉蟣蟥蟦蟪蟫蟭蠁蠃蠋蠓蠨"],
176
+ [88, "蠮蠲蠼䘏衊衘衟衤𧘕𧘔衩𧘱衯袠袼袽袾裀裒𧚓裑裓裛裰裱䙁褁𧜎褷𧜣襂襅襉𧝒䙥襢覀覉覐覟覰覷觖觘觫䚡觱觳觽觿䚯訑訔𧦅訡訵訾詅詍詘誮誐誷誾諗諼𧪄謊謅謍謜謟謭譃䜌譑譞譶譿讁讋讔讕讜讞谹𧮳谽𧮾𧯇豅豇豏豔"],
177
+ [89, "豗豩豭豳𧲸貓貒貙䝤貛貤賖賕賙𧶠賰賱𧸐贉贎赬趄趕趦𧾷跆跈跙跬踌䟽跽踆𨂊踔踖踡踢踧𨂻䠖踶踹蹋蹔蹢蹬蹭蹯躘躞躮躳躵躶躻𨊂軑軔䡎軹𨋳輀輈輗輫轀轊轘𨐌辤辴辶辶𨑕迁迆﨤迊迍迓迕迠迱迵迻适逌逷𨕫遃遄遝𨗈"],
178
+ [90, "𨗉邅邌邐阝邡䢵邰邶郃郈𨛗郜郟𨛺郶郲鄀郫郾郿鄄鄆鄘鄜鄞鄷鄹鄺酆酇酗酙酡酤酴酹醅醎醨醮醳醶釃釄釚𨥉𨥆釬釮鈁鈊鈖鈗𨥫鈳鉂鉇鉊鉎鉑鉖鉙鉠鉡鉥鉧鉨𨦇𨦈鉼鉽鉿銉銍銗銙銟銧銫𨦺𨦻銲銿鋀鋆鋎鋐鋗鋙鋥鋧錑𨨞"],
179
+ [91, "𨨩鋷鋹鋻錂錍錕錝錞錧錩𨩱𨩃鍇鍑鍗鍚鍫鍱鍳鎡𨪙𨫍鎈鎋鎏鎞鏵𨫤𨫝鏱鏁鏇鏜鏢鏧鐉鐏鐖鐗鏻鐲鐴鐻鑅𨯁𨯯鑭鑯镸镹閆閌閍𨴐閫閴𨵱闈𨷻𨸟阬阳阴𨸶阼陁陡𨺉隂𨻫隚𨼲䧧隩隯隳隺隽䧺𨿸雘雚雝䨄霔霣䨩霶靁靇靕靗靛"],
180
+ [92, "靪𩊠𩊱鞖鞚鞞鞢鞱鞲鞾韌韑韔韘韙韡韱頄頍頎頔頖䪼𩒐頣頲頳頥顇顦颫颭颰𩗏颷颸颻颼颿飂飇飋飠𩙿飡飣飥飪飰飱飳餈䬻𩛰餖餗𩜙餚餛餜𩝐餱餲餳餺餻餼饀饁饆饍饎饜饟饠馣馦馹馽馿駃駉駔駙駞𩣆駰駹駼騊騑騖騚騠"],
181
+ [93, "騱騶驄驌驘䯂骯䯊骷䯒骹𩩲髆髐髒髕䯨髜髠髥髩鬃鬌鬐鬒鬖鬜鬫鬳鬽䰠魋魣魥魫魬魳魶魷鮦鮬鮱𩷛𩸽鮲鮸鮾鯇鯳鯘鯝鯧鯪鯫鯯鯮𩸕鯺𩺊鯷𩹉鰖鰘鰙鰚鰝鰢鰧鰩鰪𩻄鰱鰶鰷鱅鱜𩻩鱉鱊𩻛鱔鱘鱛鱝鱟鱩鱪鱫鱭鱮鱰鱲鱵鱺"],
182
+ [94, "鳦鳲鴋鴂𩿎鴑鴗鴘𪀯䳄𪀚鴲䳑鵂鵊鵟鵢𪃹鵩鵫𪂂鵳鵶鵷鵾鶄鶍鶙鶡鶿鶵鶹鶽鷃鷇鷉鷖鷚鷟鷠鷣鷴䴇鸊鸂鸍鸙鸜鸝鹻𢈘麀麅麛麨𪎌麽𪐷黟黧黮黿鼂䵷鼃鼗鼙鼯鼷鼺鼽齁齅齆齓齕齘𪗱齝𪘂齩𪘚齭齰齵𪚲��������"],
183
+ ];
184
+ // ここまで JIS X 0213 の表
185
+ /**
186
+ * 色の表 (CLUT)。8つの組 × 16色、RGBA の16進。後ろの4組 (65〜127) は 64 を引いた番号の色を半分透かしたもの (65〜72 だけは 0〜7 番の基本の色)。
187
+ * libaribcaption の表は 101 番と 119 番の青が `09` になっていたが、
188
+ * 元の 37 番・55 番 (`55ff00`・`ff5500`) を透かしたものなので `00`
189
+ */
190
+ export const CLUT = [
191
+ "000000ff", "ff0000ff", "00ff00ff", "ffff00ff", "0000ffff", "ff00ffff", "00ffffff", "ffffffff", "00000000", "aa0000ff", "00aa00ff", "aaaa00ff", "0000aaff", "aa00aaff", "00aaaaff", "aaaaaaff", // 0
192
+ "000055ff", "005500ff", "005555ff", "0055aaff", "0055ffff", "00aa55ff", "00aaffff", "00ff55ff", "00ffaaff", "550000ff", "550055ff", "5500aaff", "5500ffff", "555500ff", "555555ff", "5555aaff", // 1
193
+ "5555ffff", "55aa00ff", "55aa55ff", "55aaaaff", "55aaffff", "55ff00ff", "55ff55ff", "55ffaaff", "55ffffff", "aa0055ff", "aa00ffff", "aa5500ff", "aa5555ff", "aa55aaff", "aa55ffff", "aaaa55ff", // 2
194
+ "aaaaffff", "aaff00ff", "aaff55ff", "aaffaaff", "aaffffff", "ff0055ff", "ff00aaff", "ff5500ff", "ff5555ff", "ff55aaff", "ff55ffff", "ffaa00ff", "ffaa55ff", "ffaaaaff", "ffaaffff", "ffff55ff", // 3
195
+ "ffffaaff", "00000080", "ff000080", "00ff0080", "ffff0080", "0000ff80", "ff00ff80", "00ffff80", "ffffff80", "aa000080", "00aa0080", "aaaa0080", "0000aa80", "aa00aa80", "00aaaa80", "aaaaaa80", // 4
196
+ "00005580", "00550080", "00555580", "0055aa80", "0055ff80", "00aa5580", "00aaff80", "00ff5580", "00ffaa80", "55000080", "55005580", "5500aa80", "5500ff80", "55550080", "55555580", "5555aa80", // 5
197
+ "5555ff80", "55aa0080", "55aa5580", "55aaaa80", "55aaff80", "55ff0080", "55ff5580", "55ffaa80", "55ffff80", "aa005580", "aa00ff80", "aa550080", "aa555580", "aa55aa80", "aa55ff80", "aaaa5580", // 6
198
+ "aaaaff80", "aaff0080", "aaff5580", "aaffaa80", "aaffff80", "ff005580", "ff00aa80", "ff550080", "ff555580", "ff55aa80", "ff55ff80", "ffaa0080", "ffaa5580", "ffaaaa80", "ffaaff80", "ffff5580", // 7
199
+ ];
200
+ /** 外字 (DRCS) の画像の MD5 → 置き換える字。足し方は上の説明 */
201
+ export const DRCS_REPLACE = new Map([
202
+ ['022b6f43e2a414fd68f172da202bac9a', 0x269e],
203
+ ['94fb7be756372db6b62e3e0a119083d5', 0x269e],
204
+ ['12aecdea283e4d07f88b9f2b740e4f86', 0x269f],
205
+ ['1a563501affbf7f5baec350a108d5505', 0x269f],
206
+ ['556971570f40044fa4520df3289a1cf2', 0x269f],
207
+ ['65b042886a563a771aa389b12af7bca7', 0x269f],
208
+ ['bbda644d17efd3c020635ee3d90968a5', 0xff5f],
209
+ ['5063561406195ca45f5992e3f7ad77d2', 0xff5f],
210
+ ['9d15c0395a4738936af34308acf2d032', 0xff5f],
211
+ ['2a063edc4770b3403f060b38166a0d4d', 0xff5f],
212
+ ['54479aa90145b4713134b78d4fb98aa5', 0xff5f],
213
+ ['12a2c7156da32fc972b5a451bb87b813', 0xff5f],
214
+ ['c8d428ead557285b0b7088388b22519c', 0xff5f],
215
+ ['7160f7419cba7acdacd23cbeb4834dbe', 0xff5f],
216
+ ['3c49616fb9bf0b9052b30e118f8857ea', 0xff5f],
217
+ ['71c94bb6d963e47443eac448a09d22ce', 0xff5f],
218
+ ['7ec2179107ba4c58abb6ef92e7781365', 0xff5f],
219
+ ['2eb49bd25d7eeada006afc0864350da4', 0xff5f],
220
+ ['a341ee7fe8a368c9737a3341f016ac70', 0xff5f],
221
+ ['f47048d669ac8d84eeb62477e8420f89', 0xff5f],
222
+ ['c988da4adf9958a4c66bcb24114f527a', 0xff5f], // denpa: ⦅ (半角)。2026-10-10 時点の録画 58 本で表に無かったもの
223
+ ['38566b372f4c5a1aead4efa20decd079', 0xff60],
224
+ ['d84fc83615b75802ed422eda4ba39465', 0xff60],
225
+ ['5bb8b7731d9473ebd7c842334dfa24f2', 0xff60],
226
+ ['9ffa7e00cfc7e807a161ada460b8060c', 0xff60],
227
+ ['a58dc0e1271b03a5981b57a83271afa7', 0xff60],
228
+ ['e67210b0da0161d36b79e8c9be6a9d0c', 0xff60],
229
+ ['08de4be9569ebd6ac01709f552ae8a65', 0xff60],
230
+ ['e214599903c94c532684bdf54b62df61', 0xff60],
231
+ ['2a83209f8a7489081890c277397df425', 0xff60],
232
+ ['0294d50cea5197c8c4646d2cace3e78d', 0xff60],
233
+ ['0b808509e4d89a2b9d02252ca85f2e34', 0xff60],
234
+ ['2a74d4ad7292c858dc2bb559de67f2d9', 0xff60],
235
+ ['8c810b8cbe6159e837a88575bb4e6033', 0xff60],
236
+ ['dc66317cd6fff4f4221069a20f321fce', 0xff60],
237
+ ['94d501567395c14e37fbacc282f646fb', 0xff60], // denpa: ⦆ (半角)。2026-10-10 時点の録画 58 本で表に無かったもの
238
+ ['c7b93e8e27f686cbeeb88e871c17327c', 0x300a], // denpa: 《。2026-10-10 時点の録画 58 本で表に無かったもの
239
+ ['4eb14b82b3a870763de244c3c21e210b', 0x300b], // denpa: 》。2026-10-10 時点の録画 58 本で表に無かったもの
240
+ ['563e1633d226c10ef4ec80638997e4a9', 0x300e],
241
+ ['0993d5cdf910f481eeefa19e4f09d77c', 0x300e],
242
+ ['7b80a8345c16e2d4f8ff2691e245c2b1', 0x300e],
243
+ ['016669fa94786f9581342d47f317c02c', 0x300e],
244
+ ['01d3eb52ab29f0eecc62ff74224fffd4', 0x300e],
245
+ ['089aa1d87915ef8ad3c43982ac657c8c', 0x300e],
246
+ ['30e8cb69cda3ad84e87943c4351c24b7', 0x300e],
247
+ ['385927959c2621acf57f8d40140924f8', 0x300e],
248
+ ['2c256506f406bac4c214318f196ad5db', 0x300e],
249
+ ['2d3912e10113e5c7bef33df3249af4a7', 0x300e],
250
+ ['8b6444be18f269ac615643b26f9e3041', 0x300e],
251
+ ['9c8c1ff659b439f73c65cf4766ab2f14', 0x300e],
252
+ ['e4caa1628ad6878f14be986761e06aaa', 0x300e],
253
+ ['e702912587801d73d58cdb30e48debed', 0x300f],
254
+ ['d70bb2b097f44c1ddefb93bf92bbb5cd', 0x300f],
255
+ ['f2b927267947a75b891403f95db72005', 0x300f],
256
+ ['4ec38a1d8d22e4df6c359f00f7ad8662', 0x300f],
257
+ ['55c9ea9aa8eb630e5ecb793b2f85c927', 0x300f],
258
+ ['70376e1ea05a3438a19c062ad49a7960', 0x300f],
259
+ ['8fe7cb78ca24d1973419eecf99252a88', 0x300f],
260
+ ['9ee59c7d2c202e0214836a0138f59e24', 0x300f],
261
+ ['b56aaf7fc68c5e206ccbc2ee1442b3af', 0x300f],
262
+ ['ba37f6b56d8fc8980c8236de9894fa61', 0x300f],
263
+ ['cc9fde9238a2bf78fd1c13f65b098e77', 0x300f],
264
+ ['f02e3e84dcd71c5d3bab2b7b4b99bd7e', 0x300f],
265
+ ['f686e0b742abe806fccbd4d9b3fcc4cd', 0x300f],
266
+ ['37f6ecf37a0a3ef8dff083ccc8754f81', 0x266c],
267
+ ['3336f18e849144658f212bd9399bec5f', 0x266c],
268
+ ['93efdc18683d8ecacb0a920d5f2fffb3', 0x266c],
269
+ ['9b8325b71aa6a000d24f88c4d7ec730d', 0x266c],
270
+ ['ab791ef796e6b5d66f13ed9aea3e8ab2', 0x266c],
271
+ ['6eb29f1917caea1cadf94f5496a4c374', 0x21b1],
272
+ ['583134b86e7d90960f64c5b863196978', 0x27a1],
273
+ ['4ba716a88c003ca0a069392be3b63951', 0x27a1],
274
+ ['4e0fbe47e3ba0fd5949bda53f11b16a5', 0x27a1],
275
+ ['61ec226a927ee80fffa12db219a43233', 0x27a1],
276
+ ['8e5b873ac8e1bf84246b281b3548c2ff', 0x21b4],
277
+ ['a78d9b65f46654601ce0145622164b47', 0x21b4],
278
+ ['5d01e6804b9aaec0c276f77306888c54', 0x21b4],
279
+ ['6168af1e81b6497fccb6b8d3226a8016', 0x21b4],
280
+ ['4360c0b7364802b680f5a65fa415bdd6', 0x2197],
281
+ ['4dab788480bb9ac50d2454b58438e407', 0x2197],
282
+ ['bfb2d58ab8c469d2b8b5c42d81e4e3b7', 0x2197],
283
+ ['4c503a0873195bfe8d71c9d55669781b', 0x2192],
284
+ ['caf36eff2cf3580cd66c5cd021ee4c09', 0x2192],
285
+ ['f00be20caf0aaef3a6fbec90a0e71852', 0x2160],
286
+ ['e660e1e23a6ddc9a5d2e0e1ef7ac5b86', 0x2161],
287
+ ['a62583f621fb5405add08e8f0beb6db4', 0x2161],
288
+ ['0e761ebb18b9870383725b3712f5c8d4', 0x2161],
289
+ ['1f65debfbf9df96de52c6f80922b012b', 0x2161],
290
+ ['5c13facf2da9f38922a9419061771ed0', 0x2161],
291
+ ['75a65cc3171c4c7ca0141042846ab91a', 0x2161],
292
+ ['eae94a6301787ff7bf77786ae4424601', 0x2161],
293
+ ['f1add7809e18e064e4609783211c9815', 0x2162],
294
+ ['a7ee6f7f63d348e2b8fb7ee9503f3c5c', 0x2661],
295
+ ['9c8cfb5e9349b06f0939605638896f4e', 0x2665],
296
+ ['45ce7d6d5c779136d32d3e60e13e10cd', 0x2155],
297
+ ['51f5fe58aaf460263b766e990fdbe979', 0x2155],
298
+ ['db40b0a65939e462396822d5ab3c6d9c', 0x2155],
299
+ ['d9e3a48d5a7c6ba6f8db18f56cf91f92', 0x215b],
300
+ ['86586bcdf8f14883f846849e93ca274c', 0x215c],
301
+ ['9d81f46e134081d56bc92f69eebfabd9', 0x2152],
302
+ ['18dddb04a4fe9b3f5c7b79e68fb8ab4b', 0x2152],
303
+ ['eff8659a150859b7b69682a023b283c1', 0x2152],
304
+ ['6e5ccf08b2bc815b0923df83cf9fafa1', 0x33a0],
305
+ ['8a77e56517a074d3d2ba426b84a07bf4', 0x33a0],
306
+ ['2c381a0eab014487d50f6f8bae8f0b71', 0x33a2],
307
+ ['9d1a36a1bec1cd2b0b0765f93c1e4f3c', 0x33a2],
308
+ ['e03eb00c54de790d8cc9997527fde905', 0x33a2],
309
+ ['3bce2a06a6a8557082543a6c90a42fe0', 0x303d],
310
+ ['4898c7d9fe3a8a6f9859b0e6f85a4327', 0x303d],
311
+ ['98ab18764756c8ca7608e17f562b21ce', 0x303d],
312
+ ['3037aad230d8cdae3df6e0ebedc0db79', 0x2049],
313
+ ['66e3474e6cbd8e817ba0a1f8920bf4e7', 0x2049],
314
+ ['4360dd96063ce1a9660cc8437e8238e3', 0x2048],
315
+ ['6ce68b7e389c5169309ee956ed0c98a8', 0x2048],
316
+ ['737a19289d25d963e255f3692ded6536', 0x2048],
317
+ ['14b18199bbc3f4bf65b72e316bc41d3c', 0xff01],
318
+ ['6bf58c146b692aeb403ed1f7618a060a', 0xff01],
319
+ ['7f12b67caaf7c8c5075b444bb2a16c70', 0xff01],
320
+ ['bfd55f4031ad80cb7401d65937b1d5d9', 0x301c],
321
+ ['4a61f6f7da9e6c8e373f4112cbd453cf', 0x301c],
322
+ ['882ded8f0bb4cdfa4ce28a0b64056d2a', 0x301c],
323
+ ['7726ffbf3a6e953affe6353c24ffb085', 0x301c],
324
+ ['0e290ec6542b5d52c972775e3d7cfeaf', 0xff0d],
325
+ ['420f1d27972d7cc83929307fbbb6dd50', 0xff0d],
326
+ ['4aa0e459273a2fe3012d7b3d2e14e07e', 0xff0d],
327
+ ['030b487ae68da1f4da98046f4fed390f', 0x4e00],
328
+ ['21699fa18fd14735a312512dfea2bff4', 0x4e00],
329
+ ['559fc240f4efe5a1e64714ce09217a3e', 0x4e00],
330
+ ['b7352c3f33a77bc9d3fbf693efbb8095', 0x4e00],
331
+ ['fcdb30a244fb6aad5255ee2d32fdf7fc', 0x4e00],
332
+ ['15a0a0fb33aacd4ce730a9503c46df5f', 0x3299],
333
+ ['9dad4982bd65fbf21525261a7efdf669', 0x3299],
334
+ ['c3e68e6d08d5429e28ffd6592acf4519', 0x3094],
335
+ ['f022cfe594d6f6930d7a5b994e1a0b71', 0x51dc],
336
+ ['407057c7b7b1a91d058d572d9a9d3aa5', 0x51dc],
337
+ ['fc85b0622183795f89111219dfbc6281', 0x51dc],
338
+ ['9707099e5828d97eb12ff2e6ba438558', 0x51dc],
339
+ ['987c829b62eb31f467165827766c410d', 0x51dc],
340
+ ['58371bb195aaa7a468c5c508351ac383', 0x51dc],
341
+ ['32324012ed7274a15002b66ed1e464f8', 0x873b],
342
+ ['0ffb731db8d4a6b711f97bbb08ed8819', 0x873b],
343
+ ['d90aae9a752e9b61662a9cafa837961f', 0x7953],
344
+ ['23d6c6f231ac5d51f4cdaaaa26701956', 0x7953],
345
+ ['81cbedabd8f88d4494255b0631820dfd', 0x7953],
346
+ ['4185f93a5571e49433ca9c13ae588f96', 0x9b4e],
347
+ ['9ab74d6e8bda8723614017a7fce587fe', 0x9b4e],
348
+ ['e96a39a050b694e5f8aadb111420b698', 0x20bb7],
349
+ ['08c5eb5fac4f1d362b946689eb2e4edf', 0x20bb7],
350
+ ['2cef7e443c22f5835658e67749ae52d1', 0x20bb7],
351
+ ['4ab0dd1578c8c5fa25f45938ff0f8575', 0x20bb7],
352
+ ['4c392bb90a1f62796f8fba2c19b4a7de', 0x20bb7],
353
+ ['43856fd7c04a779e571fe24c47f02a6c', 0x9ad9],
354
+ ['265efc2a174c73ea229f9ffefa703f32', 0x9ad9],
355
+ ['5a7af09cce6b3005355e1c6c82df8858', 0x9ad9],
356
+ ['808e9b858294184933f8bf45d6291572', 0x9ad9],
357
+ ['27f0c69a76bf571d6dc25db389d20779', 0x9ad9],
358
+ ['46fb250f60436fd5f33808343893ca12', 0x9ad9],
359
+ ['8a8c4c67a6094d4dc6039e5fe931159c', 0x9ad9],
360
+ ['9257f3792fcfcd21b85524d5f86f624e', 0x9ad9],
361
+ ['d502a276d6f311449597ee9e576d9217', 0x9ad9],
362
+ ['eaa49075e50fbe1fa4b7f593dfd95620', 0x9ad9],
363
+ ['c01d2bafce469da1abbb612fdb16c1e3', 0x5143],
364
+ ['e1ce03321fdb4eaca026a49a43e521a5', 0x5143],
365
+ ['0cfa6c95283a90eff3733db1ac80f58a', 0x5143],
366
+ ['52c1ad5b834821dc6b85ec27bdea1f76', 0x5143],
367
+ ['ad088cffd260c1fccb655cae17b14803', 0x5143],
368
+ ['a9ee52eaa5b4cc32d1891d540bfe93cc', 0xfa10],
369
+ ['a00182f1de36aaee28cac80a3c89d067', 0xfa10],
370
+ ['b03d44ca831a0c995116056ce23f82c5', 0xfa10],
371
+ ['2d6b7d3b5ca6c02d94c5b48661045b7a', 0xfa11],
372
+ ['f5c6e02e235abd23a87f48ed6a64cdcc', 0xfa11],
373
+ ['e9a3b055bda7b9ae70bde4003a4c5885', 0xfa11],
374
+ ['cb17df533b4ebd698a038defeddecf8a', 0xfa11],
375
+ ['0ea39c05c35f96d5b5a48e9815974132', 0xfa11],
376
+ ['3f642f3778827e651c8b82a4e9f06fd3', 0xfa11],
377
+ ['447d8358f482a4e1d9495902ebe269b1', 0xfa11],
378
+ ['ca59a20f1e0ee55b74db34697f961385', 0xfa11],
379
+ ['d2eae5651260b39c4239bcf00c8a76c5', 0xfa11],
380
+ ['f55eb365a9ded45d1e620f83d9f9de26', 0xfa11],
381
+ ['2b385c2642704e44347f2f4db147c8fa', 0x845b],
382
+ ['5c3a8c3a891386a771ff8f00a239b4ba', 0x845b],
383
+ ['e8caa78518e2d690af54e2206c9538f8', 0x5f45],
384
+ ['2e8659ae5e220240c5f8a97147d09df6', 0x5f45],
385
+ ['7592e633260537c1dfa7e5af1000752a', 0x5f45],
386
+ ['a57d3f7684c28d2a901fe6020145de32', 0x5f45],
387
+ ['da3ab2d5da4d69c7d312c7d819e45856', 0x5f45],
388
+ ['918e84ed41c2157aa5f5bbf9aa60514c', 0x5861],
389
+ ['b1e889986beb3a6518d8c2ea53547b7c', 0x5861],
390
+ ['d449ab392afa98c27eb817c40e2eb7ce', 0x5861],
391
+ ['e7158075f2976c353e4cf9247aae3abc', 0x9041],
392
+ ['f1a6fbb17f041cc15148163da34f541f', 0x9041],
393
+ ['a1779a3aaf215916fd0d8fbbb5bf5925', 0x87ec],
394
+ ['a3c09b57be535c0f5618d72f95884c50', 0x87ec],
395
+ ['4b9401a9f9a58c7d0f9c86120aa2dd23', 0x93e2],
396
+ ['fe00b640a48dd341573cafa94afeafa2', 0x93e2],
397
+ ['f4e1d8b42e3c49ea7c896049186d74bd', 0x87dc],
398
+ ['640130a634bd2a0f4347f933a8c5d6d6', 0x87dc],
399
+ ['62985aeebaec69314f03ff9d3080ada2', 0x9dd7],
400
+ ['1bd027207977c585c5889a1e24cae94e', 0x9dd7],
401
+ ['5c8022286d3bc941c12e9bbc475255dd', 0x9dd7],
402
+ ['e4a837fe20dfa091e03afe4857e2482e', 0x525d],
403
+ ['bf2cccb40b985fe3af04281944beac1a', 0x525d],
404
+ ['d5451a035c4e516e5ccb9372cd533d81', 0x525d],
405
+ ['e13ae32f28d840df74a88432df9b122e', 0x525d],
406
+ ['41637d181cd99088e2120a4ec6fc18aa', 0x5b34],
407
+ ['de63abb1aaa44e6ab8a11470103377d5', 0x5b34],
408
+ ['3d32b12254e01c701c195412cb8ef37c', 0x5b34],
409
+ ['f67bc6318ccf43e7902df9a6f9622932', 0x5b34],
410
+ ['d4ce6847d78fc2f8241088b5c0be795c', 0x5b34],
411
+ ['c472e6ade04610e67904aca1b1fa1468', 0x9e83],
412
+ ['db3d060943fbf888eb2fa7fd87340cba', 0x9e83],
413
+ ['509cff0edcba46d5db30b2f2f45c49c9', 0x7623],
414
+ ['4862270872e35184aab420c4d38169ad', 0x7623],
415
+ ['def4d364d00d0f78577987eaebd42aef', 0x9f55],
416
+ ['3cc113a87b49ce231a7b2ffbca4c1e18', 0x9f55],
417
+ ['03dddff25be65f7c284ef8addb8a0a8b', 0x9a41],
418
+ ['52aa815a5a57aff03085d31acd5afbc4', 0x9a41],
419
+ ['4f0431c4c63a6a362646758e62521df8', 0x7156],
420
+ ['dbf1ab17c746c48d474b3730064ba6f2', 0x7156],
421
+ ['790c6b4da6a88f7f4fdb6fdab77fe045', 0x7156],
422
+ ['4d7ae77f2bbf9c8af03d49d466f74058', 0x7156],
423
+ ['0335ba124be8a9e0c501f4051ac5fcf5', 0x9f90],
424
+ ['01d7892b430fd4362c8917ad921199b2', 0x9f90],
425
+ ['e866fd7e605c8b7c8bf718c45a5438cf', 0x9f90],
426
+ ['5df7d88e1e15018b3bce73e765ef72d6', 0x69cc],
427
+ ['48478e1f69ea50c6f7709d47f15b4007', 0x69cc],
428
+ ['4d7d276f23c92f94056b292e295ebd78', 0xfa19],
429
+ ['87d2b97034cf680cd86bc7fe7c500d93', 0xfa19],
430
+ ['f6300abbfcd6bd0db3abd41041499aaa', 0x9082],
431
+ ['26c476496eb73e15285527ab7c635f0b', 0x9082],
432
+ ['be33b9008a58bab485e17de9b2ab2626', 0x9005],
433
+ ['3a9b8b576fe8efca2dedc957732afa37', 0x9005],
434
+ ['b798637262a0c1a29c8de602d4b688c6', 0x9005],
435
+ ['a3785fd94f13646623554b180d08ac77', 0x5fb7],
436
+ ['1f81885b0996be70410e5aa3e4aab3c6', 0x5fb7],
437
+ ['88425dfcbd96fcb6d77ebb76f834d986', 0x5fb7],
438
+ ['9f993f913cd0614a3a965d74e0f4c8d1', 0x5fb7],
439
+ ['a8bb5f2f83d975edfc951a1e461befdc', 0x5fb7],
440
+ ['cd2eadbb87d0aadf1d1cd71fed0ab02f', 0x5fb7],
441
+ ['d22feeb00ace0a632e1a780682f937e8', 0x5fb7],
442
+ ['c9f2fda15b722253c625aebe73f4b1d9', 0x8fbb],
443
+ ['04556b37bff1ccc2f3b395232e104934', 0x8fbb],
444
+ ['117bacaeb67e3508d23a650b98f3c143', 0x8fbb],
445
+ ['211d70374c1787c4bc62df15794a4692', 0x8fbb],
446
+ ['7ba50856c59d1de19cc9c88caaced915', 0x8fbb],
447
+ ['0d627ebf7693b13645336a88813fb7e3', 0x7940],
448
+ ['2c3c032660b20a485575c2d8c7d47956', 0x7940],
449
+ ['1aaec04e53f2978bdf0a127c01b34e9a', 0xf9c3],
450
+ ['e2c3bf09b755b0d59a8a25cba6dda273', 0xf9c3],
451
+ ['fb13879ba2f93a8b0a28b2cd5358d1ee', 0xf9c3],
452
+ ['20eff1fff8d986496b949efa604ec402', 0x8abe],
453
+ ['8742940fcbdbd65aeff1566c1889ece7', 0x8abe],
454
+ ['23e6ef0ecc7bbe8e9465b0b40e901c0d', 0x5393],
455
+ ['5a69785acb47d746fd1ae98bd511db81', 0x5393],
456
+ ['392b8afa18046fc06398b32a42641889', 0x4f60],
457
+ ['7ff2c821d31ef0ca7e9c430f3e659d46', 0x4f60],
458
+ ['44d8b7aacbfc1fc4c32d6526ab8012ee', 0x7960],
459
+ ['c9486b883ab870fc02e7a1f189454f49', 0x7960],
460
+ ['62e7447a02f797cf287a7a758d66563b', 0x64f2],
461
+ ['7d767d2518431dd61e631941dea6bb5e', 0x64f2],
462
+ ['914fa35485d5016adc8b799b0cb5e978', 0x53e3],
463
+ ['d50802fc331261feed1a140f3b70c4b3', 0x53e3],
464
+ ['eeff4833bdfc34b1cbfe6a9d98f38cb5', 0x53e3],
465
+ ['a6d6aaeaf5505676111390a52fa6be51', 0x66b2],
466
+ ['bc534a1accc68d8876e9d47ad8d4b489', 0x66b2],
467
+ ['b5e8cb114ccad281bcb4d86768d509df', 0x9288],
468
+ ['d2c0ab0242ae4ad8a08bffa71613a1a7', 0x9288],
469
+ ['f09031463933b2892be7ebbc501269d0', 0x8559],
470
+ ['f1378529fe66a7f655031d7f5b8c4eb5', 0x8559],
471
+ ['6b696a5ae7634c454aaa7dd833fdfaf9', 0x7737],
472
+ ['5012d099f110e5e7c0df78528686ae07', 0x69ae],
473
+ ['bf27e95238dd789b05e38d56dc41cbf7', 0x5d53],
474
+ ['1d2eafa6be36dc6152cb1917cd2ac486', 0x6c0f],
475
+ ['8b1bd5636f709dfd6a95da9f463729c3', 0x67c0],
476
+ ['0b49a77f459cf3783c5bac37a80518c5', 0x4efd],
477
+ ['8d1ba0e24b619cb4d377ddb7adb3e6fa', 0x55bc],
478
+ ['dab4c329f3c540192f758a2e0008d275', 0x939a],
479
+ ['5b6c90ad3012bfbbc2450b5ab930484d', 0x7fdf],
480
+ ['7eb78d5654f8335d0b1cf4cf78872097', 0x912d],
481
+ ['c3852ea003683f2866abd56140fb5d84', 0x9306],
482
+ ['a78b8a79d8a32c925776c82955d168cc', 0x90ed],
483
+ ['b6e773b060fdd575bc965369d509f4e0', 0x7149],
484
+ ['6d981a3b846347e2b3c9ca4d13794834', 0x6852],
485
+ ['d0ed8ffbc229f84dd796cdd6de36d2e4', 0x40ef],
486
+ ['d9aff359058ab474d552ce52e5a71ec8', 0x537f],
487
+ ['5417381484172c1607d7ca60765b62d2', 0x8755],
488
+ ['b309cd2c649ce3ef6ea0ad2f5fc655cc', 0x9019],
489
+ ['2a349ac3d6b94a8a64d904083fdd5c02', 0x8fbf],
490
+ ['0632283bfd909ef205b1f950e2b00f16', 0x9751],
491
+ ['d91c5a40619510b21610f523f9434269', 0x6df8],
492
+ ['8dc47c6e65beb788da7ed9efd59f0934', 0x8cb7],
493
+ ['e28d4c57d97fbe4a0d67aec2cc92e7c8', 0x6365],
494
+ ['9374173a2e4b7f1dcac75eccd5ee7e7f', 0x698a],
495
+ ['ec7b2c805a5ba3d52c281ee2296b94d7', 0x8523],
496
+ ['dedbee40c06e17b51932431dc8cd8334', 0x8fc2], // denpa: 一点しんにょうの「迂」。2026-10-10 時点の録画 58 本で表に無かったもの
497
+ ['e806d1481cfa721da5f60413531f39bd', 0x1f4f1], // denpa: 携帯電話 📱 (36x36・4階調)。NHK総合 2026-10-11。録画 20 本 (字幕に字のあったのは 9 本) で表に無かったのはこれだけ
498
+ ['d9b5d861024ce112c12fa5f155bb1af3', 0x1f50a], // denpa: 音の出ているスピーカー 🔊 (36x36・4階調)。テレビ朝日 2026-10-17 のアニメの字幕で1本に5回
499
+ ['d1e6371a34eaf49154ea6a4d0e9064ac', 0x1f50a], // denpa: 音の出ているスピーカー 🔊。TBS 2026-10 のアニメの字幕で1本に22回 (テレビ朝日のものと画像が違う)
500
+ ['22db8ff6ac75b60b76a15a6e9c42a5db', 0x1f4fa], // denpa: テレビ 📺。上と同じ番組で2回
501
+ ]);
@@ -0,0 +1,102 @@
1
+ /**
2
+ * 放送の字幕 (ARIB STD-B24 の字幕文) をデコードして、**字の置き場所まで決める** ([caption-text.ts](caption-text.ts))。
3
+ *
4
+ * libaribcaption の「デコードする (decoder)」側を写したもの — 置き場所・大きさ・色・外字の置き換えまでは
5
+ * 同じ計算で、描く (renderer) 手前で止める。描くのは受け側 (ブラウザ・アプリ)。
6
+ *
7
+ * 写したのは日本の放送で要るところだけ: 8単位符号 (JIS)・Profile A (フルセグ)。言語は1つを選んで読む
8
+ * (既定は第1言語。`new B24CaptionDecoder(2)` で第2言語)。
9
+ * ブラジルの Latin・UTF-8・ワンセグ (Profile C) は持たない。
10
+ *
11
+ * ## libaribcaption と違えたところ
12
+ *
13
+ * - **字幕管理データの「送り直し」の見分け。** あちらは群 (A/B) を `(id & 0xF0) >> 8` で
14
+ * 取っていて常に 0 になり、最初の1回しか読まない。ここは群を正しく見る
15
+ * (番組が変わって群が替わったときに書式を読み直す)
16
+ * - **点滅 (FLC) を読み取る。** あちらは読み捨てている
17
+ * - **JIS X 0213 を最後まで読む。** JIS互換漢字2面 (0x3A) を2面の表で、1面 (0x39) の 85〜94区を
18
+ * 第3水準の漢字で引く。か゚ のような2つのコードポイントの字も出す (あちらは空き)
19
+ * - **表で空いている点 (U+FFFD) はゲタ (〓) にする。** 「�」は Denpa Font に無く、端末の字の
20
+ * 「?」の印で出る。定義されていない外字と同じ扱い
21
+ *
22
+ * 入力は字幕の PES の中身 (データ識別 0x80 から)。ffmpeg が `-c:s copy` で Matroska
23
+ * (`S_ARIBSUB`) に入れたコマの中身がそのままこれになる。
24
+ */
25
+ import { type CaptionLanguage, type CaptionPage } from "./caption-text.js";
26
+ /**
27
+ * 字幕のストリーム1本ぶんのデコーダ。**状態を持つ** (書式・位置・色・外字は字幕文を跨いで続く) ので、
28
+ * ストリームごとに1つ作って、届いた順に食わせる。
29
+ *
30
+ * **読むのは1つの言語だけ** (`language`。1〜8)。言語ごとに書式も位置も別に続くので、2つの言語を出し分けるなら
31
+ * 言語ごとに1つ作って、同じコマを両方に食わせる (denpa の `server/captions.ts` の `CaptionText`)
32
+ */
33
+ export declare class B24CaptionDecoder {
34
+ readonly language: number;
35
+ /** 字幕管理データに書いてある言語。まだ届いていなければ空 */
36
+ languages: CaptionLanguage[];
37
+ private gx;
38
+ private gl;
39
+ private gr;
40
+ private readonly drcsMaps;
41
+ private prevGroup;
42
+ private swf;
43
+ private planeWidth;
44
+ private planeHeight;
45
+ private areaWidth;
46
+ private areaHeight;
47
+ private areaX;
48
+ private areaY;
49
+ private posInited;
50
+ private posX;
51
+ private posY;
52
+ private charWidth;
53
+ private charHeight;
54
+ private hSpacing;
55
+ private vSpacing;
56
+ private hScale;
57
+ private vScale;
58
+ private underline;
59
+ private bold;
60
+ private italic;
61
+ private stroke;
62
+ private box;
63
+ private flash;
64
+ private palette;
65
+ private fg;
66
+ private bg;
67
+ private caption;
68
+ /** @param language 読む言語 (1〜8。データグループの番号) */
69
+ constructor(language?: number);
70
+ /**
71
+ * 字幕の PES の中身を1つ食わせる。
72
+ *
73
+ * @returns 出す1枚。出すものが無ければ (字幕管理データ・送り直し・待ちだけの字幕文) null
74
+ */
75
+ decode(data: Uint8Array): CaptionPage | null;
76
+ private resetGraphicSets;
77
+ /** 書式 (SWF) に合わせた面と字の大きさ。Profile A の表 */
78
+ private resetWritingFormat;
79
+ private resetState;
80
+ private management;
81
+ private statement;
82
+ private dataUnits;
83
+ /** 本文。**読めないところで止める** (そこまでの字は出す。libaribcaption と同じ) */
84
+ private body;
85
+ private defineDrcs;
86
+ /** @returns 使ったバイト数。0 なら読めない */
87
+ private c0;
88
+ private escape;
89
+ private c1;
90
+ private csi;
91
+ /** 中くらい (MSZ) か。半角へ寄せる見分けに使う */
92
+ private msz;
93
+ private graphic;
94
+ private push;
95
+ private sectionWidth;
96
+ private sectionHeight;
97
+ private setAbsolute;
98
+ private moveRelative;
99
+ private newline;
100
+ }
101
+ /** 字幕の PES の中身が字幕管理データか (データグループの番号が 0)。読めないものは false */
102
+ export declare function isManagement(data: Uint8Array): boolean;