annotate lisp/mule/mule-charset.el @ 442:abe6d1db359e r21-2-36

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