@@ -154,12 +154,17 @@ export function unicodeToBes(unicode: string): Uint8Array {
154154 letters_on_page += 1 ;
155155 }
156156 output . push ( 0xdc ) ;
157- num = mapping_num [ String ( pages + 1 ) ] ;
158- num_codePoint = num . codePointAt ( 0 ) ;
159- if ( num_codePoint != null ) {
160- output . push ( num_codePoint - 0x2800 + 0xa0 ) ;
157+ letters_on_page += 1 ;
158+ const num_str = String ( pages + 1 ) ;
159+ for ( var i = 0 ; i < num_str . length ; i ++ ) {
160+ num = mapping_num [ num_str [ i ] ] ;
161+ console . log ( i , num_str , num ) ;
162+ num_codePoint = num . codePointAt ( 0 ) ;
163+ if ( num_codePoint != null ) {
164+ output . push ( num_codePoint - 0x2800 + 0xa0 ) ;
165+ }
166+ letters_on_page += 1 ;
161167 }
162- letters_on_page += 2 ;
163168 output . push ( 0xfe ) ;
164169 }
165170 if ( letters === 33 ) {
@@ -178,6 +183,7 @@ export function unicodeToBes(unicode: string): Uint8Array {
178183 // ページをまたぐとき
179184 lines = 0 ;
180185 pages += 1 ;
186+ // 次ページに移った文字数を引く
181187 letters_on_page = letters_on_page - letters ;
182188 letters_num = 0x19 + letters_on_page ;
183189 output [ num_pos ] = ( letters_num % 255 ) - Math . floor ( letters_num / 255 ) ;
@@ -194,13 +200,21 @@ export function unicodeToBes(unicode: string): Uint8Array {
194200 letters_on_page += 1 ;
195201 }
196202 output . splice ( separate_pos + 31 , 0 , 0xdc ) ;
197- num = mapping_num [ String ( pages + 1 ) ] ;
198- num_codePoint = num . codePointAt ( 0 ) ;
199- if ( num_codePoint != null ) {
200- output . splice ( separate_pos + 32 , 0 , num_codePoint - 0x2800 + 0xa0 ) ;
203+ letters_on_page += 1 ;
204+ const num_str = String ( pages + 1 ) ;
205+ for ( var i = 0 ; i < num_str . length ; i ++ ) {
206+ num = mapping_num [ num_str [ i ] ] ;
207+ num_codePoint = num . codePointAt ( 0 ) ;
208+ if ( num_codePoint != null ) {
209+ output . splice (
210+ separate_pos + 32 + i ,
211+ 0 ,
212+ num_codePoint - 0x2800 + 0xa0 ,
213+ ) ;
214+ }
215+ letters_on_page += 1 ;
201216 }
202- letters_on_page += 2 ;
203- output . splice ( separate_pos + 33 , 0 , 0xfe ) ;
217+ output . splice ( separate_pos + 32 + num_str . length , 0 , 0xfe ) ;
204218 }
205219 }
206220
@@ -214,7 +228,7 @@ export function unicodeToBes(unicode: string): Uint8Array {
214228 letters_on_page += 1 ;
215229 }
216230 }
217- if ( char == "n" ) {
231+ if ( char === "n" ) {
218232 // "\n"で改行
219233 output . push ( 0x0d ) ;
220234 letters_on_page += 1 ;
@@ -223,20 +237,20 @@ export function unicodeToBes(unicode: string): Uint8Array {
223237 letters = 0 ;
224238 }
225239 }
226- output [ 31 ] = 0x30 + pages ;
240+
241+ if ( pages < 10 ) {
242+ output [ 31 ] = 0x30 + pages ;
243+ } else {
244+ output [ 31 ] = 0x30 + Math . floor ( pages / 10 ) ;
245+ output [ 32 ] = 0x30 + ( pages % 10 ) ;
246+ }
247+
227248 for ( var i = 0 ; i + lines < 21 ; i ++ ) {
228249 output . push ( 0xfe ) ;
229250 }
230251 output . push ( 0xff ) ;
231252
232253 letters_num = 0x19 + letters_on_page ;
233- console . log (
234- "Page: " ,
235- pages ,
236- num_pos ,
237- letters_num % 255 ,
238- Math . floor ( letters_num / 255 ) ,
239- ) ;
240254 output [ num_pos ] = letters_num % 255 ;
241255 output [ num_pos + 1 ] = Math . floor ( letters_num / 255 ) ;
242256
0 commit comments