mule-conf.el 46.3 KB
Newer Older
Karl Heuer's avatar
Karl Heuer committed
1 2
;;; mule-conf.el --- configure multilingual environment

Paul Eggert's avatar
Paul Eggert committed
3
;; Copyright (C) 1997-2019 Free Software Foundation, Inc.
4
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Kenichi Handa's avatar
Kenichi Handa committed
5 6
;;   National Institute of Advanced Industrial Science and Technology (AIST)
;;   Registration Number H14PRO021
Kenichi Handa's avatar
Kenichi Handa committed
7
;; Copyright (C) 2003
Kenichi Handa's avatar
Kenichi Handa committed
8 9
;;   National Institute of Advanced Industrial Science and Technology (AIST)
;;   Registration Number H13PRO009
Karl Heuer's avatar
Karl Heuer committed
10

Dave Love's avatar
Dave Love committed
11
;; Keywords: i18n, mule, multilingual, character set, coding system
Karl Heuer's avatar
Karl Heuer committed
12 13 14

;; This file is part of GNU Emacs.

15
;; GNU Emacs is free software: you can redistribute it and/or modify
Karl Heuer's avatar
Karl Heuer committed
16
;; it under the terms of the GNU General Public License as published by
17 18
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
Karl Heuer's avatar
Karl Heuer committed
19 20 21 22 23 24 25

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
26
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
Karl Heuer's avatar
Karl Heuer committed
27 28 29

;;; Commentary:

Dave Love's avatar
Dave Love committed
30 31 32
;; This file defines the Emacs charsets and some basic coding systems.
;; Other coding systems are defined in the files in directory
;; lisp/language.
Karl Heuer's avatar
Karl Heuer committed
33 34 35

;;; Code:

Dave Love's avatar
Dave Love committed
36 37
;;; Remarks

Paul Eggert's avatar
Paul Eggert committed
38 39 40
;; The ISO-IR registry is maintained by the Information Processing
;; Society of Japan/Information Technology Standards Commission of
;; Japan (IPSJ/ITSCJ) at https://www.itscj.ipsj.or.jp/itscj_english/.
Dave Love's avatar
Dave Love committed
41 42 43
;; Standards docs equivalent to iso-2022 and iso-8859 are at
;; http://www.ecma.ch/.

Dave Love's avatar
Dave Love committed
44 45 46
;; FWIW, http://www.microsoft.com/globaldev/ lists the following for
;; MS Windows, which are presumably the only charsets we really need
;; to worry about on such systems:
Dave Love's avatar
Dave Love committed
47 48 49 50
;; `OEM codepages': 437, 720, 737, 775, 850, 852, 855, 857, 858, 862, 866
;; `Windows codepages': 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
;;                      1258, 874, 932, 936, 949, 950

Karl Heuer's avatar
Karl Heuer committed
51 52
;;; Definitions of character sets.

Dave Love's avatar
Dave Love committed
53 54
;; The charsets `ascii', `unicode' and `eight-bit' are already defined
;; in charset.c as below:
Kenichi Handa's avatar
Kenichi Handa committed
55 56 57 58 59
;;
;; (define-charset 'ascii
;;   ""
;;   :dimension 1
;;   :code-space [0 127]
Dave Love's avatar
Dave Love committed
60
;;   :iso-final-char ?B
Kenichi Handa's avatar
Kenichi Handa committed
61 62 63 64 65 66 67 68 69 70 71
;;   :ascii-compatible-p t
;;   :emacs-mule-id 0
;;   :code-offset 0)
;;
;; (define-charset 'unicode
;;   ""
;;   :dimension 3
;;   :code-space [0 255 0 255 0 16]
;;   :ascii-compatible-p t
;;   :code-offset 0)
;;
72 73 74 75 76 77 78 79
;; (define-charset 'emacs
;;   ""
;;   :dimension 3
;;   :code-space [0 255 0 255 0 63]
;;   :ascii-compatible-p t
;;   :supplementary-p t
;;   :code-offset 0)
;;
Dave Love's avatar
Dave Love committed
80 81 82 83 84 85
;; (define-charset 'eight-bit
;;   ""
;;   :dimension 1
;;   :code-space [128 255]
;;   :code-offset #x3FFF80)
;;
Kenichi Handa's avatar
Kenichi Handa committed
86 87 88 89 90 91 92 93
;; We now set :docstring, :short-name, and :long-name properties.

(put-charset-property
 'ascii :docstring "ASCII (ISO646 IRV)")
(put-charset-property
 'ascii :short-name "ASCII")
(put-charset-property
 'ascii :long-name "ASCII (ISO646 IRV)")
94 95 96 97 98 99
(put-charset-property
 'iso-8859-1 :docstring "Latin-1 (ISO/IEC 8859-1)")
(put-charset-property
 'iso-8859-1 :short-name "Latin-1")
(put-charset-property
 'iso-8859-1 :long-name "Latin-1")
Kenichi Handa's avatar
Kenichi Handa committed
100 101 102 103 104 105
(put-charset-property
 'unicode :docstring "Unicode (ISO10646)")
(put-charset-property
 'unicode :short-name "Unicode")
(put-charset-property
 'unicode :long-name "Unicode (ISO10646)")
106 107 108 109 110 111 112
(put-charset-property
 'emacs :docstring "Full Emacs charset (excluding eight bit chars)")
(put-charset-property
 'emacs :short-name "Emacs")
(put-charset-property
 'emacs :long-name "Emacs")

113 114
(put-charset-property 'eight-bit :docstring "Raw bytes 128-255")
(put-charset-property 'eight-bit :short-name "Raw bytes")
Kenichi Handa's avatar
Kenichi Handa committed
115 116 117 118 119 120 121 122 123 124 125 126

(define-charset-alias 'ucs 'unicode)

(define-charset 'latin-iso8859-1
  "Right-Hand Part of ISO/IEC 8859/1 (Latin-1): ISO-IR-100"
  :short-name "RHP of Latin-1"
  :long-name "RHP of ISO/IEC 8859/1 (Latin-1): ISO-IR-100"
  :iso-final-char ?A
  :emacs-mule-id 129
  :code-space [32 127]
  :code-offset 160)

Dave Love's avatar
Dave Love committed
127 128
;; Name perhaps not ideal, but is XEmacs-compatible.
(define-charset 'control-1
Kenichi Handa's avatar
Kenichi Handa committed
129 130 131 132 133
  "8-bit control code (0x80..0x9F)"
  :short-name "8-bit control code"
  :code-space [128 159]
  :code-offset 128)

Dave Love's avatar
Dave Love committed
134 135 136
(define-charset 'eight-bit-control
  "Raw bytes in the range 0x80..0x9F (usually produced from invalid encodings)"
  :short-name "Raw bytes 0x80..0x9F"
137
  :supplementary-p t
Dave Love's avatar
Dave Love committed
138 139 140
  :code-space [128 159]
  :code-offset #x3FFF80)		; see character.h

Kenichi Handa's avatar
Kenichi Handa committed
141
(define-charset 'eight-bit-graphic
Dave Love's avatar
Dave Love committed
142 143
  "Raw bytes in the range 0xA0..0xFF (usually produced from invalid encodings)"
  :short-name "Raw bytes 0xA0..0xFF"
144
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
145
  :code-space [160 255]
Dave Love's avatar
Dave Love committed
146
  :code-offset #x3FFFA0)		; see character.h
Kenichi Handa's avatar
Kenichi Handa committed
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167

(defmacro define-iso-single-byte-charset (symbol iso-symbol name nickname
						 iso-ir iso-final
						 emacs-mule-id map)
  `(progn
     (define-charset ,symbol
       ,name
       :short-name ,nickname
       :long-name ,name
       :ascii-compatible-p t
       :code-space [0 255]
       :map ,map)
     (if ,iso-symbol
	 (define-charset ,iso-symbol
	   (if ,iso-ir
	       (format "Right-Hand Part of %s (%s): ISO-IR-%d"
		       ,name ,nickname ,iso-ir)
	     (format "Right-Hand Part of %s (%s)" ,name ,nickname))
	   :short-name (format "RHP of %s" ,name)
	   :long-name (format "RHP of %s (%s)" ,name ,nickname)
	   :iso-final-char ,iso-final
Dave Love's avatar
Dave Love committed
168
	   :emacs-mule-id ,emacs-mule-id
Kenichi Handa's avatar
Kenichi Handa committed
169
	   :code-space [32 127]
170
	   :subset (list ,symbol 160 255 -128)))))
Kenichi Handa's avatar
Kenichi Handa committed
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195

(define-iso-single-byte-charset 'iso-8859-2 'latin-iso8859-2
  "ISO/IEC 8859/2" "Latin-2" 101 ?B 130 "8859-2")

(define-iso-single-byte-charset 'iso-8859-3 'latin-iso8859-3
  "ISO/IEC 8859/3" "Latin-3" 109 ?C 131 "8859-3")

(define-iso-single-byte-charset 'iso-8859-4 'latin-iso8859-4
  "ISO/IEC 8859/4" "Latin-4" 110 ?D 132 "8859-4")

(define-iso-single-byte-charset 'iso-8859-5 'cyrillic-iso8859-5
  "ISO/IEC 8859/5" "Latin/Cyrillic" 144 ?L 140 "8859-5")

(define-iso-single-byte-charset 'iso-8859-6 'arabic-iso8859-6
  "ISO/IEC 8859/6" "Latin/Arabic" 127 ?G 135 "8859-6")

(define-iso-single-byte-charset 'iso-8859-7 'greek-iso8859-7
  "ISO/IEC 8859/7" "Latin/Greek" 126 ?F 134 "8859-7")

(define-iso-single-byte-charset 'iso-8859-8 'hebrew-iso8859-8
  "ISO/IEC 8859/8" "Latin/Hebrew" 138 ?H 136 "8859-8")

(define-iso-single-byte-charset 'iso-8859-9 'latin-iso8859-9
  "ISO/IEC 8859/9" "Latin-5" 148 ?M 141 "8859-9")

Dave Love's avatar
Dave Love committed
196
(define-iso-single-byte-charset 'iso-8859-10 'latin-iso8859-10
Dave Love's avatar
Dave Love committed
197
  "ISO/IEC 8859/10" "Latin-6" 157 ?V nil "8859-10")
Dave Love's avatar
Dave Love committed
198

Dave Love's avatar
Dave Love committed
199 200 201 202 203 204 205
;; http://www.nectec.or.th/it-standards/iso8859-11/
;; http://www.cwi.nl/~dik/english/codes/8859.html says this is tis-620
;; plus nbsp
(define-iso-single-byte-charset 'iso-8859-11 'thai-iso8859-11
  "ISO/IEC 8859/11" "Latin/Thai" 166 ?T nil "8859-11")

;; 8859-12 doesn't (yet?) exist.
Dave Love's avatar
Dave Love committed
206

Kenichi Handa's avatar
Kenichi Handa committed
207
(define-iso-single-byte-charset 'iso-8859-13 'latin-iso8859-13
Dave Love's avatar
Dave Love committed
208
  "ISO/IEC 8859/13" "Latin-7" 179 ?Y nil "8859-13")
Kenichi Handa's avatar
Kenichi Handa committed
209 210 211 212 213 214 215

(define-iso-single-byte-charset 'iso-8859-14 'latin-iso8859-14
  "ISO/IEC 8859/14" "Latin-8" 199 ?_ 143 "8859-14")

(define-iso-single-byte-charset 'iso-8859-15 'latin-iso8859-15
  "ISO/IEC 8859/15" "Latin-9" 203 ?b 142 "8859-15")

Dave Love's avatar
Dave Love committed
216
(define-iso-single-byte-charset 'iso-8859-16 'latin-iso8859-16
Dave Love's avatar
Dave Love committed
217
  "ISO/IEC 8859/16" "Latin-10" 226 ?f nil "8859-16")
Dave Love's avatar
Dave Love committed
218

Dave Love's avatar
Dave Love committed
219 220 221
;; No point in keeping it around.
(fmakunbound 'define-iso-single-byte-charset)

Dave Love's avatar
Dave Love committed
222
;; Can this be shared with 8859-11?
Juanma Barranquero's avatar
Juanma Barranquero committed
223
;; N.b. not all of these are defined in Unicode.
Kenichi Handa's avatar
Kenichi Handa committed
224
(define-charset 'thai-tis620
225
  "MULE charset for TIS620.2533"
Kenichi Handa's avatar
Kenichi Handa committed
226 227 228 229 230 231
  :short-name "TIS620.2533"
  :iso-final-char ?T
  :emacs-mule-id 133
  :code-space [32 127]
  :code-offset #x0E00)

232 233 234 235 236 237 238
(define-charset 'tis620-2533
  "TIS620.2533, a.k.a. TIS-620.  Like `thai-iso8859-11', but without NBSP."
  :short-name "TIS620.2533"
  :ascii-compatible-p t
  :code-space [0 255]
  :superset '(ascii (thai-tis620 . 128)))

Kenichi Handa's avatar
Kenichi Handa committed
239 240 241
(define-charset 'jisx0201
  "JISX0201"
  :short-name "JISX0201"
Kenichi Handa's avatar
Kenichi Handa committed
242 243
  :code-space [0 #xDF]
  :map "JISX0201")
Kenichi Handa's avatar
Kenichi Handa committed
244 245 246 247 248 249 250

(define-charset 'latin-jisx0201
  "Roman Part of JISX0201.1976"
  :short-name "JISX0201 Roman"
  :long-name "Japanese Roman (JISX0201.1976)"
  :iso-final-char ?J
  :emacs-mule-id  138
251
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
252
  :code-space [33 126]
253
  :subset '(jisx0201 33 126 0))
Kenichi Handa's avatar
Kenichi Handa committed
254 255 256 257 258 259 260

(define-charset 'katakana-jisx0201
  "Katakana Part of JISX0201.1976"
  :short-name "JISX0201 Katakana"
  :long-name "Japanese Katakana (JISX0201.1976)"
  :iso-final-char ?I
  :emacs-mule-id  137
261
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
262
  :code-space [33 126]
263
  :subset '(jisx0201 161 254 -128))
Kenichi Handa's avatar
Kenichi Handa committed
264 265 266 267 268 269 270 271 272

(define-charset 'chinese-gb2312
  "GB2312 Chinese simplified: ISO-IR-58"
  :short-name "GB2312"
  :long-name "GB2312: ISO-IR-58"
  :iso-final-char ?A
  :emacs-mule-id 145
  :code-space [33 126 33 126]
  :code-offset #x110000
Kenichi Handa's avatar
Kenichi Handa committed
273
  :unify-map "GB2312")
Kenichi Handa's avatar
Kenichi Handa committed
274

Kenichi Handa's avatar
Kenichi Handa committed
275
(define-charset 'chinese-gbk
Dave Love's avatar
Dave Love committed
276
  "GBK Chinese simplified."
Kenichi Handa's avatar
Kenichi Handa committed
277 278
  :short-name "GBK"
  :code-space [#x40 #xFE #x81 #xFE]
279
  :code-offset #x160000
Kenichi Handa's avatar
Kenichi Handa committed
280
  :unify-map "GBK")
Dave Love's avatar
Dave Love committed
281
(define-charset-alias 'cp936 'chinese-gbk)
Dave Love's avatar
Dave Love committed
282
(define-charset-alias 'windows-936 'chinese-gbk)
Kenichi Handa's avatar
Kenichi Handa committed
283

Kenichi Handa's avatar
Kenichi Handa committed
284 285 286 287 288 289 290 291
(define-charset 'chinese-cns11643-1
  "CNS11643 Plane 1 Chinese traditional: ISO-IR-171"
  :short-name "CNS11643-1"
  :long-name "CNS11643-1 (Chinese traditional): ISO-IR-171"
  :iso-final-char ?G
  :emacs-mule-id  149
  :code-space [33 126 33 126]
  :code-offset #x114000
Kenichi Handa's avatar
Kenichi Handa committed
292
  :unify-map "CNS-1")
Kenichi Handa's avatar
Kenichi Handa committed
293 294 295 296 297 298 299 300 301

(define-charset 'chinese-cns11643-2
  "CNS11643 Plane 2 Chinese traditional: ISO-IR-172"
  :short-name "CNS11643-2"
  :long-name "CNS11643-2 (Chinese traditional): ISO-IR-172"
  :iso-final-char ?H
  :emacs-mule-id  150
  :code-space [33 126 33 126]
  :code-offset #x118000
Kenichi Handa's avatar
Kenichi Handa committed
302
  :unify-map "CNS-2")
Kenichi Handa's avatar
Kenichi Handa committed
303 304 305 306 307 308 309 310

(define-charset 'chinese-cns11643-3
  "CNS11643 Plane 3 Chinese Traditional: ISO-IR-183"
  :short-name  "CNS11643-3"
  :long-name "CNS11643-3 (Chinese traditional): ISO-IR-183"
  :iso-final-char ?I
  :code-space [33 126 33 126]
  :emacs-mule-id  246
Kenichi Handa's avatar
Kenichi Handa committed
311 312
  :code-offset #x11C000
  :unify-map "CNS-3")
Kenichi Handa's avatar
Kenichi Handa committed
313 314 315 316 317 318 319 320

(define-charset 'chinese-cns11643-4
  "CNS11643 Plane 4 Chinese Traditional: ISO-IR-184"
  :short-name  "CNS11643-4"
  :long-name "CNS11643-4 (Chinese traditional): ISO-IR-184"
  :iso-final-char ?J
  :emacs-mule-id  247
  :code-space [33 126 33 126]
Kenichi Handa's avatar
Kenichi Handa committed
321 322
  :code-offset #x120000
  :unify-map "CNS-4")
Kenichi Handa's avatar
Kenichi Handa committed
323 324 325 326 327 328 329 330

(define-charset 'chinese-cns11643-5
  "CNS11643 Plane 5 Chinese Traditional: ISO-IR-185"
  :short-name  "CNS11643-5"
  :long-name "CNS11643-5 (Chinese traditional): ISO-IR-185"
  :iso-final-char ?K
  :emacs-mule-id  248
  :code-space [33 126 33 126]
Kenichi Handa's avatar
Kenichi Handa committed
331 332
  :code-offset #x124000
  :unify-map "CNS-5")
Kenichi Handa's avatar
Kenichi Handa committed
333 334 335 336 337 338 339 340

(define-charset 'chinese-cns11643-6
  "CNS11643 Plane 6 Chinese Traditional: ISO-IR-186"
  :short-name  "CNS11643-6"
  :long-name "CNS11643-6 (Chinese traditional): ISO-IR-186"
  :iso-final-char ?L
  :emacs-mule-id 249
  :code-space [33 126 33 126]
Kenichi Handa's avatar
Kenichi Handa committed
341 342
  :code-offset #x128000
  :unify-map "CNS-6")
Kenichi Handa's avatar
Kenichi Handa committed
343 344 345 346 347 348 349 350

(define-charset 'chinese-cns11643-7
  "CNS11643 Plane 7 Chinese Traditional: ISO-IR-187"
  :short-name  "CNS11643-7"
  :long-name "CNS11643-7 (Chinese traditional): ISO-IR-187"
  :iso-final-char ?M
  :emacs-mule-id 250
  :code-space [33 126 33 126]
Kenichi Handa's avatar
Kenichi Handa committed
351 352
  :code-offset #x12C000
  :unify-map "CNS-7")
Kenichi Handa's avatar
Kenichi Handa committed
353 354 355 356 357 358

(define-charset 'big5
  "Big5 (Chinese traditional)"
  :short-name "Big5"
  :code-space [#x40 #xFE #xA1 #xFE]
  :code-offset #x130000
Kenichi Handa's avatar
Kenichi Handa committed
359
  :unify-map "BIG5")
Dave Love's avatar
Dave Love committed
360 361 362
;; Fixme: AKA cp950 according to
;; <URL:http://www.microsoft.com/globaldev/reference/WinCP.asp>.  Is
;; that correct?
Kenichi Handa's avatar
Kenichi Handa committed
363 364

(define-charset 'chinese-big5-1
Dave Love's avatar
Dave Love committed
365
  "Frequently used part (A141-C67E) of Big5 (Chinese traditional)"
Kenichi Handa's avatar
Kenichi Handa committed
366 367 368 369
  :short-name "Big5 (Level-1)"
  :long-name "Big5 (Level-1) A141-C67F"
  :iso-final-char ?0
  :emacs-mule-id 152
370
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
371
  :code-space [#x21 #x7E #x21 #x7E]
Kenichi Handa's avatar
Kenichi Handa committed
372
  :code-offset #x135000
Kenichi Handa's avatar
Kenichi Handa committed
373
  :unify-map "BIG5-1")
Kenichi Handa's avatar
Kenichi Handa committed
374 375

(define-charset 'chinese-big5-2
Dave Love's avatar
Dave Love committed
376
  "Less frequently used part (C940-FEFE) of Big5 (Chinese traditional)"
Kenichi Handa's avatar
Kenichi Handa committed
377 378 379 380
  :short-name "Big5 (Level-2)"
  :long-name "Big5 (Level-2) C940-FEFE"
  :iso-final-char ?1
  :emacs-mule-id  153
381
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
382
  :code-space [#x21 #x7E #x21 #x7E]
Kenichi Handa's avatar
Kenichi Handa committed
383
  :code-offset #x137800
Kenichi Handa's avatar
Kenichi Handa committed
384
  :unify-map "BIG5-2")
Kenichi Handa's avatar
Kenichi Handa committed
385 386 387 388 389 390 391 392 393

(define-charset 'japanese-jisx0208
  "JISX0208.1983/1990 Japanese Kanji: ISO-IR-87"
  :short-name "JISX0208"
  :long-name "JISX0208.1983/1990 (Japanese): ISO-IR-87"
  :iso-final-char ?B
  :emacs-mule-id 146
  :code-space [33 126 33 126]
  :code-offset #x140000
Kenichi Handa's avatar
Kenichi Handa committed
394
  :unify-map "JISX0208")
Kenichi Handa's avatar
Kenichi Handa committed
395 396 397 398

(define-charset 'japanese-jisx0208-1978
  "JISX0208.1978 Japanese Kanji (so called \"old JIS\"): ISO-IR-42"
  :short-name "JISX0208.1978"
Kenichi Handa's avatar
Kenichi Handa committed
399
  :long-name  "JISX0208.1978 (JISC6226.1978): ISO-IR-42"
Kenichi Handa's avatar
Kenichi Handa committed
400 401 402 403
  :iso-final-char ?@
  :emacs-mule-id  144
  :code-space [33 126 33 126]
  :code-offset #x144000
Kenichi Handa's avatar
Kenichi Handa committed
404
  :unify-map "JISC6226")
Kenichi Handa's avatar
Kenichi Handa committed
405 406 407 408 409 410 411 412 413

(define-charset 'japanese-jisx0212
  "JISX0212 Japanese supplement: ISO-IR-159"
  :short-name "JISX0212"
  :long-name "JISX0212 (Japanese): ISO-IR-159"
  :iso-final-char ?D
  :emacs-mule-id 148
  :code-space [33 126 33 126]
  :code-offset #x148000
Kenichi Handa's avatar
Kenichi Handa committed
414
  :unify-map "JISX0212")
Kenichi Handa's avatar
Kenichi Handa committed
415

Dave Love's avatar
Dave Love committed
416 417
;; Note that jisx0213 contains characters not in Unicode (3.2?).  It's
;; arguable whether it should have a unify-map.
Kenichi Handa's avatar
Kenichi Handa committed
418
(define-charset 'japanese-jisx0213-1
419
  "JISX0213.2000 Plane 1 (Japanese)"
Kenichi Handa's avatar
Kenichi Handa committed
420 421 422
  :short-name "JISX0213-1"
  :iso-final-char ?O
  :emacs-mule-id  151
Kenichi Handa's avatar
Kenichi Handa committed
423
  :unify-map "JISX2131"
Kenichi Handa's avatar
Kenichi Handa committed
424 425 426 427
  :code-space [33 126 33 126]
  :code-offset #x14C000)

(define-charset 'japanese-jisx0213-2
428
  "JISX0213.2000 Plane 2 (Japanese)"
Kenichi Handa's avatar
Kenichi Handa committed
429 430 431
  :short-name "JISX0213-2"
  :iso-final-char ?P
  :emacs-mule-id 254
Kenichi Handa's avatar
Kenichi Handa committed
432
  :unify-map "JISX2132"
Kenichi Handa's avatar
Kenichi Handa committed
433 434 435
  :code-space [33 126 33 126]
  :code-offset #x150000)

436 437 438 439 440 441 442 443 444 445 446
(define-charset 'japanese-jisx0213-a
  "JISX0213.2004 adds these characters to JISX0213.2000."
  :short-name "JISX0213A"
  :dimension 2
  :code-space [33 126 33 126]
  :supplementary-p t
  :map "JISX213A")

(define-charset 'japanese-jisx0213.2004-1
  "JISX0213.2004 Plane1 (Japanese)"
  :short-name "JISX0213.2004-1"
447
  :dimension 2
448
  :code-space [33 126 33 126]
449 450 451
  :iso-final-char ?Q
  :superset '(japanese-jisx0213-a japanese-jisx0213-1))

452 453 454
(define-charset 'katakana-sjis
  "Katakana part of Shift-JIS"
  :dimension 1
455 456
  :code-space [#xA1 #xDF]
  :subset '(jisx0201 #xA1 #xDF 0)
457 458 459 460
  :supplementary-p t)

(define-charset 'cp932-2-byte
  "2-byte part of CP932"
461
  :dimension 2
462
  :map "CP932-2BYTE"
463
  :code-space [#x40 #xFC #x81 #xFC]
464 465 466 467 468 469 470 471
  :supplementary-p t)

(define-charset 'cp932
  "CP932 (Microsoft shift-jis)"
  :code-space [#x00 #xFF #x00 #xFE]
  :short-name "CP932"
  :superset '(ascii katakana-sjis cp932-2-byte))

Kenichi Handa's avatar
Kenichi Handa committed
472 473 474 475 476 477 478
(define-charset 'korean-ksc5601
  "KSC5601 Korean Hangul and Hanja: ISO-IR-149"
  :short-name "KSC5601"
  :long-name "KSC5601 (Korean): ISO-IR-149"
  :iso-final-char ?C
  :emacs-mule-id 147
  :code-space [33 126 33 126]
479
  :code-offset #x279f94			; ... #x27c217
Kenichi Handa's avatar
Kenichi Handa committed
480
  :unify-map "KSC5601")
Kenichi Handa's avatar
Kenichi Handa committed
481

482 483 484 485 486
(define-charset 'big5-hkscs
  "Big5-HKSCS (Chinese traditional, Hong Kong supplement)"
  :short-name "Big5"
  :code-space [#x40 #xFE #xA1 #xFE]
  :code-offset #x27c218			; ... #x280839
Kenichi Handa's avatar
Kenichi Handa committed
487
  :unify-map "BIG5-HKSCS")
488

Kenichi Handa's avatar
Kenichi Handa committed
489 490 491 492 493 494 495 496 497 498 499 500 501
(define-charset 'cp949-2-byte
  "2-byte part of CP949"
  :dimension 2
  :map "CP949-2BYTE"
  :code-space [#x41 #xFE #x81 #xFD]
  :supplementary-p t)

(define-charset 'cp949
  "CP949 (Korean)"
  :short-name "CP949"
  :long-name  "CP949 (Korean)"
  :code-space [#x00 #xFE #x00 #xFD]
  :superset '(ascii cp949-2-byte))
Dave Love's avatar
Dave Love committed
502

Kenichi Handa's avatar
Kenichi Handa committed
503 504 505 506 507 508 509
(define-charset 'chinese-sisheng
  "SiSheng characters for PinYin/ZhuYin"
  :short-name "SiSheng"
  :long-name "SiSheng (PinYin/ZhuYin)"
  :iso-final-char ?0
  :emacs-mule-id 160
  :code-space [33 126]
Kenichi Handa's avatar
Kenichi Handa committed
510
  :unify-map "MULE-sisheng"
511
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
512 513
  :code-offset #x200000)

Dave Love's avatar
Dave Love committed
514 515 516
;; A subset of the 1989 version of IPA.  It consists of the consonant
;; signs used in English, French, German and Italian, and all vowels
;; signs in the table.  [says old MULE doc]
Kenichi Handa's avatar
Kenichi Handa committed
517 518 519 520 521
(define-charset 'ipa
  "IPA (International Phonetic Association)"
  :short-name "IPA"
  :iso-final-char ?0
  :emacs-mule-id  161
Kenichi Handa's avatar
Kenichi Handa committed
522
  :unify-map "MULE-ipa"
Kenichi Handa's avatar
Kenichi Handa committed
523
  :code-space [32 127]
524
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
525 526 527 528 529 530 531
  :code-offset #x200080)

(define-charset 'viscii
  "VISCII1.1"
  :short-name "VISCII"
  :long-name "VISCII 1.1"
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
532
  :map "VISCII")
Kenichi Handa's avatar
Kenichi Handa committed
533 534 535 536 537 538 539 540

(define-charset 'vietnamese-viscii-lower
  "VISCII1.1 lower-case"
  :short-name "VISCII lower"
  :long-name "VISCII lower-case"
  :iso-final-char ?1
  :emacs-mule-id  162
  :code-space [32 127]
541
  :code-offset #x200200
542
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
543
  :unify-map "MULE-lviscii")
Kenichi Handa's avatar
Kenichi Handa committed
544 545 546 547 548 549 550 551

(define-charset 'vietnamese-viscii-upper
  "VISCII1.1 upper-case"
  :short-name "VISCII upper"
  :long-name "VISCII upper-case"
  :iso-final-char ?2
  :emacs-mule-id  163
  :code-space [32 127]
552
  :code-offset #x200280
553
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
554
  :unify-map "MULE-uviscii")
Kenichi Handa's avatar
Kenichi Handa committed
555 556

(define-charset 'vscii
Kenichi Handa's avatar
Kenichi Handa committed
557
  "VSCII1.1 (TCVN-5712 VN1)"
Kenichi Handa's avatar
Kenichi Handa committed
558 559
  :short-name "VSCII"
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
560 561 562
  :map "VSCII")

(define-charset-alias 'tcvn-5712 'vscii)
Kenichi Handa's avatar
Kenichi Handa committed
563

Dave Love's avatar
Dave Love committed
564
;; Fixme: see note in tcvn.map about combining characters
Kenichi Handa's avatar
Kenichi Handa committed
565 566
(define-charset 'vscii-2
  "VSCII-2 (TCVN-5712 VN2)"
Dave Love's avatar
Dave Love committed
567
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
568
  :map "VSCII-2")
Dave Love's avatar
Dave Love committed
569

Kenichi Handa's avatar
Kenichi Handa committed
570 571 572 573 574
(define-charset 'koi8-r
  "KOI8-R"
  :short-name "KOI8-R"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
575
  :map "KOI8-R")
Kenichi Handa's avatar
Kenichi Handa committed
576 577 578 579 580 581 582 583

(define-charset-alias 'koi8 'koi8-r)

(define-charset 'alternativnyj
  "ALTERNATIVNYJ"
  :short-name "alternativnyj"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
584
  :map "ALTERNATIVNYJ")
Dave Love's avatar
Dave Love committed
585 586 587 588 589 590

(define-charset 'cp866
  "CP866"
  :short-name "cp866"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
591
  :map "IBM866")
Dave Love's avatar
Dave Love committed
592
(define-charset-alias 'ibm866 'cp866)
Karl Heuer's avatar
Karl Heuer committed
593

Dave Love's avatar
Dave Love committed
594 595 596 597 598
(define-charset 'koi8-u
  "KOI8-U"
  :short-name "KOI8-U"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
599
  :map "KOI8-U")
Dave Love's avatar
Dave Love committed
600 601 602 603 604 605

(define-charset 'koi8-t
  "KOI8-T"
  :short-name "KOI8-T"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
606
  :map "KOI8-T")
Dave Love's avatar
Dave Love committed
607 608 609 610 611 612

(define-charset 'georgian-ps
  "GEORGIAN-PS"
  :short-name "GEORGIAN-PS"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
613
  :map "KA-PS")
Dave Love's avatar
Dave Love committed
614

615 616 617 618 619
(define-charset 'georgian-academy
  "GEORGIAN-ACADEMY"
  :short-name "GEORGIAN-ACADEMY"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
620
  :map "KA-ACADEMY")
621

Dave Love's avatar
Dave Love committed
622
(define-charset 'windows-1250
Dave Love's avatar
Dave Love committed
623
  "WINDOWS-1250 (Central Europe)"
Dave Love's avatar
Dave Love committed
624 625 626
  :short-name "WINDOWS-1250"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
627
  :map "CP1250")
Dave Love's avatar
Dave Love committed
628 629 630
(define-charset-alias 'cp1250 'windows-1250)

(define-charset 'windows-1251
Dave Love's avatar
Dave Love committed
631
  "WINDOWS-1251 (Cyrillic)"
Dave Love's avatar
Dave Love committed
632 633 634
  :short-name "WINDOWS-1251"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
635
  :map "CP1251")
Dave Love's avatar
Dave Love committed
636 637 638
(define-charset-alias 'cp1251 'windows-1251)

(define-charset 'windows-1252
Dave Love's avatar
Dave Love committed
639
  "WINDOWS-1252 (Latin I)"
Dave Love's avatar
Dave Love committed
640 641 642
  :short-name "WINDOWS-1252"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
643
  :map "CP1252")
Dave Love's avatar
Dave Love committed
644 645
(define-charset-alias 'cp1252 'windows-1252)

Dave Love's avatar
Dave Love committed
646
(define-charset 'windows-1253
Dave Love's avatar
Dave Love committed
647
  "WINDOWS-1253 (Greek)"
Dave Love's avatar
Dave Love committed
648 649 650
  :short-name "WINDOWS-1253"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
651
  :map "CP1253")
Dave Love's avatar
Dave Love committed
652 653 654
(define-charset-alias 'cp1253 'windows-1253)

(define-charset 'windows-1254
Dave Love's avatar
Dave Love committed
655
  "WINDOWS-1254 (Turkish)"
Dave Love's avatar
Dave Love committed
656 657 658
  :short-name "WINDOWS-1254"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
659
  :map "CP1254")
Dave Love's avatar
Dave Love committed
660 661 662 663 664 665 666
(define-charset-alias 'cp1254 'windows-1254)

(define-charset 'windows-1255
  "WINDOWS-1255 (Hebrew)"
  :short-name "WINDOWS-1255"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
667
  :map "CP1255")
Dave Love's avatar
Dave Love committed
668 669 670 671 672 673 674
(define-charset-alias 'cp1255 'windows-1255)

(define-charset 'windows-1256
  "WINDOWS-1256 (Arabic)"
  :short-name "WINDOWS-1256"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
675
  :map "CP1256")
Dave Love's avatar
Dave Love committed
676 677 678 679 680 681 682
(define-charset-alias 'cp1256 'windows-1256)

(define-charset 'windows-1257
  "WINDOWS-1257 (Baltic)"
  :short-name "WINDOWS-1257"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
683
  :map "CP1257")
Dave Love's avatar
Dave Love committed
684 685 686
(define-charset-alias 'cp1257 'windows-1257)

(define-charset 'windows-1258
Dave Love's avatar
Dave Love committed
687
  "WINDOWS-1258 (Viet Nam)"
Dave Love's avatar
Dave Love committed
688 689 690
  :short-name "WINDOWS-1258"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
691
  :map "CP1258")
Dave Love's avatar
Dave Love committed
692 693 694 695 696 697 698
(define-charset-alias 'cp1258 'windows-1258)

(define-charset 'next
  "NEXT"
  :short-name "NEXT"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
699
  :map "NEXTSTEP")
Dave Love's avatar
Dave Love committed
700

Dave Love's avatar
Dave Love committed
701 702 703 704
(define-charset 'cp1125
  "CP1125"
  :short-name "CP1125"
  :code-space [0 255]
705
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
706
  :map "CP1125")
Dave Love's avatar
Dave Love committed
707 708 709 710
(define-charset-alias 'ruscii 'cp1125)
;; Original name for cp1125, says Serhii Hlodin <hlodin@lutsk.bank.gov.ua>
(define-charset-alias 'cp866u 'cp1125)

Dave Love's avatar
Dave Love committed
711
;; Fixme: C.f. iconv, http://czyborra.com/charsets/codepages.html
Juanma Barranquero's avatar
Juanma Barranquero committed
712
;; shows this as not ASCII compatible, with various graphics in
Dave Love's avatar
Dave Love committed
713
;; 0x01-0x1F.
714
(define-charset 'cp437
Dave Love's avatar
Dave Love committed
715
  "CP437 (MS-DOS United States, Australia, New Zealand, South Africa)"
716 717 718
  :short-name "CP437"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
719
  :map "IBM437")
720

Dave Love's avatar
Dave Love committed
721 722 723 724 725
(define-charset 'cp720
  "CP720 (Arabic)"
  :short-name "CP720"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
726
  :map "CP720")
Dave Love's avatar
Dave Love committed
727

728
(define-charset 'cp737
Dave Love's avatar
Dave Love committed
729
  "CP737 (PC Greek)"
730 731 732
  :short-name "CP737"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
733
  :map "CP737")
734 735

(define-charset 'cp775
Dave Love's avatar
Dave Love committed
736
  "CP775 (PC Baltic)"
737 738 739
  :short-name "CP775"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
740
  :map "CP775")
741 742

(define-charset 'cp851
Dave Love's avatar
Dave Love committed
743
  "CP851 (Greek)"
744 745 746
  :short-name "CP851"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
747
  :map "IBM851")
748 749

(define-charset 'cp852
Dave Love's avatar
Dave Love committed
750
  "CP852 (MS-DOS Latin-2)"
751 752 753
  :short-name "CP852"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
754
  :map "IBM852")
755 756

(define-charset 'cp855
Dave Love's avatar
Dave Love committed
757
  "CP855 (IBM Cyrillic)"
758 759 760
  :short-name "CP855"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
761
  :map "IBM855")
762 763

(define-charset 'cp857
Dave Love's avatar
Dave Love committed
764
  "CP857 (IBM Turkish)"
765 766 767
  :short-name "CP857"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
768
  :map "IBM857")
769

Dave Love's avatar
Dave Love committed
770 771 772 773 774
(define-charset 'cp858
  "CP858 (Multilingual Latin I + Euro)"
  :short-name "CP858"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
775
  :map "CP858")
Dave Love's avatar
Dave Love committed
776
(define-charset-alias 'cp00858 'cp858)	; IANA has IBM00858/CP00858
Dave Love's avatar
Dave Love committed
777

778
(define-charset 'cp860
Dave Love's avatar
Dave Love committed
779
  "CP860 (MS-DOS Portuguese)"
780 781 782
  :short-name "CP860"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
783
  :map "IBM860")
784 785

(define-charset 'cp861
Dave Love's avatar
Dave Love committed
786
  "CP861 (MS-DOS Icelandic)"
787 788 789
  :short-name "CP861"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
790
  :map "IBM861")
791 792

(define-charset 'cp862
Dave Love's avatar
Dave Love committed
793
  "CP862 (PC Hebrew)"
794 795 796
  :short-name "CP862"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
797
  :map "IBM862")
798 799

(define-charset 'cp863
Dave Love's avatar
Dave Love committed
800
  "CP863 (MS-DOS Canadian French)"
801 802 803
  :short-name "CP863"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
804
  :map "IBM863")
805 806

(define-charset 'cp864
Dave Love's avatar
Dave Love committed
807
  "CP864 (PC Arabic)"
808 809 810
  :short-name "CP864"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
811
  :map "IBM864")
812 813

(define-charset 'cp865
Dave Love's avatar
Dave Love committed
814
  "CP865 (MS-DOS Nordic)"
815 816 817
  :short-name "CP865"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
818
  :map "IBM865")
819 820

(define-charset 'cp869
Dave Love's avatar
Dave Love committed
821
  "CP869 (IBM Modern Greek)"
822 823 824
  :short-name "CP869"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
825
  :map "IBM869")
826 827

(define-charset 'cp874
Dave Love's avatar
Dave Love committed
828
  "CP874 (IBM Thai)"
829 830 831
  :short-name "CP874"
  :code-space [0 255]
  :ascii-compatible-p t
Kenichi Handa's avatar
Kenichi Handa committed
832
  :map "IBM874")
Karl Heuer's avatar
Karl Heuer committed
833 834 835 836 837

;; For Arabic, we need three different types of character sets.
;; Digits are of direction left-to-right and of width 1-column.
;; Others are of direction right-to-left and of width 1-column or
;; 2-column.
Kenichi Handa's avatar
Kenichi Handa committed
838 839 840 841 842
(define-charset 'arabic-digit
  "Arabic digit"
  :short-name "Arabic digit"
  :iso-final-char ?2
  :emacs-mule-id 164
843
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
844 845 846 847 848 849 850 851 852
  :code-space [34 42]
  :code-offset #x0600)

(define-charset 'arabic-1-column
  "Arabic 1-column"
  :short-name "Arabic 1-col"
  :long-name "Arabic 1-column"
  :iso-final-char ?3
  :emacs-mule-id 165
853
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
854 855 856 857 858 859 860 861 862
  :code-space [33 126]
  :code-offset #x200100)

(define-charset 'arabic-2-column
  "Arabic 2-column"
  :short-name "Arabic 2-col"
  :long-name "Arabic 2-column"
  :iso-final-char ?4
  :emacs-mule-id 224
863
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
864 865
  :code-space [33 126]
  :code-offset #x200180)
866 867

;; Lao script.
Kenichi Handa's avatar
Kenichi Handa committed
868
;; Codes 0x21..0x7E are mapped to Unicode U+0E81..U+0EDF.
Juanma Barranquero's avatar
Juanma Barranquero committed
869
;; Not all of them are defined in Unicode.
Kenichi Handa's avatar
Kenichi Handa committed
870 871 872 873 874
(define-charset 'lao
  "Lao characters (ISO10646 0E81..0EDF)"
  :short-name "Lao"
  :iso-final-char ?1
  :emacs-mule-id 167
875
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
876 877 878 879 880 881 882
  :code-space [33 126]
  :code-offset #x0E81)

(define-charset 'mule-lao
  "Lao characters (ISO10646 0E81..0EDF)"
  :short-name "Lao"
  :code-space [0 255]
883
  :supplementary-p t
884
  :superset '(ascii eight-bit-control (lao . 128)))
885

Karl Heuer's avatar
Karl Heuer committed
886

887 888 889 890
;; Indian scripts.  Symbolic charset for data exchange.  Glyphs are
;; not assigned.  They are automatically converted to each Indian
;; script which IS-13194 supports.

Kenichi Handa's avatar
Kenichi Handa committed
891
(define-charset 'indian-is13194
892 893 894
  "7-bit representation of IS 13194 (ISCII) for Devanagari"
  :short-name "IS 13194 (DEV)"
  :long-name "Indian IS 13194 (DEV)"
Kenichi Handa's avatar
Kenichi Handa committed
895 896
  :iso-final-char ?5
  :emacs-mule-id 225
897
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
898
  :code-space [33 126]
899 900
  :code-offset #x180000
  :unify-map "MULE-is13194")
Kenichi Handa's avatar
Kenichi Handa committed
901

Kenichi Handa's avatar
Kenichi Handa committed
902 903 904 905
(let ((code-offset #x180100))
  (dolist (script '(devanagari sanskrit bengali tamil telugu assamese
			       oriya kannada malayalam gujarati punjabi))
    (define-charset (intern (format "%s-cdac" script))
906 907
      (format
       "Glyphs of %s script for CDAC font.  Subset of `indian-glyph'."
908
       (capitalize (symbol-name script)))
Kenichi Handa's avatar
Kenichi Handa committed
909
      :short-name (format "CDAC %s glyphs" (capitalize (symbol-name script)))
910
      :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
911 912 913 914 915 916 917
      :code-space [0 255]
      :code-offset code-offset)
    (setq code-offset (+ code-offset #x100)))

  (dolist (script '(devanagari bengali punjabi gujarati
			       oriya tamil telugu kannada malayalam))
    (define-charset (intern (format "%s-akruti" script))
918 919
      (format
       "Glyphs of %s script for AKRUTI font.  Subset of `indian-glyph'."
920
       (capitalize (symbol-name script)))
Kenichi Handa's avatar
Kenichi Handa committed
921
      :short-name (format "AKRUTI %s glyphs" (capitalize (symbol-name script)))
922
      :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
923 924 925
      :code-space [0 255]
      :code-offset code-offset)
    (setq code-offset (+ code-offset #x100))))
Dave Love's avatar
Dave Love committed
926

927
(define-charset 'indian-glyph
Kenichi Handa's avatar
Kenichi Handa committed
928 929 930 931
  "Glyphs for Indian characters."
  :short-name "Indian glyph"
  :iso-final-char ?4
  :emacs-mule-id 240
932
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
933 934
  :code-space [32 127 32 127]
  :code-offset #x180100)
935 936

;; Actual Glyph for 1-column width.
Kenichi Handa's avatar
Kenichi Handa committed
937
(define-charset 'indian-1-column
938
  "Indian charset for 1-column width glyphs."
Kenichi Handa's avatar
Kenichi Handa committed
939 940 941
  :short-name "Indian 1-col"
  :long-name "Indian 1 Column"
  :iso-final-char ?6
942
  :emacs-mule-id  251
943
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
944 945
  :code-space [33 126 33 126]
  :code-offset #x184000)
Karl Heuer's avatar
Karl Heuer committed
946 947

;; Actual Glyph for 2-column width.
Kenichi Handa's avatar
Kenichi Handa committed
948
(define-charset 'indian-2-column
949
  "Indian charset for 2-column width glyphs."
Kenichi Handa's avatar
Kenichi Handa committed
950 951 952 953
  :short-name "Indian 2-col"
  :long-name "Indian 2 Column"
  :iso-final-char ?5
  :emacs-mule-id  251
954
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
955
  :code-space [33 126 33 126]
956
  :code-offset #x184000)
Kenichi Handa's avatar
Kenichi Handa committed
957 958 959 960 961

(define-charset 'tibetan
  "Tibetan characters"
  :iso-final-char ?7
  :short-name "Tibetan 2-col"
Dave Love's avatar
Dave Love committed
962
  :long-name "Tibetan 2 column"
Kenichi Handa's avatar
Kenichi Handa committed
963 964
  :iso-final-char ?7
  :emacs-mule-id 252
Kenichi Handa's avatar
Kenichi Handa committed
965
  :unify-map "MULE-tibetan"
966
  :supplementary-p t
967
  :code-space [33 126 33 37]
Kenichi Handa's avatar
Kenichi Handa committed
968 969 970 971 972 973 974 975
  :code-offset #x190000)

(define-charset 'tibetan-1-column
  "Tibetan 1 column glyph"
  :short-name "Tibetan 1-col"
  :long-name "Tibetan 1 column"
  :iso-final-char ?8
  :emacs-mule-id 241
976
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
977
  :code-space [33 126 33 37]
978
  :code-offset #x190000)
979

Kenichi Handa's avatar
Kenichi Handa committed
980 981 982 983 984 985 986
;; Subsets of Unicode.
(define-charset 'mule-unicode-2500-33ff
  "Unicode characters of the range U+2500..U+33FF."
  :short-name "Unicode subset 2"
  :long-name "Unicode subset (U+2500..U+33FF)"
  :iso-final-char ?2
  :emacs-mule-id 242
987
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
988 989 990 991 992 993 994 995 996
  :code-space [#x20 #x7f #x20 #x47]
  :code-offset #x2500)

(define-charset 'mule-unicode-e000-ffff
  "Unicode characters of the range U+E000..U+FFFF."
  :short-name "Unicode subset 3"
  :long-name "Unicode subset (U+E000+FFFF)"
  :iso-final-char ?3
  :emacs-mule-id 243
997
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
998
  :code-space [#x20 #x7F #x20 #x75]
Dave Love's avatar
Dave Love committed
999 1000
  :code-offset #xE000
  :max-code 30015)			; U+FFFF
Kenichi Handa's avatar
Kenichi Handa committed
1001 1002 1003 1004 1005 1006 1007

(define-charset 'mule-unicode-0100-24ff
  "Unicode characters of the range U+0100..U+24FF."
  :short-name "Unicode subset"
  :long-name "Unicode subset (U+0100..U+24FF)"
  :iso-final-char ?1
  :emacs-mule-id 244
1008
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
1009 1010 1011
  :code-space [#x20 #x7F #x20 #x7F]
  :code-offset #x100)

Dave Love's avatar
Dave Love committed
1012
(define-charset 'unicode-bmp
1013
  "Unicode Basic Multilingual Plane (U+0000..U+FFFF)"
Dave Love's avatar
Dave Love committed
1014 1015
  :short-name "Unicode BMP"
  :code-space [0 255 0 255]
1016
  :code-offset 0)
Dave Love's avatar
Dave Love committed
1017

1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035
(define-charset 'unicode-smp
  "Unicode Supplementary Multilingual Plane (U+10000..U+1FFFF)"
  :short-name "Unicode SMP "
  :code-space [0 255 0 255]
  :code-offset #x10000)

(define-charset 'unicode-sip
  "Unicode Supplementary Ideographic Plane (U+20000..U+2FFFF)"
  :short-name "Unicode SIP"
  :code-space [0 255 0 255]
  :code-offset #x20000)

(define-charset 'unicode-ssp
  "Unicode Supplementary Special-purpose Plane (U+E0000..U+EFFFF)"
  :short-name "Unicode SSP"
  :code-space [0 255 0 255]
  :code-offset #xE0000)

Kenichi Handa's avatar
Kenichi Handa committed
1036
(define-charset 'ethiopic
Dave Love's avatar
Dave Love committed
1037
  "Ethiopic characters for Amharic and Tigrigna."
Kenichi Handa's avatar
Kenichi Handa committed
1038 1039 1040 1041
  :short-name "Ethiopic"
  :long-name "Ethiopic characters"
  :iso-final-char ?3
  :emacs-mule-id  245
1042
  :supplementary-p t
Kenichi Handa's avatar
Kenichi Handa committed
1043
  :unify-map "MULE-ethiopic"
Kenichi Handa's avatar
Kenichi Handa committed
1044 1045 1046 1047 1048 1049 1050 1051
  :code-space [33 126 33 126]
  :code-offset #x1A0000)

(define-charset 'mac-roman
  "Mac Roman charset"
  :short-name "Mac Roman"
  :ascii-compatible-p t
  :code-space [0 255]
Kenichi Handa's avatar
Kenichi Handa committed
1052
  :map "MACINTOSH")
Kenichi Handa's avatar
Kenichi Handa committed
1053

Dave Love's avatar
Dave Love committed
1054 1055 1056 1057 1058 1059
;; Fixme: modern EBCDIC variants, e.g. IBM00924?
(define-charset 'ebcdic-us
  "US version of EBCDIC"
  :short-name "EBCDIC-US"
  :code-space [0 255]
  :mime-charset 'ebcdic-us
Kenichi Handa's avatar
Kenichi Handa committed
1060
  :map "EBCDICUS")
Dave Love's avatar
Dave Love committed
1061 1062 1063 1064 1065 1066

(define-charset 'ebcdic-uk
  "UK version of EBCDIC"
  :short-name "EBCDIC-UK"
  :code-space [0 255]
  :mime-charset 'ebcdic-uk
Kenichi Handa's avatar
Kenichi Handa committed
1067
  :map "EBCDICUK")
Dave Love's avatar
Dave Love committed
1068

1069 1070 1071 1072 1073 1074 1075 1076 1077
(define-charset 'ibm038
  "International version of EBCDIC"
  :short-name "IBM038"
  :code-space [0 255]
  :mime-charset 'ibm038
  :map "IBM038")
(define-charset-alias 'ebcdic-int 'ibm038)
(define-charset-alias 'cp038 'ibm038)

Dave Love's avatar
Dave Love committed
1078 1079
(define-charset 'ibm1047
  ;; Says groff:
1080
  "IBM1047, `EBCDIC Latin 1/Open Systems' used by OS/390 Unix."
Dave Love's avatar
Dave Love committed
1081 1082 1083
  :short-name "IBM1047"
  :code-space [0 255]
  :mime-charset 'ibm1047
Kenichi Handa's avatar
Kenichi Handa committed
1084
  :map "IBM1047")
Dave Love's avatar
Dave Love committed
1085 1086
(define-charset-alias 'cp1047 'ibm1047)