comparison lisp/international/utf-8.el @ 52725:dd3cff7e93d7

(ccl-decode-mule-utf-8): Lookup utf-subst-table-for-decode even for U+E000..U+FFFF.
author Kenichi Handa <handa@m17n.org>
date Thu, 02 Oct 2003 00:49:04 +0000
parents f5d5daea4d3c
children d61b01de8cdf
comparison
equal deleted inserted replaced
52724:22bb6971e35f 52725:dd3cff7e93d7
446 (r3 = r6)) 446 (r3 = r6))
447 (write-multibyte-character r3 r2)) 447 (write-multibyte-character r3 r2))
448 448
449 ;; mule-unicode-e000-ffff 449 ;; mule-unicode-e000-ffff
450 ;; Fixme: fffe and ffff are invalid. 450 ;; Fixme: fffe and ffff are invalid.
451 ((r0 = ,(charset-id 'mule-unicode-e000-ffff)) 451 ((r4 = r3) ; don't zap r3
452 (r3 -= #xe000) 452 (lookup-integer utf-subst-table-for-decode r4 r5)
453 (r3 //= 96) 453 (if r7
454 (r1 = (r7 + 32)) 454 ;; got a translation
455 (r1 += ((r3 + 32) << 7)) 455 ((write-multibyte-character r4 r5)
456 (write-multibyte-character r0 r1))))))))) 456 ;; Zapped through register starvation.
457 (r5 = ,(charset-id 'eight-bit-control)))
458 ((r0 = ,(charset-id 'mule-unicode-e000-ffff))
459 (r3 -= #xe000)
460 (r3 //= 96)
461 (r1 = (r7 + 32))
462 (r1 += ((r3 + 32) << 7))
463 (write-multibyte-character r0 r1)))))))))))
457 464
458 (if (r0 < #xfe) 465 (if (r0 < #xfe)
459 ;; 4byte encoding 466 ;; 4byte encoding
460 ;; keep those bytes as eight-bit-{control|graphic} 467 ;; keep those bytes as eight-bit-{control|graphic}
461 ;; Fixme: allow lookup in utf-subst-table-for-decode. 468 ;; Fixme: allow lookup in utf-subst-table-for-decode.