annotate lisp/mule/mule-charset.el @ 398:74fd4e045ea6 r21-2-29

Import from CVS: tag r21-2-29
author cvs
date Mon, 13 Aug 2007 11:13:30 +0200
parents 1f50e6fe4f3f
children 2f8bb876ab1d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
1 ;;; mule-charset.el --- Charset functions for Mule.
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
2
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
3 ;; Copyright (C) 1992 Free Software Foundation, Inc.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
4 ;; Copyright (C) 1995 Amdahl Corporation.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
5 ;; Copyright (C) 1996 Sun Microsystems.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
6
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
7 ;; Author: Unknown
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
8 ;; Keywords: i18n, mule, internal
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
9
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
10 ;; This file is part of XEmacs.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
11
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
12 ;; XEmacs is free software; you can redistribute it and/or modify it
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
13 ;; under the terms of the GNU General Public License as published by
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
15 ;; any later version.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
16
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
17 ;; XEmacs is distributed in the hope that it will be useful, but
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
20 ;; General Public License for more details.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
21
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
23 ;; along with XEmacs; see the file COPYING. If not, write to the
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
26
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
27 ;;; Synched up with: Not synched. API at source level synched with FSF 20.3.9.
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
28
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
29 ;;; Commentary:
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
30
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
31 ;; These functions are not compatible at the bytecode level with Emacs/Mule,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
32 ;; and they never will be. -sb [1999-05-26]
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
33
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
34 ;;; Code:
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
35
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
36 ;;;; Classifying text according to charsets
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
37
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
38 (defun charsets-in-region (start end &optional buffer)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
39 "Return a list of the charsets in the region between START and END.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
40 BUFFER defaults to the current buffer if omitted."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
41 (let (list)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
42 (save-excursion
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
43 (if buffer
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
44 (set-buffer buffer))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
45 (save-restriction
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
46 (narrow-to-region start end)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
47 (goto-char (point-min))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
48 (while (not (eobp))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
49 (let* (prev-charset
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
50 (ch (char-after (point)))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
51 (charset (char-charset ch)))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
52 (if (not (eq prev-charset charset))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
53 (progn
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
54 (setq prev-charset charset)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
55 (or (memq charset list)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
56 (setq list (cons charset list))))))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
57 (forward-char))))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
58 list))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
59
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
60 (defun charsets-in-string (string)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
61 "Return a list of the charsets in STRING."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
62 (let ((i 0)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
63 (len (length string))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
64 prev-charset charset list)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
65 (while (< i len)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
66 (setq charset (char-charset (aref string i)))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
67 (if (not (eq prev-charset charset))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
68 (progn
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
69 (setq prev-charset charset)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
70 (or (memq charset list)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
71 (setq list (cons charset list)))))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
72 (setq i (1+ i)))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
73 list))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
74
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
75
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
76 ;;;; Charset accessors
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
77
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
78 (defun charset-iso-graphic-plane (charset)
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
79 "Return the `graphic' property of CHARSET.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
80 See `make-charset'."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
81 (charset-property charset 'graphic))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
82
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
83 (defun charset-iso-final-char (charset)
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
84 "Return the final byte of the ISO 2022 escape sequence designating CHARSET."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
85 (charset-property charset 'final))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
86
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
87 (defun charset-chars (charset)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
88 "Return the number of characters per dimension of CHARSET."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
89 (charset-property charset 'chars))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
90
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
91 (defun charset-width (charset)
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
92 "Return the number of display columns per character of CHARSET.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
93 This only applies to TTY mode (under X, the actual display width can
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
94 be automatically determined)."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
95 (charset-property charset 'columns))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
96
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
97 ;; #### FSFmacs returns 0
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
98 (defun charset-direction (charset)
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
99 "Return the display direction (0 for `l2r' or 1 for `r2l') of CHARSET.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
100 Only left-to-right is currently implemented."
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
101 (if (eq (charset-property charset 'direction) 'l2r)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
102 0
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
103 1))
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
104
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
105 ;; Not in Emacs/Mule
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
106 (defun charset-registry (charset)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
107 "Return the registry of CHARSET.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
108 This is a regular expression matching the registry field of fonts
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
109 that can display the characters in CHARSET."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
110 (charset-property charset 'registry))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
111
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
112 (defun charset-ccl-program (charset)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
113 "Return the CCL program of CHARSET.
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
114 See `make-charset'."
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
115 (charset-property charset 'ccl-program))
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
116
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
117 (defun charset-bytes (charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
118 "Useless in XEmacs, returns 1."
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
119 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
120
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
121 (define-obsolete-function-alias 'charset-columns 'charset-width) ;; 19990409
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
122 (define-obsolete-function-alias 'charset-final 'charset-iso-final-char) ;; 19990409
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
123 (define-obsolete-function-alias 'charset-graphic 'charset-iso-graphic-plane) ;; 19990409
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
124 (define-obsolete-function-alias 'charset-doc-string 'charset-description) ;; 19990409
392
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
125
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
126 ;;;; Define setf methods for all settable Charset properties
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
127
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
128 (defsetf charset-registry set-charset-registry)
1f50e6fe4f3f Import from CVS: tag r21-2-11
cvs
parents:
diff changeset
129 (defsetf charset-ccl-program set-charset-ccl-program)
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
130
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
131 ;;; FSF compatibility functions
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
132 (defun charset-after (&optional pos)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
133 "Return charset of a character in current buffer at position POS.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
134 If POS is nil, it defauls to the current point.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
135 If POS is out of range, the value is nil."
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
136 (when (null pos)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
137 (setq pos (point)))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
138 (check-argument-type 'integerp pos)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
139 (unless (or (< pos (point-min))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
140 (> pos (point-max)))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
141 (char-charset (char-after pos))))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
142
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
143 ;; Yuck!
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
144 ;; We're not going to support this.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
145 ;(defun charset-info (charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
146 ; "Return a vector of information of CHARSET.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
147 ;The elements of the vector are:
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
148 ; CHARSET-ID, BYTES, DIMENSION, CHARS, WIDTH, DIRECTION,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
149 ; LEADING-CODE-BASE, LEADING-CODE-EXT,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
150 ; ISO-FINAL-CHAR, ISO-GRAPHIC-PLANE,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
151 ; REVERSE-CHARSET, SHORT-NAME, LONG-NAME, DESCRIPTION,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
152 ; PLIST,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
153 ;where
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
154 ;CHARSET-ID (integer) is the identification number of the charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
155 ;BYTES (integer) is the length of multi-byte form of a character in
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
156 ; the charset: one of 1, 2, 3, and 4.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
157 ;DIMENSION (integer) is the number of bytes to represent a character of
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
158 ;the charset: 1 or 2.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
159 ;CHARS (integer) is the number of characters in a dimension: 94 or 96.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
160 ;WIDTH (integer) is the number of columns a character in the charset
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
161 ; occupies on the screen: one of 0, 1, and 2.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
162 ;DIRECTION (integer) is the rendering direction of characters in the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
163 ; charset when rendering. If 0, render from left to right, else
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
164 ; render from right to left.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
165 ;LEADING-CODE-BASE (integer) is the base leading-code for the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
166 ; charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
167 ;LEADING-CODE-EXT (integer) is the extended leading-code for the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
168 ; charset. All charsets of less than 0xA0 has the value 0.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
169 ;ISO-FINAL-CHAR (character) is the final character of the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
170 ; corresponding ISO 2022 charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
171 ;ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
172 ; while encoding to variants of ISO 2022 coding system, one of the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
173 ; following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
174 ;REVERSE-CHARSET (integer) is the charset which differs only in
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
175 ; LEFT-TO-RIGHT value from the charset. If there's no such a
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
176 ; charset, the value is -1.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
177 ;SHORT-NAME (string) is the short name to refer to the charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
178 ;LONG-NAME (string) is the long name to refer to the charset
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
179 ;DESCRIPTION (string) is the description string of the charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
180 ;PLIST (property list) may contain any type of information a user
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
181 ; want to put and get by functions `put-charset-property' and
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
182 ; `get-charset-property' respectively."
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
183 ; (vector
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
184 ; (charset-id charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
185 ; 1
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
186 ; (charset-dimension charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
187 ; (charset-chars charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
188 ; (charset-width charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
189 ; (charset-direction charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
190 ; nil ;; (charset-leading-code-base (charset))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
191 ; nil ;; (charset-leading-code-ext (charset))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
192 ; (charset-iso-final-char charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
193 ; (charset-iso-graphic-plane charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
194 ; -1
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
195 ; (charset-short-name charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
196 ; (charset-long-name charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
197 ; (charset-description charset)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
198 ; (charset-plist charset)))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
199
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
200 ;(make-compatible 'charset-info "Don't use this if you can help it.")
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
201
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
202 (defun define-charset (charset-id charset property-vector)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
203 "Define CHARSET-ID as the identification number of CHARSET with INFO-VECTOR.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
204 If CHARSET-ID is nil, it is decided automatically, which means CHARSET is
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
205 treated as a private charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
206 INFO-VECTOR is a vector of the format:
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
207 [DIMENSION CHARS WIDTH DIRECTION ISO-FINAL-CHAR ISO-GRAPHIC-PLANE
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
208 SHORT-NAME LONG-NAME DESCRIPTION]
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
209 The meanings of each elements is as follows:
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
210 DIMENSION (integer) is the number of bytes to represent a character: 1 or 2.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
211 CHARS (integer) is the number of characters in a dimension: 94 or 96.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
212 WIDTH (integer) is the number of columns a character in the charset
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
213 occupies on the screen: one of 0, 1, and 2.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
214
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
215 DIRECTION (integer) is the rendering direction of characters in the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
216 charset when rendering. If 0, render from left to right, else
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
217 render from right to left.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
218
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
219 ISO-FINAL-CHAR (character) is the final character of the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
220 corresponding ISO 2022 charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
221
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
222 ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
223 while encoding to variants of ISO 2022 coding system, one of the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
224 following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
225
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
226
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
227 SHORT-NAME (string) is the short name to refer to the charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
228
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
229 LONG-NAME (string) is the long name to refer to the charset.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
230
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
231 DESCRIPTION (string) is the description string of the charset."
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
232 (make-charset charset (aref property-vector 8)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
233 (list
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
234 'short-name (aref property-vector 6)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
235 'long-name (aref property-vector 7)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
236 'dimension (aref property-vector 0)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
237 'columns (aref property-vector 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
238 'chars (aref property-vector 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
239 'final (aref property-vector 4)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
240 'graphic (aref property-vector 5)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
241 'direction (aref property-vector 3))))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
242
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
243 (make-compatible 'define-charset "")
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
244
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
245 ;;; Charset property
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
246
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
247 (defalias 'get-charset-property 'get)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
248 (defalias 'put-charset-property 'put)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
249 (defalias 'charset-plist 'object-plist)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
250 (defalias 'set-charset-plist 'setplist)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
251
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 392
diff changeset
252 ;;; mule-charset.el ends here