mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-02-06 20:49:33 +00:00
Call define-coding-system instead of make-coding-system. All CCL program deleted.
This commit is contained in:
parent
c184177262
commit
e1915ab396
@ -33,47 +33,50 @@
|
||||
;;; Chinese (general)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(make-coding-system
|
||||
'iso-2022-cn 2 ?C
|
||||
(define-coding-system 'iso-2022-cn
|
||||
"ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN)."
|
||||
'(ascii
|
||||
(nil chinese-gb2312 chinese-cns11643-1)
|
||||
(nil chinese-cns11643-2)
|
||||
nil
|
||||
nil ascii-eol ascii-cntl seven locking-shift single-shift nil nil nil
|
||||
init-bol)
|
||||
'((safe-charsets ascii chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2)
|
||||
(mime-charset . iso-2022-cn)))
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?C
|
||||
:charset-list '(ascii chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2)
|
||||
:designation [ascii
|
||||
(nil chinese-gb2312 chinese-cns11643-1)
|
||||
(nil chinese-cns11643-2)
|
||||
nil]
|
||||
:flags '(ascii-at-eol ascii-at-cntl 7-bit
|
||||
designation locking-shift single-shift init-at-bol)
|
||||
:plist '(mime-charset . iso-2022-cn))
|
||||
|
||||
(define-coding-system-alias 'chinese-iso-7bit 'iso-2022-cn)
|
||||
|
||||
(make-coding-system
|
||||
'iso-2022-cn-ext 2 ?C
|
||||
"ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN-EXT)."
|
||||
'(ascii
|
||||
(nil chinese-gb2312 chinese-cns11643-1)
|
||||
(nil chinese-cns11643-2)
|
||||
(nil chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5
|
||||
chinese-cns11643-6 chinese-cns11643-7)
|
||||
nil ascii-eol ascii-cntl seven locking-shift single-shift nil nil nil
|
||||
init-bol)
|
||||
'((safe-charsets ascii chinese-gb2312 chinese-cns11643-1 chinese-cns11643-2
|
||||
chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5
|
||||
chinese-cns11643-6 chinese-cns11643-7)
|
||||
(mime-charset . iso-2022-cn-ext)))
|
||||
(define-coding-system 'iso-2022-cn-ext
|
||||
"ISO 2022 based 7bit encoding for Chinese GB and CNS (MIME:ISO-2022-CN-EXT)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?C
|
||||
:charset-list '(ascii
|
||||
chinese-gb2312 chinese-cns11643-1
|
||||
chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4
|
||||
chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7)
|
||||
:designation '[ascii
|
||||
(nil chinese-gb2312 chinese-cns11643-1)
|
||||
(nil chinese-cns11643-2)
|
||||
(nil chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5
|
||||
chinese-cns11643-6 chinese-cns11643-7)]
|
||||
:flags '(ascii-at-eol ascii-at-cntl 7-bit
|
||||
designation locking-shift single-shift init-at-bol)
|
||||
:plist '(mime-charset iso-2022-cn-ext))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Chinese GB2312 (simplified)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(make-coding-system
|
||||
'chinese-iso-8bit 2 ?c
|
||||
"ISO 2022 based EUC encoding for Chinese GB2312 (MIME:GB2312)."
|
||||
'(ascii chinese-gb2312 nil nil
|
||||
nil ascii-eol ascii-cntl nil nil nil nil)
|
||||
'((safe-charsets ascii chinese-gb2312)
|
||||
(mime-charset . gb2312)))
|
||||
(define-coding-system 'chinese-iso-8bit
|
||||
"ISO 2022 based EUC encoding for Chinese GB2312 (MIME:CN-GB)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?c
|
||||
:charset-list '(ascii chinese-gb2312)
|
||||
:designation [ascii chinese-gb2312 nil nil]
|
||||
:plist '(mime-charset cn-gb))
|
||||
|
||||
(define-coding-system-alias 'cn-gb-2312 'chinese-iso-8bit)
|
||||
(define-coding-system-alias 'euc-china 'chinese-iso-8bit)
|
||||
@ -81,14 +84,14 @@
|
||||
(define-coding-system-alias 'cn-gb 'chinese-iso-8bit)
|
||||
(define-coding-system-alias 'gb2312 'chinese-iso-8bit)
|
||||
|
||||
(make-coding-system
|
||||
'chinese-hz 0 ?z
|
||||
(define-coding-system 'chinese-hz
|
||||
"Hz/ZW 7-bit encoding for Chinese GB2312 (MIME:HZ-GB-2312)."
|
||||
nil
|
||||
'((safe-charsets ascii chinese-gb2312)
|
||||
(mime-charset . hz-gb-2312)
|
||||
(post-read-conversion . post-read-decode-hz)
|
||||
(pre-write-conversion . pre-write-encode-hz)))
|
||||
:coding-type 'utf-8
|
||||
:mnemonic ?z
|
||||
:charset-list '(ascii chinese-gb2312)
|
||||
:plist '(mime-charset hz-gb-2312)
|
||||
:post-read-conversion 'post-read-decode-hz
|
||||
:pre-write-conversion 'pre-write-encode-hz)
|
||||
|
||||
(define-coding-system-alias 'hz-gb-2312 'chinese-hz)
|
||||
(define-coding-system-alias 'hz 'chinese-hz)
|
||||
@ -125,36 +128,16 @@
|
||||
;; Chinese BIG5 (traditional)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(make-coding-system
|
||||
'chinese-big5 3 ?B
|
||||
"BIG5 8-bit encoding for Chinese (MIME:Big5)."
|
||||
nil
|
||||
'((safe-charsets ascii chinese-big5-1 chinese-big5-2)
|
||||
(mime-charset . big5)
|
||||
(charset-origin-alist (chinese-big5-1 "BIG5" encode-big5-char)
|
||||
(chinese-big5-2 "BIG5" encode-big5-char))))
|
||||
(define-coding-system 'chinese-big5
|
||||
"BIG5 8-bit encoding for Chinese (MIME:Big5)"
|
||||
:coding-type 'big5
|
||||
:mnemonic ?B
|
||||
:charset-list '(ascii big5)
|
||||
:plist '(mime-charset big5))
|
||||
|
||||
(define-coding-system-alias 'big5 'chinese-big5)
|
||||
(define-coding-system-alias 'cn-big5 'chinese-big5)
|
||||
|
||||
;; Big5 font requires special encoding.
|
||||
(define-ccl-program ccl-encode-big5-font
|
||||
`(0
|
||||
;; In: R0:chinese-big5-1 or chinese-big5-2
|
||||
;; R1:position code 1
|
||||
;; R2:position code 2
|
||||
;; Out: R1:font code point 1
|
||||
;; R2:font code point 2
|
||||
((r2 = ((((r1 - ?\x21) * 94) + r2) - ?\x21))
|
||||
(if (r0 == ,(charset-id 'chinese-big5-2)) (r2 += 6280))
|
||||
(r1 = ((r2 / 157) + ?\xA1))
|
||||
(r2 %= 157)
|
||||
(if (r2 < ?\x3F) (r2 += ?\x40) (r2 += ?\x62))))
|
||||
"CCL program to encode a Big5 code to code point of Big5 font.")
|
||||
|
||||
(setq font-ccl-encoder-alist
|
||||
(cons (cons "big5" ccl-encode-big5-font) font-ccl-encoder-alist))
|
||||
|
||||
(set-language-info-alist
|
||||
"Chinese-BIG5" '((charset chinese-big5-1 chinese-big5-2)
|
||||
(coding-system chinese-big5 chinese-iso-7bit)
|
||||
@ -169,144 +152,26 @@
|
||||
;; Chinese CNS11643 (traditional)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defvar big5-to-cns (make-translation-table)
|
||||
"Translation table for encoding to `euc-tw'.")
|
||||
;; Could have been done by china-util loaded before.
|
||||
(unless (get 'big5-to-cns 'translation-table)
|
||||
(define-translation-table 'big5-to-cns big5-to-cns))
|
||||
|
||||
(define-ccl-program ccl-decode-euc-tw
|
||||
;; CNS plane 1 needs either two or four bytes in EUC-TW encoding;
|
||||
;; CNS planes 2 to 7 always need four bytes. In internal encoding of
|
||||
;; Emacs, CNS planes 1 and 2 need three bytes, and planes 3 to 7 need
|
||||
;; four bytes. Thus a buffer magnification value of 2 (for both
|
||||
;; encoding and decoding) is sufficient.
|
||||
`(2
|
||||
;; we don't have enough registers to hold all charset-ids
|
||||
((r4 = ,(charset-id 'chinese-cns11643-1))
|
||||
(r5 = ,(charset-id 'chinese-cns11643-2))
|
||||
(r6 = ,(charset-id 'chinese-cns11643-3))
|
||||
(loop
|
||||
(read-if (r0 < #x80)
|
||||
;; ASCII
|
||||
(write-repeat r0)
|
||||
;; not ASCII
|
||||
(if (r0 == #x8E)
|
||||
;; single shift
|
||||
(read-if (r1 < #xA1)
|
||||
;; invalid byte
|
||||
((write r0)
|
||||
(write-repeat r1))
|
||||
(if (r1 > #xA7)
|
||||
;; invalid plane
|
||||
((write r0)
|
||||
(write-repeat r1))
|
||||
;; OK, we have a plane
|
||||
(read-if (r2 < #xA1)
|
||||
;; invalid first byte
|
||||
((write r0 r1)
|
||||
(write-repeat r2))
|
||||
(read-if (r3 < #xA1)
|
||||
;; invalid second byte
|
||||
((write r0 r1 r2)
|
||||
(write-repeat r3))
|
||||
;; CNS 1-7, finally
|
||||
((branch (r1 - #xA1)
|
||||
(r1 = r4)
|
||||
(r1 = r5)
|
||||
(r1 = r6)
|
||||
(r1 = ,(charset-id 'chinese-cns11643-4))
|
||||
(r1 = ,(charset-id 'chinese-cns11643-5))
|
||||
(r1 = ,(charset-id 'chinese-cns11643-6))
|
||||
(r1 = ,(charset-id 'chinese-cns11643-7)))
|
||||
(r2 = ((((r2 - #x80) << 7) + r3) - #x80))
|
||||
(write-multibyte-character r1 r2)
|
||||
(repeat))))))
|
||||
;; standard EUC
|
||||
(if (r0 < #xA1)
|
||||
;; invalid first byte
|
||||
(write-repeat r0)
|
||||
(read-if (r1 < #xA1)
|
||||
;; invalid second byte
|
||||
((write r0)
|
||||
(write-repeat r1))
|
||||
;; CNS 1, finally
|
||||
((r1 = ((((r0 - #x80) << 7) + r1) - #x80))
|
||||
(write-multibyte-character r4 r1)
|
||||
(repeat)))))))))
|
||||
"CCL program to decode EUC-TW encoding."
|
||||
)
|
||||
|
||||
(define-ccl-program ccl-encode-euc-tw
|
||||
`(2
|
||||
;; we don't have enough registers to hold all charset-ids
|
||||
((r2 = ,(charset-id 'ascii))
|
||||
(r3 = ,(charset-id 'chinese-big5-1))
|
||||
(r4 = ,(charset-id 'chinese-big5-2))
|
||||
(r5 = ,(charset-id 'chinese-cns11643-1))
|
||||
(r6 = ,(charset-id 'chinese-cns11643-2))
|
||||
(loop
|
||||
(read-multibyte-character r0 r1)
|
||||
(if (r0 == r2)
|
||||
(write-repeat r1)
|
||||
(;; Big 5 encoded characters are first translated to CNS
|
||||
(if (r0 == r3)
|
||||
(translate-character big5-to-cns r0 r1)
|
||||
(if (r0 == r4)
|
||||
(translate-character big5-to-cns r0 r1)))
|
||||
(if (r0 == r5)
|
||||
(r0 = #xA1)
|
||||
(if (r0 == r6)
|
||||
(r0 = #xA2)
|
||||
(if (r0 == ,(charset-id 'chinese-cns11643-3))
|
||||
(r0 = #xA3)
|
||||
(if (r0 == ,(charset-id 'chinese-cns11643-4))
|
||||
(r0 = #xA4)
|
||||
(if (r0 == ,(charset-id 'chinese-cns11643-5))
|
||||
(r0 = #xA5)
|
||||
(if (r0 == ,(charset-id 'chinese-cns11643-6))
|
||||
(r0 = #xA6)
|
||||
(if (r0 == ,(charset-id 'chinese-cns11643-7))
|
||||
(r0 = #xA7)
|
||||
;; not CNS. We use a dummy character which
|
||||
;; can't occur in EUC-TW encoding to indicate
|
||||
;; this.
|
||||
(write-repeat #xFF))))))))))
|
||||
(if (r0 != #xA1)
|
||||
;; single shift and CNS plane
|
||||
((write #x8E)
|
||||
(write r0)))
|
||||
(write ((r1 >> 7) + #x80))
|
||||
(write ((r1 % #x80) + #x80))
|
||||
(repeat))))
|
||||
"CCL program to encode EUC-TW encoding."
|
||||
)
|
||||
|
||||
(defun euc-tw-pre-write-conversion (beg end)
|
||||
"Semi-dummy pre-write function effectively to autoload china-util."
|
||||
;; Ensure translation table is loaded.
|
||||
(require 'china-util)
|
||||
;; Don't do this again.
|
||||
(coding-system-put 'euc-tw 'pre-write-conversion nil)
|
||||
nil)
|
||||
|
||||
(make-coding-system
|
||||
'euc-tw 4 ?Z
|
||||
"ISO 2022 based EUC encoding for Chinese CNS11643.
|
||||
Big5 encoding is accepted for input also (which is then converted to CNS)."
|
||||
'(ccl-decode-euc-tw . ccl-encode-euc-tw)
|
||||
'((safe-charsets ascii
|
||||
chinese-big5-1
|
||||
chinese-big5-2
|
||||
chinese-cns11643-1
|
||||
chinese-cns11643-2
|
||||
chinese-cns11643-3
|
||||
chinese-cns11643-4
|
||||
chinese-cns11643-5
|
||||
chinese-cns11643-6
|
||||
chinese-cns11643-7)
|
||||
(valid-codes (0 . 255))
|
||||
(pre-write-conversion . euc-tw-pre-write-conversion)))
|
||||
(define-coding-system 'euc-tw
|
||||
"ISO 2022 based EUC encoding for Chinese CNS11643."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?Z
|
||||
:charset-list '(ascii
|
||||
chinese-cns11643-1
|
||||
chinese-cns11643-2
|
||||
chinese-cns11643-3
|
||||
chinese-cns11643-4
|
||||
chinese-cns11643-5
|
||||
chinese-cns11643-6
|
||||
chinese-cns11643-7)
|
||||
:designation [ascii chinese-cns11643-1 (chinese-cns11643-1
|
||||
chinese-cns11643-2
|
||||
chinese-cns11643-3
|
||||
chinese-cns11643-4
|
||||
chinese-cns11643-5
|
||||
chinese-cns11643-6
|
||||
chinese-cns11643-7) nil]
|
||||
:plist '(mime-charset euc-tw))
|
||||
|
||||
(define-coding-system-alias 'euc-taiwan 'euc-tw)
|
||||
|
||||
|
@ -34,22 +34,21 @@
|
||||
|
||||
;; ISO-8859-5 staff
|
||||
|
||||
(make-coding-system
|
||||
'cyrillic-iso-8bit 2 ?5
|
||||
"ISO 2022 based 8-bit encoding for Cyrillic script (MIME:ISO-8859-5)."
|
||||
'(ascii cyrillic-iso8859-5 nil nil
|
||||
nil nil nil nil nil nil nil)
|
||||
'((safe-charsets ascii cyrillic-iso8859-5)
|
||||
(mime-charset . iso-8859-5)))
|
||||
(define-coding-system 'cyrillic-iso-8bit
|
||||
"ISO 2022 based 8-bit encoding for Cyrillic script (MIME:ISO-8859-5)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?5
|
||||
:charset-list '(iso-8859-5)
|
||||
:plist '(mime-charset iso-8859-5))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-5 'cyrillic-iso-8bit)
|
||||
|
||||
(set-language-info-alist
|
||||
"Cyrillic-ISO" '((charset cyrillic-iso8859-5)
|
||||
"Cyrillic-ISO" '((charset iso-8859-5)
|
||||
(coding-system cyrillic-iso-8bit)
|
||||
(coding-priority cyrillic-iso-8bit)
|
||||
(nonascii-translation . iso-8859-5)
|
||||
(input-method . "cyrillic-yawerty")
|
||||
(nonascii-translation . cyrillic-iso8859-5)
|
||||
(unibyte-display . cyrillic-iso-8bit)
|
||||
(features cyril-util)
|
||||
(sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
|
||||
@ -58,91 +57,24 @@
|
||||
|
||||
;; KOI-8 staff
|
||||
|
||||
(defvar cyrillic-koi8-r-decode-table
|
||||
[
|
||||
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
||||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
||||
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
||||
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
||||
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
||||
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
||||
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
||||
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
||||
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
||||
160 161 162 ?,Lq(B 164 165 166 167 168 169 170 171 172 173 174 175
|
||||
176 177 178 ?,L!(B 180 181 182 183 184 185 186 187 188 189 190 191
|
||||
?,Ln(B ?,LP(B ?,LQ(B ?,Lf(B ?,LT(B ?,LU(B ?,Ld(B ?,LS(B ?,Le(B ?,LX(B ?,LY(B ?,LZ(B ?,L[(B ?,L\(B ?,L](B ?,L^(B
|
||||
?,L_(B ?,Lo(B ?,L`(B ?,La(B ?,Lb(B ?,Lc(B ?,LV(B ?,LR(B ?,Ll(B ?,Lk(B ?,LW(B ?,Lh(B ?,Lm(B ?,Li(B ?,Lg(B ?,Lj(B
|
||||
?,LN(B ?,L0(B ?,L1(B ?,LF(B ?,L4(B ?,L5(B ?,LD(B ?,L3(B ?,LE(B ?,L8(B ?,L9(B ?,L:(B ?,L;(B ?,L<(B ?,L=(B ?,L>(B
|
||||
?,L?(B ?,LO(B ?,L@(B ?,LA(B ?,LB(B ?,LC(B ?,L6(B ?,L2(B ?,LL(B ?,LK(B ?,L7(B ?,LH(B ?,LM(B ?,LI(B ?,LG(B ?,LJ(B ]
|
||||
"Cyrillic KOI8-R decoding table.")
|
||||
|
||||
(let ((table (make-translation-table-from-vector
|
||||
cyrillic-koi8-r-decode-table)))
|
||||
(define-translation-table 'cyrillic-koi8-r-nonascii-translation-table table)
|
||||
(define-translation-table 'cyrillic-koi8-r-encode-table
|
||||
(char-table-extra-slot table 0)))
|
||||
|
||||
(define-ccl-program ccl-decode-koi8
|
||||
`(3
|
||||
((loop
|
||||
(r0 = 0)
|
||||
(read r1)
|
||||
(if (r1 < 128)
|
||||
(write-repeat r1)
|
||||
((translate-character cyrillic-koi8-r-nonascii-translation-table r0 r1)
|
||||
(write-multibyte-character r0 r1)
|
||||
(repeat))))))
|
||||
"CCL program to decode KOI8.")
|
||||
|
||||
(define-ccl-program ccl-encode-koi8
|
||||
`(1
|
||||
((loop
|
||||
(read-multibyte-character r0 r1)
|
||||
(if (r0 == ,(charset-id 'cyrillic-iso8859-5))
|
||||
(translate-character cyrillic-koi8-r-encode-table r0 r1))
|
||||
(write-repeat r1))))
|
||||
"CCL program to encode KOI8.")
|
||||
|
||||
(make-coding-system
|
||||
'cyrillic-koi8 4
|
||||
;; We used to use ?K. It is true that ?K is more strictly correct,
|
||||
;; but it is also used for Korean.
|
||||
;; So people who use koi8 for languages other than Russian
|
||||
;; will have to forgive us.
|
||||
?R
|
||||
"KOI8 8-bit encoding for Cyrillic (MIME: KOI8-R)."
|
||||
'(ccl-decode-koi8 . ccl-encode-koi8)
|
||||
`((safe-chars . ,(let ((table (make-char-table 'safe-chars))
|
||||
(i 0))
|
||||
(while (< i 256)
|
||||
(aset table (aref cyrillic-koi8-r-decode-table i) t)
|
||||
(setq i (1+ i)))
|
||||
table))
|
||||
(mime-charset . koi8-r)
|
||||
(valid-codes (0 . 127) 163 179 (192 . 255))
|
||||
(charset-origin-alist (cyrillic-iso8859-5 "KOI8-R"
|
||||
cyrillic-encode-koi8-r-char))))
|
||||
(define-coding-system 'cyrillic-koi8
|
||||
"KOI8 8-bit encoding for Cyrillic (MIME: KOI8-R)."
|
||||
:coding-type 'charset
|
||||
;; We used to use ?K. It is true that ?K is more strictly correct,
|
||||
;; but it is also used for Korean. So people who use koi8 for
|
||||
;; languages other than Russian will have to forgive us.
|
||||
:mnemonic ?R
|
||||
:charset-list '(koi8)
|
||||
:plist '(mime-charset koi8-r))
|
||||
|
||||
(define-coding-system-alias 'koi8-r 'cyrillic-koi8)
|
||||
(define-coding-system-alias 'koi8 'cyrillic-koi8)
|
||||
|
||||
(define-ccl-program ccl-encode-koi8-font
|
||||
`(0
|
||||
((translate-character cyrillic-koi8-r-encode-table r0 r1)))
|
||||
"CCL program to encode Cyrillic chars to KOI font.")
|
||||
|
||||
(setq font-ccl-encoder-alist
|
||||
(cons '("koi8" . ccl-encode-koi8-font) font-ccl-encoder-alist))
|
||||
|
||||
(set-language-info-alist
|
||||
"Cyrillic-KOI8" `((charset cyrillic-iso8859-5)
|
||||
(nonascii-translation
|
||||
. ,(get 'cyrillic-koi8-r-nonascii-translation-table
|
||||
'translation-table))
|
||||
"Cyrillic-KOI8" `((charset koi8)
|
||||
(coding-system cyrillic-koi8)
|
||||
(coding-priority cyrillic-koi8)
|
||||
(nonascii-translation . koi8)
|
||||
(input-method . "cyrillic-jcuken")
|
||||
(features cyril-util)
|
||||
(unibyte-display . cyrillic-koi8)
|
||||
@ -152,89 +84,19 @@
|
||||
|
||||
;;; ALTERNATIVNYJ staff
|
||||
|
||||
(defvar cyrillic-alternativnyj-decode-table
|
||||
[
|
||||
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
||||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
||||
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
||||
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
||||
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
||||
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
||||
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
||||
?,L0(B ?,L1(B ?,L2(B ?,L3(B ?,L4(B ?,L5(B ?,L6(B ?,L7(B ?,L8(B ?,L9(B ?,L:(B ?,L;(B ?,L<(B ?,L=(B ?,L>(B ?,L?(B
|
||||
?,L@(B ?,LA(B ?,LB(B ?,LC(B ?,LD(B ?,LE(B ?,LF(B ?,LG(B ?,LH(B ?,LI(B ?,LJ(B ?,LK(B ?,LL(B ?,LM(B ?,LN(B ?,LO(B
|
||||
?,LP(B ?,LQ(B ?,LR(B ?,LS(B ?,LT(B ?,LU(B ?,LV(B ?,LW(B ?,LX(B ?,LY(B ?,LZ(B ?,L[(B ?,L\(B ?,L](B ?,L^(B ?,L_(B
|
||||
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
||||
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
|
||||
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
|
||||
?,L`(B ?,La(B ?,Lb(B ?,Lc(B ?,Ld(B ?,Le(B ?,Lf(B ?,Lg(B ?,Lh(B ?,Li(B ?,Lj(B ?,Lk(B ?,Ll(B ?,Lm(B ?,Ln(B ?,Lo(B
|
||||
?,L!(B ?,Lq(B 242 243 244 245 246 247 248 249 250 251 252 253 254 ?,Lp(B]
|
||||
"Cyrillic ALTERNATIVNYJ decoding table.")
|
||||
|
||||
(let ((table (make-translation-table-from-vector
|
||||
cyrillic-alternativnyj-decode-table)))
|
||||
(define-translation-table 'cyrillic-alternativnyj-nonascii-translation-table
|
||||
table)
|
||||
(define-translation-table 'cyrillic-alternativnyj-encode-table
|
||||
(char-table-extra-slot table 0)))
|
||||
|
||||
|
||||
(define-ccl-program ccl-decode-alternativnyj
|
||||
`(3
|
||||
((loop
|
||||
(r0 = 0)
|
||||
(read r1)
|
||||
(if (r1 < 128)
|
||||
(write-repeat r1)
|
||||
((translate-character cyrillic-alternativnyj-nonascii-translation-table
|
||||
r0 r1)
|
||||
(write-multibyte-character r0 r1)
|
||||
(repeat))))))
|
||||
"CCL program to decode Alternativnyj.")
|
||||
|
||||
(define-ccl-program ccl-encode-alternativnyj
|
||||
`(1
|
||||
((loop
|
||||
(read-multibyte-character r0 r1)
|
||||
(translate-character cyrillic-alternativnyj-encode-table r0 r1)
|
||||
(write-repeat r1))))
|
||||
"CCL program to encode Alternativnyj.")
|
||||
|
||||
(make-coding-system
|
||||
'cyrillic-alternativnyj 4 ?A
|
||||
"ALTERNATIVNYJ 8-bit encoding for Cyrillic."
|
||||
'(ccl-decode-alternativnyj . ccl-encode-alternativnyj)
|
||||
`((safe-chars . ,(let ((table (make-char-table 'safe-chars))
|
||||
(i 0))
|
||||
(while (< i 256)
|
||||
(aset table (aref cyrillic-alternativnyj-decode-table i)
|
||||
t)
|
||||
(setq i (1+ i)))
|
||||
table))
|
||||
(valid-codes (0 . 175) (224 . 241) 255)
|
||||
(charset-origin-alist (cyrillic-iso8859-5 "ALTERNATIVNYJ"
|
||||
cyrillic-encode-koi8-r-char))))
|
||||
|
||||
(define-coding-system 'cyrillic-alternativnyj
|
||||
"ALTERNATIVNYJ 8-bit encoding for Cyrillic."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?A
|
||||
:charset-list '(alternativnyj))
|
||||
|
||||
(define-coding-system-alias 'alternativnyj 'cyrillic-alternativnyj)
|
||||
|
||||
(define-ccl-program ccl-encode-alternativnyj-font
|
||||
'(0
|
||||
((translate-character cyrillic-alternativnyj-encode-table r0 r1)))
|
||||
"CCL program to encode Cyrillic chars to Alternativnyj font.")
|
||||
|
||||
(setq font-ccl-encoder-alist
|
||||
(cons '("alternativnyj" . ccl-encode-alternativnyj-font)
|
||||
font-ccl-encoder-alist))
|
||||
|
||||
(set-language-info-alist
|
||||
"Cyrillic-ALT" `((charset cyrillic-iso8859-5)
|
||||
(nonascii-translation
|
||||
. ,(get 'cyrillic-alternativnyj-nonascii-translation-table
|
||||
'translation-table))
|
||||
"Cyrillic-ALT" `((charset alternativnyj)
|
||||
(coding-system cyrillic-alternativnyj)
|
||||
(coding-priority cyrillic-alternativnyj)
|
||||
(nonascii-translation . alternativnyj)
|
||||
(input-method . "cyrillic-jcuken")
|
||||
(features cyril-util)
|
||||
(unibyte-display . cyrillic-alternativnyj)
|
||||
|
@ -32,22 +32,11 @@
|
||||
|
||||
;; Latin-1 (ISO-8859-1)
|
||||
|
||||
(make-coding-system
|
||||
'iso-latin-1 2 ?1
|
||||
"ISO 2022 based 8-bit encoding for Latin-1 (MIME:ISO-8859-1)."
|
||||
'(ascii latin-iso8859-1 nil nil
|
||||
nil nil nil nil nil nil nil nil nil nil nil nil t)
|
||||
'((safe-charsets ascii latin-iso8859-1)
|
||||
(mime-charset . iso-8859-1)))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-1 'iso-latin-1)
|
||||
(define-coding-system-alias 'latin-1 'iso-latin-1)
|
||||
|
||||
(set-language-info-alist
|
||||
"Latin-1" '((charset ascii latin-iso8859-1)
|
||||
"Latin-1" '((charset iso-8859-1)
|
||||
(coding-system iso-latin-1)
|
||||
(coding-priority iso-latin-1)
|
||||
(nonascii-translation . latin-iso8859-1)
|
||||
(nonascii-translation . iso-8859-1)
|
||||
(unibyte-syntax . "latin-1")
|
||||
(unibyte-display . iso-latin-1)
|
||||
(input-method . "latin-1-prefix")
|
||||
@ -74,22 +63,21 @@ Indonesian/Malay, Tagalog (Philippines), Swahili and Afrikaans."))
|
||||
|
||||
;; Latin-2 (ISO-8859-2)
|
||||
|
||||
(make-coding-system
|
||||
'iso-latin-2 2 ?2
|
||||
"ISO 2022 based 8-bit encoding for Latin-2 (MIME:ISO-8859-2)."
|
||||
'(ascii latin-iso8859-2 nil nil
|
||||
nil nil nil nil nil nil nil)
|
||||
'((safe-charsets ascii latin-iso8859-2)
|
||||
(mime-charset . iso-8859-2)))
|
||||
(define-coding-system 'iso-latin-2
|
||||
"ISO 2022 based 8-bit encoding for Latin-2 (MIME:ISO-8859-2)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?2
|
||||
:charset-list '(iso-8859-2)
|
||||
:plist '(mime-charset iso-8859-2))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-2 'iso-latin-2)
|
||||
(define-coding-system-alias 'latin-2 'iso-latin-2)
|
||||
|
||||
(set-language-info-alist
|
||||
"Latin-2" '((charset ascii latin-iso8859-2)
|
||||
"Latin-2" '((charset iso-8859-2)
|
||||
(coding-system iso-latin-2)
|
||||
(coding-priority iso-latin-2)
|
||||
(nonascii-translation . latin-iso8859-2)
|
||||
(nonascii-translation . iso-8859-2)
|
||||
(unibyte-syntax . "latin-2")
|
||||
(unibyte-display . iso-latin-2)
|
||||
(input-method . "latin-2-prefix")
|
||||
@ -108,22 +96,21 @@ We also have specific language environments for the following languages:
|
||||
|
||||
;; Latin-3 (ISO-8859-3)
|
||||
|
||||
(make-coding-system
|
||||
'iso-latin-3 2 ?3
|
||||
"ISO 2022 based 8-bit encoding for Latin-3 (MIME:ISO-8859-3)."
|
||||
'(ascii latin-iso8859-3 nil nil
|
||||
nil nil nil nil nil nil nil)
|
||||
'((safe-charsets ascii latin-iso8859-3)
|
||||
(mime-charset . iso-8859-3)))
|
||||
(define-coding-system 'iso-latin-3
|
||||
"ISO 2022 based 8-bit encoding for Latin-3 (MIME:ISO-8859-3)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?3
|
||||
:charset-list '(iso-8859-3)
|
||||
:plist '(mime-charset iso-8859-3))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-3 'iso-latin-3)
|
||||
(define-coding-system-alias 'latin-3 'iso-latin-3)
|
||||
|
||||
(set-language-info-alist
|
||||
"Latin-3" '((charset ascii latin-iso8859-3)
|
||||
"Latin-3" '((charset iso-8859-3)
|
||||
(coding-system iso-latin-3)
|
||||
(coding-priority iso-latin-3)
|
||||
(nonascii-translation . latin-iso8859-3)
|
||||
(nonascii-translation . iso-8859-3)
|
||||
(unibyte-syntax . "latin-3")
|
||||
(unibyte-display . iso-latin-3)
|
||||
(input-method . "latin-3-prefix")
|
||||
@ -136,22 +123,21 @@ These languages are supported with the Latin-3 (ISO-8859-3) character set:
|
||||
|
||||
;; Latin-4 (ISO-8859-4)
|
||||
|
||||
(make-coding-system
|
||||
'iso-latin-4 2 ?4
|
||||
"ISO 2022 based 8-bit encoding for Latin-4 (MIME:ISO-8859-4)."
|
||||
'(ascii latin-iso8859-4 nil nil
|
||||
nil nil nil nil nil nil nil)
|
||||
'((safe-charsets ascii latin-iso8859-4)
|
||||
(mime-charset . iso-8859-4)))
|
||||
(define-coding-system 'iso-latin-4
|
||||
"ISO 2022 based 8-bit encoding for Latin-4 (MIME:ISO-8859-4)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?4
|
||||
:charset-list '(iso-8859-4)
|
||||
:plist '(mime-charset iso-8859-4))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-4 'iso-latin-4)
|
||||
(define-coding-system-alias 'latin-4 'iso-latin-4)
|
||||
|
||||
(set-language-info-alist
|
||||
"Latin-4" '((charset ascii latin-iso8859-4)
|
||||
"Latin-4" '((charset iso-8859-4)
|
||||
(coding-system iso-8859-4)
|
||||
(coding-priority iso-8859-4)
|
||||
(nonascii-translation . latin-iso8859-4)
|
||||
(nonascii-translation . iso-8859-4)
|
||||
(unibyte-syntax . "latin-4")
|
||||
(unibyte-display . iso-8859-4)
|
||||
(input-method . "latin-4-postfix")
|
||||
@ -164,22 +150,21 @@ These languages are supported with the Latin-4 (ISO-8859-4) character set:
|
||||
|
||||
;; Latin-5 (ISO-8859-9)
|
||||
|
||||
(make-coding-system
|
||||
'iso-latin-5 2 ?9
|
||||
"ISO 2022 based 8-bit encoding for Latin-5 (MIME:ISO-8859-9)."
|
||||
'(ascii latin-iso8859-9 nil nil
|
||||
nil nil nil nil nil nil nil)
|
||||
'((safe-charsets ascii latin-iso8859-9)
|
||||
(mime-charset . iso-8859-9)))
|
||||
(define-coding-system 'iso-latin-5
|
||||
"ISO 2022 based 8-bit encoding for Latin-5 (MIME:ISO-8859-9)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?9
|
||||
:charset-list '(iso-8859-9)
|
||||
:plist '(mime-charset iso-8859-9))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-9 'iso-latin-5)
|
||||
(define-coding-system-alias 'latin-5 'iso-latin-5)
|
||||
|
||||
(set-language-info-alist
|
||||
"Latin-5" '((charset ascii latin-iso8859-9)
|
||||
"Latin-5" '((charset iso-8859-9)
|
||||
(coding-system iso-latin-5)
|
||||
(coding-priority iso-latin-5)
|
||||
(nonascii-translation . latin-iso8859-9)
|
||||
(nonascii-translation . iso-8859-9)
|
||||
(unibyte-syntax . "latin-5")
|
||||
(unibyte-display . iso-latin-5)
|
||||
(input-method . "latin-5-postfix")
|
||||
@ -189,23 +174,22 @@ These languages are supported with the Latin-4 (ISO-8859-4) character set:
|
||||
|
||||
;; Latin-8 (ISO-8859-14)
|
||||
|
||||
(make-coding-system
|
||||
'iso-latin-8 2 ?W ; `W' for `Welsh', since `C'
|
||||
; for `Celtic' is taken.
|
||||
"ISO 2022 based 8-bit encoding for Latin-8 (MIME:ISO-8859-14)."
|
||||
'(ascii latin-iso8859-14 nil nil
|
||||
nil nil nil nil nil nil nil nil nil nil nil nil t)
|
||||
'((safe-charsets ascii latin-iso8859-14)
|
||||
(mime-charset . iso-8859-14)))
|
||||
(define-coding-system 'iso-latin-8
|
||||
"ISO 2022 based 8-bit encoding for Latin-8 (MIME:ISO-8859-14)."
|
||||
:coding-type 'charset
|
||||
;; `W' for `Welsh', since `C' for `Celtic' is taken.
|
||||
:mnemonic ?W
|
||||
:charset-list '(iso-8859-14)
|
||||
:plist '(mime-charset iso-8859-14))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-14 'iso-latin-8)
|
||||
(define-coding-system-alias 'latin-8 'iso-latin-8)
|
||||
|
||||
(set-language-info-alist
|
||||
"Latin-8" '((charset ascii latin-iso8859-14)
|
||||
"Latin-8" '((charset iso-8859-14)
|
||||
(coding-system iso-latin-8)
|
||||
(coding-priority iso-latin-8)
|
||||
(nonascii-translation . latin-iso8859-14)
|
||||
(nonascii-translation . iso-8859-14)
|
||||
(unibyte-syntax . "latin-8")
|
||||
(unibyte-display . iso-latin-8)
|
||||
(input-method . "latin-8-prefix")
|
||||
@ -220,23 +204,23 @@ covered by other ISO-8859 character sets:
|
||||
|
||||
;; Latin-9 (ISO-8859-15)
|
||||
|
||||
(make-coding-system
|
||||
'iso-latin-9 2 ?0 ; `0' for `Latin-0'
|
||||
"ISO 2022 based 8-bit encoding for Latin-9 (MIME:ISO-8859-15)."
|
||||
'(ascii latin-iso8859-15 nil nil
|
||||
nil nil nil nil nil nil nil nil nil nil nil nil t)
|
||||
'((safe-charsets ascii latin-iso8859-15)
|
||||
(mime-charset . iso-8859-15)))
|
||||
(define-coding-system 'iso-latin-9
|
||||
"ISO 2022 based 8-bit encoding for Latin-9 (MIME:ISO-8859-15)."
|
||||
:coding-type 'charset
|
||||
;; `0' for `Latin-0'
|
||||
:mnemonic ?0
|
||||
:charset-list '(iso-8859-15)
|
||||
:plist '(mime-charset iso-8859-15))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-15 'iso-latin-9)
|
||||
(define-coding-system-alias 'latin-9 'iso-latin-9)
|
||||
(define-coding-system-alias 'latin-0 'iso-latin-9)
|
||||
|
||||
(set-language-info-alist
|
||||
"Latin-9" '((charset ascii latin-iso8859-15)
|
||||
"Latin-9" '((charset iso-8859-15)
|
||||
(coding-system iso-latin-9)
|
||||
(coding-priority iso-latin-9)
|
||||
(nonascii-translation . latin-iso8859-15)
|
||||
(nonascii-translation . iso-8859-15)
|
||||
(unibyte-syntax . "latin-9")
|
||||
(unibyte-display . iso-latin-9)
|
||||
(input-method . "latin-9-prefix")
|
||||
@ -251,11 +235,11 @@ Latin-9 is sometimes nicknamed `Latin-0'."))
|
||||
|
||||
(set-language-info-alist
|
||||
"German" '((tutorial . "TUTORIAL.de")
|
||||
(charset ascii latin-iso8859-1)
|
||||
(charset iso-8859-1)
|
||||
(coding-system iso-latin-1)
|
||||
(coding-priority iso-latin-1)
|
||||
(nonascii-translation . iso-8859-1)
|
||||
(input-method . "german-postfix")
|
||||
(nonascii-translation . iso-latin-1)
|
||||
(unibyte-syntax . "latin-1")
|
||||
(unibyte-display . iso-latin-1)
|
||||
(sample-text . "\
|
||||
@ -269,10 +253,10 @@ Additionally, it selects the German tutorial."))
|
||||
|
||||
(set-language-info-alist
|
||||
"French" '((tutorial . "TUTORIAL.fr")
|
||||
(charset ascii latin-iso8859-1)
|
||||
(charset iso-8859-1)
|
||||
(coding-system iso-latin-1)
|
||||
(coding-priority iso-latin-1)
|
||||
(nonascii-translation . latin-iso8859-1)
|
||||
(nonascii-translation . iso-8859-1)
|
||||
(unibyte-syntax . "latin-1")
|
||||
(unibyte-display . iso-latin-1)
|
||||
(input-method . "latin-1-prefix")
|
||||
@ -283,10 +267,10 @@ but it selects the French tutorial."))
|
||||
'("European"))
|
||||
|
||||
(set-language-info-alist
|
||||
"Slovenian" '((charset . (ascii latin-iso8859-2))
|
||||
"Slovenian" '((charset iso-8859-2)
|
||||
(coding-system . (iso-8859-2))
|
||||
(coding-priority . (iso-8859-2))
|
||||
(nonascii-translation . latin-iso8859-2)
|
||||
(nonascii-translation . iso-8859-2)
|
||||
(input-method . "latin-2-postfix")
|
||||
(unibyte-syntax . "latin-2")
|
||||
(unibyte-display . iso-8859-2)
|
||||
@ -297,11 +281,11 @@ but it selects the French tutorial."))
|
||||
|
||||
(set-language-info-alist
|
||||
"Spanish" '((tutorial . "TUTORIAL.es")
|
||||
(charset ascii latin-iso8859-1)
|
||||
(charset iso-8859-1)
|
||||
(coding-system iso-latin-1)
|
||||
(coding-priority iso-latin-1)
|
||||
(nonascii-translation . iso-8859-1)
|
||||
(input-method . "spanish-postfix")
|
||||
(nonascii-translation . iso-latin-1)
|
||||
(unibyte-syntax . "latin-1")
|
||||
(unibyte-display . iso-latin-1)
|
||||
(sample-text . "Spanish (Espa,Aq(Bol) ,A!(BHola!")
|
||||
@ -313,10 +297,10 @@ and it selects the Spanish tutorial."))
|
||||
|
||||
(set-language-info-alist
|
||||
"Dutch" '((tutorial . "TUTORIAL.nl")
|
||||
(charset ascii latin-iso8859-1)
|
||||
(charset iso-8859-1)
|
||||
(coding-system iso-latin-1)
|
||||
(coding-priority iso-latin-1)
|
||||
(nonascii-translation . iso-latin-1)
|
||||
(nonascii-translation . iso-8859-1)
|
||||
(unibyte-syntax . "latin-1")
|
||||
(unibyte-display . iso-latin-1)
|
||||
(sample-text . "Er is een aantal manieren waarop je dit kan doen")
|
||||
@ -331,10 +315,10 @@ but it selects the Dutch tutorial."))
|
||||
;; "Latin-3" language environment.
|
||||
|
||||
(set-language-info-alist
|
||||
"Turkish" '((charset ascii latin-iso8859-9)
|
||||
"Turkish" '((charset iso-8859-9)
|
||||
(coding-system iso-latin-5)
|
||||
(coding-priority iso-latin-5)
|
||||
(nonascii-translation . latin-iso8859-9)
|
||||
(nonascii-translation . iso-8859-9)
|
||||
(unibyte-syntax . "latin-5")
|
||||
(unibyte-display . iso-latin-5)
|
||||
(input-method . "turkish-postfix")
|
||||
@ -346,11 +330,11 @@ but it selects the Dutch tutorial."))
|
||||
;; Keywords: multilingual, Polish
|
||||
|
||||
(set-language-info-alist
|
||||
"Polish" '((charset . (ascii latin-iso8859-2))
|
||||
"Polish" '((charset . (iso-8859-2))
|
||||
(coding-system . (iso-8859-2))
|
||||
(coding-priority . (iso-8859-2))
|
||||
(nonascii-translation . iso-8859-2)
|
||||
(input-method . "polish-slash")
|
||||
(nonascii-translation . latin-iso8859-2)
|
||||
(unibyte-syntax . "latin-2")
|
||||
(unibyte-display . iso-8859-2)
|
||||
(tutorial . "TUTORIAL.pl")
|
||||
@ -361,6 +345,7 @@ but it selects the Dutch tutorial."))
|
||||
(set-language-info-alist
|
||||
"Welsh" `((coding-system utf-8 latin-8) ; the input method is Unicode-based
|
||||
(coding-priority utf-8 latin-8)
|
||||
(nonascii-translation . iso-8859-14)
|
||||
(input-method . "welsh")
|
||||
(documentation . "Support for Welsh, using Unicode."))
|
||||
'("European"))
|
||||
@ -368,6 +353,7 @@ but it selects the Dutch tutorial."))
|
||||
(set-language-info-alist
|
||||
"Latin-7" `((coding-system latin-7)
|
||||
(coding-priority latin-7)
|
||||
(nonascii-translation . iso-8859-13)
|
||||
;; Fixme: input-method
|
||||
(features code-pages)
|
||||
(documentation . "Support for Latin-7, e.g. Latvian, Lithuanian."))
|
||||
@ -376,6 +362,7 @@ but it selects the Dutch tutorial."))
|
||||
(set-language-info-alist
|
||||
"Lithuanian" `((coding-system latin-7)
|
||||
(coding-priority latin-7)
|
||||
(nonascii-translation . iso-8859-13)
|
||||
(input-method . "lithuanian-keyboard")
|
||||
(features code-pages)
|
||||
(documentation . "Support for Lithuanian."))
|
||||
@ -384,194 +371,20 @@ but it selects the Dutch tutorial."))
|
||||
(set-language-info-alist
|
||||
"Latvian" `((coding-system latin-7)
|
||||
(coding-priority latin-7)
|
||||
(nonascii-translation . iso-8859-13)
|
||||
(input-method . "latvian-keyboard")
|
||||
(features code-pages)
|
||||
(documentation . "Support for Latvian."))
|
||||
'("European"))
|
||||
|
||||
|
||||
;; Definitions for the Mac Roman character sets and coding system.
|
||||
;; The Mac Roman encoding uses all 128 code points in the range 128 to
|
||||
;; 255 for actual characters. Emacs decodes them to one of the
|
||||
;; following character sets.
|
||||
;; ascii, latin-iso8859-1, mule-unicode-0100-24ff,
|
||||
;; mule-unicode-2500-33ff, mule-unicode-e000-ffff
|
||||
|
||||
(let
|
||||
((encoding-vector (make-vector 256 nil))
|
||||
(i 0)
|
||||
(vec ;; mac-roman (128..255) -> UCS mapping
|
||||
[ #x00C4 ;; 128:LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
#x00C5 ;; 129:LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
#x00C7 ;; 130:LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
#x00C9 ;; 131:LATIN CAPITAL LETTER E WITH ACUTE
|
||||
#x00D1 ;; 132:LATIN CAPITAL LETTER N WITH TILDE
|
||||
#x00D6 ;; 133:LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
#x00DC ;; 134:LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
#x00E1 ;; 135:LATIN SMALL LETTER A WITH ACUTE
|
||||
#x00E0 ;; 136:LATIN SMALL LETTER A WITH GRAVE
|
||||
#x00E2 ;; 137:LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
#x00E4 ;; 138:LATIN SMALL LETTER A WITH DIAERESIS
|
||||
#x00E3 ;; 139:LATIN SMALL LETTER A WITH TILDE
|
||||
#x00E5 ;; 140:LATIN SMALL LETTER A WITH RING ABOVE
|
||||
#x00E7 ;; 141:LATIN SMALL LETTER C WITH CEDILLA
|
||||
#x00E9 ;; 142:LATIN SMALL LETTER E WITH ACUTE
|
||||
#x00E8 ;; 143:LATIN SMALL LETTER E WITH GRAVE
|
||||
#x00EA ;; 144:LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
#x00EB ;; 145:LATIN SMALL LETTER E WITH DIAERESIS
|
||||
#x00ED ;; 146:LATIN SMALL LETTER I WITH ACUTE
|
||||
#x00EC ;; 147:LATIN SMALL LETTER I WITH GRAVE
|
||||
#x00EE ;; 148:LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
#x00EF ;; 149:LATIN SMALL LETTER I WITH DIAERESIS
|
||||
#x00F1 ;; 150:LATIN SMALL LETTER N WITH TILDE
|
||||
#x00F3 ;; 151:LATIN SMALL LETTER O WITH ACUTE
|
||||
#x00F2 ;; 152:LATIN SMALL LETTER O WITH GRAVE
|
||||
#x00F4 ;; 153:LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
#x00F6 ;; 154:LATIN SMALL LETTER O WITH DIAERESIS
|
||||
#x00F5 ;; 155:LATIN SMALL LETTER O WITH TILDE
|
||||
#x00FA ;; 156:LATIN SMALL LETTER U WITH ACUTE
|
||||
#x00F9 ;; 157:LATIN SMALL LETTER U WITH GRAVE
|
||||
#x00FB ;; 158:LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
#x00FC ;; 159:LATIN SMALL LETTER U WITH DIAERESIS
|
||||
#x2020 ;; 160:DAGGER
|
||||
#x00B0 ;; 161:DEGREE SIGN
|
||||
#x00A2 ;; 162:CENT SIGN
|
||||
#x00A3 ;; 163:POUND SIGN
|
||||
#x00A7 ;; 164:SECTION SIGN
|
||||
#x2022 ;; 165:BULLET
|
||||
#x00B6 ;; 166:PILCROW SIGN
|
||||
#x00DF ;; 167:LATIN SMALL LETTER SHARP S
|
||||
#x00AE ;; 168:REGISTERED SIGN
|
||||
#x00A9 ;; 169:COPYRIGHT SIGN
|
||||
#x2122 ;; 170:TRADE MARK SIGN
|
||||
#x00B4 ;; 171:ACUTE ACCENT
|
||||
#x00A8 ;; 172:DIAERESIS
|
||||
#x2260 ;; 173:NOT EQUAL TO
|
||||
#x00C6 ;; 174:LATIN CAPITAL LETTER AE
|
||||
#x00D8 ;; 175:LATIN CAPITAL LETTER O WITH STROKE
|
||||
#x221E ;; 176:INFINITY
|
||||
#x00B1 ;; 177:PLUS-MINUS SIGN
|
||||
#x2264 ;; 178:LESS-THAN OR EQUAL TO
|
||||
#x2265 ;; 179:GREATER-THAN OR EQUAL TO
|
||||
#x00A5 ;; 180:YEN SIGN
|
||||
#x00B5 ;; 181:MICRO SIGN
|
||||
#x2202 ;; 182:PARTIAL DIFFERENTIAL
|
||||
#x2211 ;; 183:N-ARY SUMMATION
|
||||
#x220F ;; 184:N-ARY PRODUCT
|
||||
#x03C0 ;; 185:GREEK SMALL LETTER PI
|
||||
#x222B ;; 186:INTEGRAL
|
||||
#x00AA ;; 187:FEMININE ORDINAL INDICATOR
|
||||
#x00BA ;; 188:MASCULINE ORDINAL INDICATOR
|
||||
#x03A9 ;; 189:GREEK CAPITAL LETTER OMEGA
|
||||
#x00E6 ;; 190:LATIN SMALL LETTER AE
|
||||
#x00F8 ;; 191:LATIN SMALL LETTER O WITH STROKE
|
||||
#x00BF ;; 192:INVERTED QUESTION MARK
|
||||
#x00A1 ;; 193:INVERTED EXCLAMATION MARK
|
||||
#x00AC ;; 194:NOT SIGN
|
||||
#x221A ;; 195:SQUARE ROOT
|
||||
#x0192 ;; 196:LATIN SMALL LETTER F WITH HOOK
|
||||
#x2248 ;; 197:ALMOST EQUAL TO
|
||||
#x2206 ;; 198:INCREMENT
|
||||
#x00AB ;; 199:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
#x00BB ;; 200:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
#x2026 ;; 201:HORIZONTAL ELLIPSIS
|
||||
#x00A0 ;; 202:NO-BREAK SPACE
|
||||
#x00C0 ;; 203:LATIN CAPITAL LETTER A WITH GRAVE
|
||||
#x00C3 ;; 204:LATIN CAPITAL LETTER A WITH TILDE
|
||||
#x00D5 ;; 205:LATIN CAPITAL LETTER O WITH TILDE
|
||||
#x0152 ;; 206:LATIN CAPITAL LIGATURE OE
|
||||
#x0153 ;; 207:LATIN SMALL LIGATURE OE
|
||||
#x2013 ;; 208:EN DASH
|
||||
#x2014 ;; 209:EM DASH
|
||||
#x201C ;; 210:LEFT DOUBLE QUOTATION MARK
|
||||
#x201D ;; 211:RIGHT DOUBLE QUOTATION MARK
|
||||
#x2018 ;; 212:LEFT SINGLE QUOTATION MARK
|
||||
#x2019 ;; 213:RIGHT SINGLE QUOTATION MARK
|
||||
#x00F7 ;; 214:DIVISION SIGN
|
||||
#x25CA ;; 215:LOZENGE
|
||||
#x00FF ;; 216:LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
#x0178 ;; 217:LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
#x2044 ;; 218:FRACTION SLASH
|
||||
#x20AC ;; 219:EURO SIGN
|
||||
#x2039 ;; 220:SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
#x203A ;; 221:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
#xFB01 ;; 222:LATIN SMALL LIGATURE FI
|
||||
#xFB02 ;; 223:LATIN SMALL LIGATURE FL
|
||||
#x2021 ;; 224:DOUBLE DAGGER
|
||||
#x00B7 ;; 225:MIDDLE DOT
|
||||
#x201A ;; 226:SINGLE LOW-9 QUOTATION MARK
|
||||
#x201E ;; 227:DOUBLE LOW-9 QUOTATION MARK
|
||||
#x2030 ;; 228:PER MILLE SIGN
|
||||
#x00C2 ;; 229:LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
#x00CA ;; 230:LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
#x00C1 ;; 231:LATIN CAPITAL LETTER A WITH ACUTE
|
||||
#x00CB ;; 232:LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
#x00C8 ;; 233:LATIN CAPITAL LETTER E WITH GRAVE
|
||||
#x00CD ;; 234:LATIN CAPITAL LETTER I WITH ACUTE
|
||||
#x00CE ;; 235:LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
#x00CF ;; 236:LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
#x00CC ;; 237:LATIN CAPITAL LETTER I WITH GRAVE
|
||||
#x00D3 ;; 238:LATIN CAPITAL LETTER O WITH ACUTE
|
||||
#x00D4 ;; 239:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
#xF8FF ;; 240:Apple logo
|
||||
#x00D2 ;; 241:LATIN CAPITAL LETTER O WITH GRAVE
|
||||
#x00DA ;; 242:LATIN CAPITAL LETTER U WITH ACUTE
|
||||
#x00DB ;; 243:LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
#x00D9 ;; 244:LATIN CAPITAL LETTER U WITH GRAVE
|
||||
#x0131 ;; 245:LATIN SMALL LETTER DOTLESS I
|
||||
#x02C6 ;; 246:MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
#x02DC ;; 247:SMALL TILDE
|
||||
#x00AF ;; 248:MACRON
|
||||
#x02D8 ;; 249:BREVE
|
||||
#x02D9 ;; 250:DOT ABOVE
|
||||
#x02DA ;; 251:RING ABOVE
|
||||
#x00B8 ;; 252:CEDILLA
|
||||
#x02DD ;; 253:DOUBLE ACUTE ACCENT
|
||||
#x02DB ;; 254:OGONEK
|
||||
#x02C7 ;; 255:CARON
|
||||
])
|
||||
translation-table)
|
||||
(while (< i 128)
|
||||
(aset encoding-vector i i)
|
||||
(setq i (1+ i)))
|
||||
(while (< i 256)
|
||||
(aset encoding-vector i
|
||||
(decode-char 'ucs (aref vec (- i 128))))
|
||||
(setq i (1+ i)))
|
||||
(setq translation-table
|
||||
(make-translation-table-from-vector encoding-vector))
|
||||
(define-translation-table 'mac-roman-decoder translation-table)
|
||||
(define-translation-table 'mac-roman-encoder
|
||||
(char-table-extra-slot translation-table 0)))
|
||||
|
||||
(define-ccl-program decode-mac-roman
|
||||
`(4
|
||||
((loop
|
||||
(read r1)
|
||||
(if (r1 < 128) ;; ASCII
|
||||
(r0 = ,(charset-id 'ascii))
|
||||
(if (r1 < 160)
|
||||
(r0 = ,(charset-id 'eight-bit-control))
|
||||
(r0 = ,(charset-id 'eight-bit-graphic))))
|
||||
(translate-character mac-roman-decoder r0 r1)
|
||||
(write-multibyte-character r0 r1)
|
||||
(repeat))))
|
||||
"CCL program to decode Mac Roman")
|
||||
|
||||
(define-ccl-program encode-mac-roman
|
||||
`(1
|
||||
((loop
|
||||
(read-multibyte-character r0 r1)
|
||||
(translate-character mac-roman-encoder r0 r1)
|
||||
(write-repeat r1))))
|
||||
"CCL program to encode Mac Roman")
|
||||
|
||||
(make-coding-system
|
||||
'mac-roman 4 ?M
|
||||
"Mac Roman Encoding (MIME:MACINTOSH)."
|
||||
'(decode-mac-roman . encode-mac-roman)
|
||||
'((safe-chars . mac-roman-encoder)
|
||||
(valid-codes (0 . 255))
|
||||
(mime-charset . macintosh))) ; per IANA, rfc1345
|
||||
(define-coding-system 'mac-roman
|
||||
"Mac Roman Encoding (MIME:MACINTOSH)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?M
|
||||
:charset-list '(mac-roman)
|
||||
;; per IANA, rfc1345
|
||||
:mime-charset 'macintosh)
|
||||
|
||||
(defconst diacritic-composition-pattern "\\C^\\c^+")
|
||||
|
||||
@ -621,11 +434,11 @@ The return value is number of composed characters."
|
||||
(let ((patterns '(("\\C^\\c^+" . diacritic-composition-function))))
|
||||
(let ((c #x300))
|
||||
(while (<= c #x362)
|
||||
(aset composition-function-table (decode-char 'ucs c) patterns)
|
||||
(aset composition-function-table (decode-char 'unicode c) patterns)
|
||||
(setq c (1+ c)))
|
||||
(setq c #x20d0)
|
||||
(while (<= c #x20e3)
|
||||
(aset composition-function-table (decode-char 'ucs c) patterns)
|
||||
(aset composition-function-table (decode-char 'unicode c) patterns)
|
||||
(setq c (1+ c)))))
|
||||
|
||||
(provide 'european)
|
||||
|
@ -28,21 +28,20 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(make-coding-system
|
||||
'greek-iso-8bit 2 ?7
|
||||
"ISO 2022 based 8-bit encoding for Greek (MIME:ISO-8859-7)."
|
||||
'(ascii greek-iso8859-7 nil nil
|
||||
nil nil nil nil nil nil nil)
|
||||
'((safe-charsets ascii greek-iso8859-7)
|
||||
(mime-charset . iso-8859-7)))
|
||||
(define-coding-system 'greek-iso-8bit
|
||||
"ISO 2022 based 8-bit encoding for Greek (MIME:ISO-8859-7)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?7
|
||||
:charset-list'(iso-8859-7)
|
||||
:plist '(mime-charset iso-8859-7))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-7 'greek-iso-8bit)
|
||||
|
||||
(set-language-info-alist
|
||||
"Greek" '((charset . (greek-iso8859-7))
|
||||
"Greek" '((charset iso-8859-7)
|
||||
(coding-system . (greek-iso-8bit))
|
||||
(coding-priority greek-iso-8bit)
|
||||
(nonascii-translation . greek-iso8859-7)
|
||||
(nonascii-translation . iso-8859-7)
|
||||
(input-method . "greek")
|
||||
(unibyte-display . greek-iso-8bit)
|
||||
(documentation . t)))
|
||||
|
@ -31,13 +31,12 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(make-coding-system
|
||||
'hebrew-iso-8bit 2 ?8
|
||||
"ISO 2022 based 8-bit encoding for Hebrew (MIME:ISO-8859-8)."
|
||||
'(ascii hebrew-iso8859-8 nil nil
|
||||
nil ascii-eol ascii-cntl nil nil nil nil nil t)
|
||||
'((safe-charsets ascii hebrew-iso8859-8)
|
||||
(mime-charset . iso-8859-8)))
|
||||
(define-coding-system 'hebrew-iso-8bit
|
||||
"ISO 2022 based 8-bit encoding for Hebrew (MIME:ISO-8859-8)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?8
|
||||
:charset-list '(iso-8859-8)
|
||||
:plist '(mime-charset iso-8859-8))
|
||||
|
||||
(define-coding-system-alias 'iso-8859-8 'hebrew-iso-8bit)
|
||||
|
||||
@ -49,10 +48,10 @@
|
||||
(define-coding-system-alias 'iso-8859-8-i 'hebrew-iso-8bit)
|
||||
|
||||
(set-language-info-alist
|
||||
"Hebrew" '((charset . (hebrew-iso8859-8))
|
||||
"Hebrew" '((charset . iso-8859-8)
|
||||
(coding-priority hebrew-iso-8bit)
|
||||
(coding-system . (hebrew-iso-8bit))
|
||||
(nonascii-translation . hebrew-iso8859-8)
|
||||
(coding-system hebrew-iso-8bit)
|
||||
(nonascii-translation . iso-8859-8)
|
||||
(input-method . "hebrew")
|
||||
(unibyte-display . hebrew-iso-8bit)
|
||||
(sample-text . "Hebrew ,Hylem(B")
|
||||
|
@ -29,14 +29,16 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(make-coding-system
|
||||
'in-is13194 2 ?D
|
||||
"8-bit encoding for ASCII (MSB=0) and IS13194-Devanagari (MSB=1)."
|
||||
'(ascii indian-is13194 nil nil
|
||||
nil ascii-eol)
|
||||
'((safe-charsets ascii indian-is13194)
|
||||
(post-read-conversion . in-is13194-post-read-conversion)
|
||||
(pre-write-conversion . in-is13194-pre-write-conversion)))
|
||||
(define-coding-system 'in-is13194-devanagari
|
||||
"8-bit encoding for ASCII (MSB=0) and IS13194-Devanagari (MSB=1)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?D
|
||||
:designation [ascii indian-is13194 nil nil]
|
||||
:charset-list '(ascii indian-is13194)
|
||||
:post-read-conversion 'in-is13194-devanagari-post-read-conversion
|
||||
:pre-write-conversion 'in-is13194-devanagari-pre-write-conversion)
|
||||
|
||||
(define-coding-system-alias 'devanagari 'in-is13194-devanagari)
|
||||
|
||||
(defvar indian-script-table
|
||||
'[
|
||||
|
@ -29,64 +29,72 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(make-coding-system
|
||||
'iso-2022-jp 2 ?J
|
||||
"ISO 2022 based 7bit encoding for Japanese (MIME:ISO-2022-JP)."
|
||||
'((ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212) nil nil nil
|
||||
short ascii-eol ascii-cntl seven)
|
||||
'((safe-charsets ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212)
|
||||
(mime-charset . iso-2022-jp)))
|
||||
(define-coding-system 'iso-2022-jp
|
||||
"ISO 2022 based 7bit encoding for Japanese (MIME:ISO-2022-JP)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?J
|
||||
:designation [(ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212)
|
||||
nil nil nil]
|
||||
:flags '(short ascii-at-eol ascii-at-cntl 7-bit designation)
|
||||
:charset-list '(ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212)
|
||||
:plist '(mime-charset iso-2022-jp))
|
||||
|
||||
(define-coding-system-alias 'junet 'iso-2022-jp)
|
||||
|
||||
(make-coding-system
|
||||
'iso-2022-jp-2 2 ?J
|
||||
"ISO 2022 based 7bit encoding for CJK, Latin-1, and Greek (MIME:ISO-2022-JP-2)."
|
||||
'((ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212
|
||||
chinese-gb2312 korean-ksc5601) nil
|
||||
(nil latin-iso8859-1 greek-iso8859-7) nil
|
||||
short ascii-eol ascii-cntl seven nil single-shift nil nil nil init-bol)
|
||||
'((safe-charsets ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212
|
||||
chinese-gb2312 korean-ksc5601
|
||||
latin-iso8859-1 greek-iso8859-7)
|
||||
(mime-charset . iso-2022-jp-2)))
|
||||
(define-coding-system 'iso-2022-jp-2
|
||||
"ISO 2022 based 7bit encoding for CJK, Latin-1, Greek (MIME:ISO-2022-JP-2)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?J
|
||||
:designation [(ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212
|
||||
chinese-gb2312 korean-ksc5601)
|
||||
nil
|
||||
(nil latin-iso8859-1 greek-iso8859-7)
|
||||
nil]
|
||||
:flags '(short ascii-at-eol ascii-at-cntl 7-bit designation single-shift
|
||||
init-at-bol)
|
||||
:charset-list '(ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212
|
||||
chinese-gb2312 korean-ksc5601
|
||||
latin-iso8859-1 greek-iso8859-7)
|
||||
:plist '(mime-charset iso-2022-jp-2))
|
||||
|
||||
(make-coding-system
|
||||
'japanese-shift-jis 1 ?S
|
||||
"Shift-JIS 8-bit encoding for Japanese (MIME:SHIFT_JIS)."
|
||||
nil
|
||||
'((safe-charsets ascii japanese-jisx0208 japanese-jisx0208-1978
|
||||
latin-jisx0201 katakana-jisx0201)
|
||||
(mime-charset . shift_jis)
|
||||
(charset-origin-alist (japanese-jisx0208 "SJIS" encode-sjis-char)
|
||||
(katakana-jisx0201 "SJIS" encode-sjis-char))))
|
||||
(define-coding-system 'japanese-shift-jis
|
||||
"Shift-JIS 8-bit encoding for Japanese (MIME:SHIFT_JIS)"
|
||||
:coding-type 'shift-jis
|
||||
:mnemonic ?S
|
||||
:charset-list '(ascii katakana-jisx0201 japanese-jisx0208)
|
||||
:plist '(mime-charset shift_jis))
|
||||
|
||||
(define-coding-system-alias 'shift_jis 'japanese-shift-jis)
|
||||
(define-coding-system-alias 'sjis 'japanese-shift-jis)
|
||||
|
||||
(make-coding-system
|
||||
'japanese-iso-7bit-1978-irv 2 ?j
|
||||
"ISO 2022 based 7-bit encoding for Japanese JISX0208-1978 and JISX0201-Roman."
|
||||
'((ascii japanese-jisx0208-1978 japanese-jisx0208
|
||||
latin-jisx0201 japanese-jisx0212 katakana-jisx0201 t) nil nil nil
|
||||
short ascii-eol ascii-cntl seven nil nil use-roman use-oldjis)
|
||||
'(ascii japanese-jisx0208-1978 japanese-jisx0208 latin-jisx0201))
|
||||
(define-coding-system 'japanese-iso-7bit-1978-irv
|
||||
"ISO 2022 based 7-bit encoding for Japanese JISX0208-1978 and JISX0201-Roman."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?j
|
||||
:designation [(latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208
|
||||
japanese-jisx0212 katakana-jisx0201)
|
||||
nil nil nil]
|
||||
:flags '(short ascii-at-eol ascii-at-cntl 7-bit use-roman use-oldjis)
|
||||
:charset-list '(latin-jisx0201 japanese-jisx0208-1978 japanese-jisx0208
|
||||
japanese-jisx0212))
|
||||
|
||||
(define-coding-system-alias 'iso-2022-jp-1978-irv 'japanese-iso-7bit-1978-irv)
|
||||
(define-coding-system-alias 'old-jis 'japanese-iso-7bit-1978-irv)
|
||||
|
||||
(make-coding-system
|
||||
'japanese-iso-8bit 2 ?E
|
||||
"ISO 2022 based EUC encoding for Japanese (MIME:EUC-JP)."
|
||||
'(ascii japanese-jisx0208 katakana-jisx0201 japanese-jisx0212
|
||||
short ascii-eol ascii-cntl nil nil single-shift)
|
||||
'((safe-charsets ascii latin-jisx0201 japanese-jisx0208 japanese-jisx0208-1978
|
||||
katakana-jisx0201 japanese-jisx0212)
|
||||
(mime-charset . euc-jp)))
|
||||
(define-coding-system 'japanese-iso-8bit
|
||||
"ISO 2022 based EUC encoding for Japanese (MIME:EUC-JP)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?E
|
||||
:designation [ascii japanese-jisx0208 katakana-jisx0201 japanese-jisx0212]
|
||||
:flags '(short ascii-at-eol ascii-at-cntl single-shift)
|
||||
:charset-list '(ascii latin-jisx0201 japanese-jisx0208
|
||||
japanese-jisx0208-1978
|
||||
katakana-jisx0201 japanese-jisx0212)
|
||||
:plist '(mime-charset euc-jp))
|
||||
|
||||
(define-coding-system-alias 'euc-japan-1990 'japanese-iso-8bit)
|
||||
(define-coding-system-alias 'euc-japan 'japanese-iso-8bit)
|
||||
|
@ -28,25 +28,26 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(make-coding-system
|
||||
'korean-iso-8bit 2 ?K
|
||||
"ISO 2022 based EUC encoding for Korean KSC5601 (MIME:EUC-KR)."
|
||||
'(ascii korean-ksc5601 nil nil
|
||||
nil ascii-eol ascii-cntl)
|
||||
'((safe-charsets ascii korean-ksc5601)
|
||||
(mime-charset . euc-kr)))
|
||||
(define-coding-system 'korean-iso-8bit
|
||||
"ISO 2022 based EUC encoding for Korean KSC5601 (MIME:EUC-KR)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?K
|
||||
:designation [ascii korean-ksc5601 nil nil]
|
||||
:charset-list '(ascii korean-ksc5601)
|
||||
:plist '(mime-charset euc-kr))
|
||||
|
||||
(define-coding-system-alias 'euc-kr 'korean-iso-8bit)
|
||||
(define-coding-system-alias 'euc-korea 'korean-iso-8bit)
|
||||
|
||||
(make-coding-system
|
||||
'iso-2022-kr 2 ?k
|
||||
"ISO 2022 based 7-bit encoding for Korean KSC5601 (MIME:ISO-2022-KR)."
|
||||
'(ascii (nil korean-ksc5601) nil nil
|
||||
nil ascii-eol ascii-cntl seven locking-shift nil nil nil nil nil
|
||||
designation-bol)
|
||||
'((safe-charsets ascii korean-ksc5601)
|
||||
(mime-charset . iso-2022-kr)))
|
||||
(define-coding-system 'iso-2022-kr
|
||||
"ISO 2022 based 7-bit encoding for Korean KSC5601 (MIME:ISO-2022-KR)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?k
|
||||
:designation [ascii (nil korean-ksc5601) nil nil]
|
||||
:flags '(ascii-at-eol ascii-at-cntl 7-bit designation locking-shift
|
||||
designation-bol)
|
||||
:charset-list '(ascii korean-ksc5601)
|
||||
:plist '(mime-charset iso-2022-kr))
|
||||
|
||||
(define-coding-system-alias 'korean-iso-7bit-lock 'iso-2022-kr)
|
||||
|
||||
|
@ -27,41 +27,26 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(make-coding-system
|
||||
'lao 2 ?L
|
||||
"8-bit encoding for ASCII (MSB=0) and LAO (MSB=1)."
|
||||
'(ascii lao nil nil
|
||||
nil nil)
|
||||
'((safe-charsets ascii lao)
|
||||
(post-read-conversion . lao-post-read-conversion)))
|
||||
(define-coding-system 'lao
|
||||
"8-bit encoding for ASCII (MSB=0) and LAO (MSB=1)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?L
|
||||
:charset-list '(lao))
|
||||
|
||||
(set-language-info-alist
|
||||
"Lao" '((charset lao)
|
||||
(coding-system lao)
|
||||
(coding-priority lao)
|
||||
(input-method . "lao")
|
||||
(nonascii-translation . lao)
|
||||
(unibyte-display . lao)
|
||||
(features lao-util)
|
||||
(documentation . t)))
|
||||
|
||||
(aset use-default-ascent ?(1;(B t)
|
||||
(aset use-default-ascent ?$,1D;(B t)
|
||||
(aset use-default-ascent ?(1=(B t)
|
||||
(aset use-default-ascent ?$,1D=(B t)
|
||||
(aset use-default-ascent ?(1?(B t)
|
||||
(aset use-default-ascent ?$,1D?(B t)
|
||||
(aset use-default-ascent ?(1B(B t)
|
||||
(aset use-default-ascent ?$,1DB(B t)
|
||||
(aset ignore-relative-composition ?(1\(B t)
|
||||
(aset ignore-relative-composition ?$,1D\(B t)
|
||||
|
||||
;; Register a function to compose Lao characters.
|
||||
(let ((patterns '(("\\c0\\c9?\\(\\(\\c2\\|\\c3\\)\\c4?\\|\\c4\\)?"
|
||||
. lao-composition-function))))
|
||||
(aset composition-function-table (make-char 'lao) patterns)
|
||||
(dotimes (i (1+ (- #xeff #xe80)))
|
||||
(aset composition-function-table (decode-char 'ucs (+ i #xe80)) patterns)))
|
||||
(set-char-table-range composition-function-table
|
||||
'(#x0F00 . #x0F7F)
|
||||
'(("\\c0\\c9?\\(\\(\\c2\\|\\c3\\)\\c4?\\|\\c4\\)?"
|
||||
. lao-composition-function)))
|
||||
|
||||
(provide 'lao)
|
||||
|
||||
|
@ -28,13 +28,11 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(make-coding-system
|
||||
'thai-tis620 2 ?T
|
||||
"8-bit encoding for ASCII (MSB=0) and Thai TIS620 (MSB=1)."
|
||||
'(ascii thai-tis620 nil nil
|
||||
nil ascii-eol)
|
||||
'((safe-charsets ascii thai-tis620)
|
||||
(post-read-conversion . thai-post-read-conversion)))
|
||||
(define-coding-system 'thai-tis620
|
||||
"8-bit encoding for ASCII (MSB=0) and Thai TIS620 (MSB=1)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?T
|
||||
:charset-list '(tis620-2533))
|
||||
|
||||
(define-coding-system-alias 'th-tis620 'thai-tis620)
|
||||
(define-coding-system-alias 'tis620 'thai-tis620)
|
||||
@ -45,7 +43,7 @@
|
||||
(charset thai-tis620)
|
||||
(coding-system thai-tis620)
|
||||
(coding-priority thai-tis620)
|
||||
(nonascii-translation . thai-tis620)
|
||||
(nonascii-translation . tis620-2533)
|
||||
(input-method . "thai-kesmanee")
|
||||
(unibyte-display . thai-tis620)
|
||||
(features thai-util)
|
||||
@ -56,11 +54,10 @@
|
||||
|
||||
|
||||
;; Register a function to compose Thai characters.
|
||||
(let ((patterns '(("\\c0\\c4\\|\\c0\\(\\c2\\|\\c3\\)\\c4?"
|
||||
. thai-composition-function))))
|
||||
(aset composition-function-table (make-char 'thai-tis620) patterns)
|
||||
(dotimes (i (1+ (- #xe7f #xe00)))
|
||||
(aset composition-function-table (decode-char 'ucs (+ i #xe00)) patterns)))
|
||||
(set-char-table-range composition-function-table
|
||||
'(#x0E00 . #x0E7F)
|
||||
'(("\\c0\\c4\\|\\c0\\(\\c2\\|\\c3\\)\\c4?"
|
||||
. thai-composition-function)))
|
||||
|
||||
(provide 'thai)
|
||||
|
||||
|
@ -82,14 +82,12 @@
|
||||
;;;
|
||||
|
||||
|
||||
(make-coding-system
|
||||
'tibetan-iso-8bit 2 ?Q
|
||||
"8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)."
|
||||
'(ascii tibetan nil nil
|
||||
nil nil)
|
||||
'((safe-charsets ascii tibetan)
|
||||
(post-read-conversion . tibetan-post-read-conversion)
|
||||
(pre-write-conversion . tibetan-pre-write-conversion)))
|
||||
(define-coding-system 'tibetan-iso-8bit
|
||||
"8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)."
|
||||
:coding-type 'iso-2022
|
||||
:mnemonic ?Q
|
||||
:designation [ascii tibetan nil nil]
|
||||
:charset-list '(ascii tibetan))
|
||||
|
||||
(define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
|
||||
|
||||
@ -119,8 +117,11 @@
|
||||
"Regexp matching a composable sequence of Tibetan characters.")
|
||||
|
||||
;; Register a function to compose Tibetan characters.
|
||||
(aset composition-function-table (make-char 'tibetan)
|
||||
(list (cons tibetan-composable-pattern 'tibetan-composition-function)))
|
||||
(set-char-table-range composition-function-table
|
||||
(cons (decode-char 'tibetan #x2121)
|
||||
(decode-char 'tibetan #x7E7E))
|
||||
(list (cons tibetan-composable-pattern
|
||||
'tibetan-composition-function)))
|
||||
|
||||
;;;
|
||||
;;; Definitions of conversion data.
|
||||
|
@ -28,139 +28,30 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defvar viet-viscii-decode-table
|
||||
[;; VISCII is a full 8-bit code.
|
||||
0 1 ?,2F(B 3 4 ?,2G(B ?,2g(B 7 8 9 10 11 12 13 14 15
|
||||
16 17 18 19 ?,2V(B 21 22 23 24 ?,2[(B 26 27 28 29 ?,2\(B 31
|
||||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
||||
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
||||
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
||||
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
||||
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
||||
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
||||
?,2U(B ?,2!(B ?,2"(B ?,2#(B ?,2$(B ?,2%(B ?,2&(B ?,2'(B ?,2((B ?,2)(B ?,2*(B ?,2+(B ?,2,(B ?,2-(B ?,2.(B ?,2/(B
|
||||
?,20(B ?,21(B ?,22(B ?,25(B ?,2~(B ?,2>(B ?,26(B ?,27(B ?,28(B ?,2v(B ?,2w(B ?,2o(B ?,2|(B ?,2{(B ?,2x(B ?,2O(B
|
||||
?,2u(B ?,1!(B ?,1"(B ?,1#(B ?,1$(B ?,1%(B ?,1&(B ?,1'(B ?,1((B ?,1)(B ?,1*(B ?,1+(B ?,1,(B ?,1-(B ?,1.(B ?,1/(B
|
||||
?,10(B ?,11(B ?,12(B ?,2^(B ?,2=(B ?,15(B ?,16(B ?,17(B ?,18(B ?,2q(B ?,2Q(B ?,2W(B ?,2X(B ?,1=(B ?,1>(B ?,2_(B
|
||||
?,2`(B ?,2a(B ?,2b(B ?,2c(B ?,2d(B ?,2e(B ?,1F(B ?,1G(B ?,2h(B ?,2i(B ?,2j(B ?,2k(B ?,2l(B ?,2m(B ?,2n(B ?,1O(B
|
||||
?,2p(B ?,1Q(B ?,2r(B ?,2s(B ?,2t(B ?,1U(B ?,1V(B ?,1W(B ?,1X(B ?,2y(B ?,2z(B ?,1[(B ?,1\(B ?,2}(B ?,1^(B ?,1_(B
|
||||
?,1`(B ?,1a(B ?,1b(B ?,1c(B ?,1d(B ?,1e(B ?,1f(B ?,1g(B ?,1h(B ?,1i(B ?,1j(B ?,1k(B ?,1l(B ?,1m(B ?,1n(B ?,1o(B
|
||||
?,1p(B ?,1q(B ?,1r(B ?,1s(B ?,1t(B ?,1u(B ?,1v(B ?,1w(B ?,1x(B ?,1y(B ?,1z(B ?,1{(B ?,1|(B ?,1}(B ?,1~(B ?,2f(B ]
|
||||
"Vietnamese VISCII decoding table.")
|
||||
|
||||
(let ((table (make-translation-table-from-vector viet-viscii-decode-table)))
|
||||
(define-translation-table 'viet-viscii-nonascii-translation-table table)
|
||||
(define-translation-table 'viet-viscii-encode-table
|
||||
(char-table-extra-slot table 0)))
|
||||
|
||||
(defvar viet-vscii-decode-table
|
||||
[;; VSCII is a full 8-bit code.
|
||||
0 ?,2z(B ?,2x(B 3 ?,2W(B ?,2X(B ?,2f(B 7 8 9 10 11 12 13 14 15
|
||||
16 ?,2Q(B ?,2_(B ?,2O(B ?,2V(B ?,2[(B ?,2}(B ?,2\(B 24 25 26 27 28 29 30 31
|
||||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
||||
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
||||
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
||||
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
||||
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
||||
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
||||
?,2`(B ?,2d(B ?,2c(B ?,2a(B ?,2U(B ?,2#(B ?,2'(B ?,2h(B ?,2k(B ?,2((B ?,2i(B ?,2)(B ?,2.(B ?,2l(B ?,2o(B ?,2n(B
|
||||
?,2m(B ?,28(B ?,2r(B ?,2v(B ?,2u(B ?,2s(B ?,2w(B ?,25(B ?,26(B ?,27(B ?,2^(B ?,2>(B ?,2~(B ?,2y(B ?,2|(B ?,2{(B
|
||||
160 ?,2e(B ?,2b(B ?,2j(B ?,2t(B ?,2=(B ?,2_(B ?,2p(B ?,1e(B ?,1b(B ?,1j(B ?,1t(B ?,1=(B ?,1y(B ?,1p(B ?,2"(B
|
||||
192 193 194 195 196 ?,1`(B ?,1d(B ?,1c(B ?,1a(B ?,1U(B ?,2F(B ?,1"(B ?,1F(B ?,1G(B ?,1!(B ?,2G(B
|
||||
?,2!(B ?,2%(B ?,2&(B ?,2g(B ?,2%(B ?,2+(B ?,1#(B ?,1%(B ?,1&(B ?,1g(B ?,1$(B ?,1'(B ?,1h(B ?,2,(B ?,1k(B ?,1((B
|
||||
?,1i(B ?,1)(B ?,1+(B ?,1,(B ?,1-(B ?,1*(B ?,1.(B ?,1l(B ?,1o(B ?,2-(B ?,2*(B ?,20(B ?,1n(B ?,1m(B ?,18(B ?,1r(B
|
||||
?,21(B ?,1v(B ?,1u(B ?,1s(B ?,1w(B ?,10(B ?,11(B ?,12(B ?,1/(B ?,15(B ?,16(B ?,17(B ?,1^(B ?,1>(B ?,1~(B ?,1y(B
|
||||
?,22(B ?,1|(B ?,1{(B ?,1z(B ?,1x(B ?,1W(B ?,1X(B ?,1f(B ?,1Q(B ?,1q(B ?,1O(B ?,1V(B ?,1[(B ?,1}(B ?,1\(B ?,2/(B]
|
||||
"Vietnamese VSCII decoding table.")
|
||||
|
||||
(let ((table (make-translation-table-from-vector viet-vscii-decode-table)))
|
||||
(define-translation-table 'viet-vscii-nonascii-translation-table table)
|
||||
(define-translation-table 'viet-vscii-encode-table
|
||||
(char-table-extra-slot table 0)))
|
||||
|
||||
(define-ccl-program ccl-decode-viscii
|
||||
`(3
|
||||
((loop
|
||||
(r0 = 0)
|
||||
(read r1)
|
||||
(translate-character viet-viscii-nonascii-translation-table r0 r1)
|
||||
(write-multibyte-character r0 r1)
|
||||
(repeat))))
|
||||
"CCL program to decode VISCII 1.1")
|
||||
|
||||
(define-ccl-program ccl-encode-viscii
|
||||
`(1
|
||||
((loop
|
||||
(read-multibyte-character r0 r1)
|
||||
(translate-character viet-viscii-encode-table r0 r1)
|
||||
(write-repeat r1))))
|
||||
"CCL program to encode VISCII 1.1")
|
||||
|
||||
(define-ccl-program ccl-encode-viscii-font
|
||||
`(0
|
||||
;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
|
||||
;; R1:position code
|
||||
;; Out: R1:font code point
|
||||
(translate-character viet-viscii-encode-table r0 r1))
|
||||
"CCL program to encode Vietnamese chars to VISCII 1.1 font")
|
||||
|
||||
(define-ccl-program ccl-decode-vscii
|
||||
`(3
|
||||
((loop
|
||||
(r0 = 0)
|
||||
(read r1)
|
||||
(translate-character viet-vscii-nonascii-translation-table r0 r1)
|
||||
(write-multibyte-character r0 r1)
|
||||
(repeat))))
|
||||
"CCL program to decode VSCII-1.")
|
||||
|
||||
(define-ccl-program ccl-encode-vscii
|
||||
`(1
|
||||
((loop
|
||||
(read-multibyte-character r0 r1)
|
||||
(translate-character viet-vscii-encode-table r0 r1)
|
||||
(write-repeat r1))))
|
||||
"CCL program to encode VSCII-1.")
|
||||
|
||||
(define-ccl-program ccl-encode-vscii-font
|
||||
`(0
|
||||
;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper
|
||||
;; R1:position code
|
||||
;; Out: R1:font code point
|
||||
(translate-character viet-vscii-encode-table r0 r1))
|
||||
"CCL program to encode Vietnamese chars to VSCII-1 font.")
|
||||
|
||||
|
||||
(make-coding-system
|
||||
'vietnamese-viscii 4 ?V
|
||||
"8-bit encoding for Vietnamese VISCII 1.1 (MIME:VISCII)."
|
||||
'(ccl-decode-viscii . ccl-encode-viscii)
|
||||
'((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
|
||||
(mime-charset . viscii)
|
||||
(valid-codes (0 . 255))))
|
||||
(define-coding-system 'vietnamese-viscii
|
||||
"8-bit encoding for Vietnamese VISCII 1.1 (MIME:VISCII)."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?V
|
||||
:charset-list '(viscii)
|
||||
:plist '(mime-charset viscii))
|
||||
|
||||
(define-coding-system-alias 'viscii 'vietnamese-viscii)
|
||||
|
||||
(make-coding-system
|
||||
'vietnamese-vscii 4 ?v
|
||||
"8-bit encoding for Vietnamese VSCII-1."
|
||||
'(ccl-decode-vscii . ccl-encode-vscii)
|
||||
'((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
|
||||
(valid-codes (0 . 255))))
|
||||
(define-coding-system 'vietnamese-vscii
|
||||
"8-bit encoding for Vietnamese VSCII-1."
|
||||
:coding-type 'charset
|
||||
:mnemonic ?v
|
||||
:charset-list '(vscii))
|
||||
|
||||
(define-coding-system-alias 'vscii 'vietnamese-vscii)
|
||||
|
||||
(make-coding-system
|
||||
'vietnamese-viqr 0 ?q
|
||||
"Encoding for Vietnamese latin transcription (VIQR)."
|
||||
nil
|
||||
'((safe-charsets ascii vietnamese-viscii-lower vietnamese-viscii-upper)
|
||||
(post-read-conversion . viqr-post-read-conversion)
|
||||
(pre-write-conversion . viqr-pre-write-conversion)
|
||||
(charset-origin-alist
|
||||
(vietnamese-viscii-lower "VISCII" viet-encode-viscii-char)
|
||||
(vietnamese-viscii-upper "VISCII" viet-encode-viscii-char))))
|
||||
|
||||
(define-coding-system 'vietnamese-viqr
|
||||
"Vietnamese latin transcription (VIQR)."
|
||||
:coding-type 'utf-8
|
||||
:mnemonic ?q
|
||||
:charset-list '(ascii viscii)
|
||||
:post-read-conversion 'viqr-post-read-conversion
|
||||
:pre-write-conversion 'viqr-pre-write-conversion)
|
||||
|
||||
(define-coding-system-alias 'viqr 'vietnamese-viqr)
|
||||
|
||||
@ -171,13 +62,11 @@
|
||||
(cons '("vscii" . ccl-encode-vscii-font) font-ccl-encoder-alist))
|
||||
|
||||
(set-language-info-alist
|
||||
"Vietnamese" `((charset vietnamese-viscii-lower vietnamese-viscii-upper)
|
||||
(nonascii-translation
|
||||
. ,(get 'viet-viscii-nonascii-translation-table
|
||||
'translation-table))
|
||||
"Vietnamese" `((charset viscii)
|
||||
(coding-system vietnamese-viscii vietnamese-vscii
|
||||
vietnamese-viqr)
|
||||
(coding-priority vietnamese-viscii)
|
||||
(nonascii-translation . viscii)
|
||||
(input-method . "vietnamese-viqr")
|
||||
(unibyte-display . vietnamese-viscii)
|
||||
(features viet-util)
|
||||
|
Loading…
x
Reference in New Issue
Block a user