Mercurial > emacs
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. |