Commit | Line | Data |
---|---|---|
4c813282 | 1 | ;;; latin1-disp.el --- display tables for other ISO 8859 on Latin-1 terminals -*- coding: iso-2022-7bit -*- |
7d354dd5 DL |
2 | |
3 | ;; Copyright (C) 2000 Free Software Foundation, Inc. | |
4 | ||
5 | ;; Author: Dave Love <fx@gnu.org> | |
6 | ;; Keywords: i18n | |
7 | ||
8 | ;; This file is part of GNU Emacs. | |
9 | ||
10 | ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 | ;; it under the terms of the GNU General Public License as published by | |
12 | ;; the Free Software Foundation; either version 2, or (at your option) | |
13 | ;; any later version. | |
14 | ||
15 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | ;; GNU General Public License for more details. | |
19 | ||
20 | ;; You should have received a copy of the GNU General Public License | |
21 | ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
22 | ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 | ;; Boston, MA 02111-1307, USA. | |
24 | ||
25 | ;;; Commentary: | |
26 | ||
27 | ;; This package sets up display of ISO 8859-n for n>1 by substituting | |
28 | ;; Latin-1 characters and sequences of them for characters which can't | |
4e22d295 | 29 | ;; be displayed, either because we're on a tty or because we don't |
7d354dd5 DL |
30 | ;; have the relevant window system fonts available. For instance, |
31 | ;; Latin-9 is very similar to Latin-1, so we can display most Latin-9 | |
32 | ;; characters using the Latin-1 characters at the same code point and | |
33 | ;; fall back on more-or-less mnemonic ASCII sequences for the rest. | |
34 | ||
35 | ;; For the Latin charsets the ASCII sequences are mostly consistent | |
36 | ;; with the Quail prefix input sequences. Latin-4 uses the Quail | |
4c813282 | 37 | ;; postfix sequences since a prefix method isn't defined for Latin-4. |
7d354dd5 | 38 | |
4c813282 | 39 | ;; [A different approach is taken in the DOS display tables in |
7d354dd5 DL |
40 | ;; term/internal.el, and the relevant ASCII sequences from there are |
41 | ;; available as an alternative; see `latin1-display-mnemonic'. Only | |
4c813282 | 42 | ;; these sequences are used for Cyrillic, Greek and Hebrew.] |
7d354dd5 DL |
43 | |
44 | ;; If you don't even have Latin-1, see iso-ascii.el and use the | |
45 | ;; complete tables from internal.el. The ASCII sequences used here | |
46 | ;; are mostly in the same style as iso-ascii. | |
47 | ||
48 | ;;; Code: | |
49 | ||
9eaf396b DL |
50 | ;; Ensure `standard-display-table' is set up: |
51 | (require 'disp-table) | |
52 | ||
7d354dd5 DL |
53 | (defconst latin1-display-sets '(latin-2 latin-3 latin-4 latin-5 latin-8 |
54 | latin-9 cyrillic greek hebrew) | |
55 | "The ISO8859 character sets with defined Latin-1 display sequences. | |
56 | These are the nicknames for the sets and correspond to Emacs language | |
57 | environments.") | |
58 | ||
59 | (defgroup latin1-display () | |
60 | "Set up display tables for ISO8859 characters using Latin-1." | |
61 | :version "21.1" | |
4c813282 | 62 | :link '(emacs-commentary-link "latin1-disp") |
7d354dd5 DL |
63 | :group 'i18n) |
64 | ||
65 | (defcustom latin1-display-format "{%s}" | |
66 | "A format string used to display the ASCII sequences. | |
67 | The default encloses the sequence in braces, but you could just use | |
68 | \"%s\" to avoid the braces." | |
69 | :group 'latin1-display | |
70 | :type 'string) | |
71 | ||
72 | ;;;###autoload | |
73 | (defcustom latin1-display nil | |
74 | "Set up Latin-1/ASCII display for ISO8859 character sets. | |
75 | This is done for each character set in the list `latin1-display-sets', | |
76 | if no font is available to display it. Characters are displayed using | |
77 | the corresponding Latin-1 characters where they match. Otherwise | |
78 | ASCII sequences are used, mostly following the Latin prefix input | |
79 | methods. Some different ASCII sequences are used if | |
80 | `latin1-display-mnemonic' is non-nil. | |
81 | ||
82 | Setting this variable directly does not take effect; | |
83 | use either M-x customize of the function `latin1-display'." | |
84 | :group 'latin1-display | |
85 | :type 'boolean | |
86 | :require 'latin1-disp | |
87 | :initialize 'custom-initialize-default | |
88 | :set (lambda (symbol value) | |
9eaf396b DL |
89 | (set-default symbol value) |
90 | (mapc (if value | |
91 | #'latin1-display-setup | |
92 | #'latin1-display-reset) | |
93 | latin1-display-sets) | |
94 | (redraw-display))) | |
7d354dd5 DL |
95 | |
96 | ;;;###autoload | |
97 | (defun latin1-display (&rest sets) | |
98 | "Set up Latin-1/ASCII display for the arguments character SETS. | |
99 | See option `latin1-display' for the method. The members of the list | |
100 | must be in `latin1-display-sets'. With no arguments, reset the | |
101 | display for all of `latin1-display-sets'. See also `latin1-display-setup'." | |
102 | (if sets | |
4c813282 DL |
103 | (progn (mapc #'latin1-display-setup sets) |
104 | (setq latin1-display t)) | |
105 | (mapc #'latin1-display-reset latin1-display-sets) | |
106 | (setq latin1-display nil)) | |
107 | (redraw-display)) | |
7d354dd5 DL |
108 | |
109 | (defcustom latin1-display-mnemonic nil | |
110 | "Non-nil means to display potentially more mnemonic sequences. | |
111 | These are taken from the tables in `internal.el' rather than the Quail | |
112 | input sequences." | |
113 | :type 'boolean | |
114 | :group 'latin1-display) | |
115 | ||
116 | (defun latin1-display-char (char display &optional alt-display) | |
117 | "Make an entry in `standard-display-table' for CHAR using string DISPLAY. | |
118 | If ALT-DISPLAY is provided, use that instead if | |
119 | `latin1-display-mnemonic' is non-nil. The actual string displayed is | |
120 | formatted using `latin1-display-format'." | |
121 | (if (and (stringp alt-display) | |
122 | latin1-display-mnemonic) | |
123 | (setq display alt-display)) | |
124 | (if (stringp display) | |
125 | (standard-display-ascii char (format latin1-display-format display)) | |
126 | (aset standard-display-table char display))) | |
127 | ||
128 | (defun latin1-display-identities (charset) | |
129 | "Display each character in CHARSET as the corresponding Latin-1 character. | |
4c813282 DL |
130 | CHARSET is a symbol which is the nickname of a language environment |
131 | using an ISO8859 character set." | |
7d354dd5 DL |
132 | (if (eq charset 'cyrillic) |
133 | (setq charset 'cyrillic-iso)) | |
134 | (let ((i 32) | |
135 | (set (car (remq 'ascii (get-language-info charset 'charset))))) | |
136 | (while (<= i 127) | |
137 | (aset standard-display-table | |
138 | (make-char set i) | |
139 | (vector (make-char 'latin-iso8859-1 i))) | |
140 | (setq i (1+ i))))) | |
141 | ||
142 | (defun latin1-display-reset (language) | |
143 | "Set up the default display for each character of LANGUAGE's charset. | |
4c813282 | 144 | LANGUAGE is a symbol naming a language environment using an ISO8859 |
7d354dd5 DL |
145 | character set." |
146 | (if (eq language 'cyrillic) | |
147 | (setq language 'cyrillic-iso)) | |
148 | (let ((charset (car (remq 'ascii (get-language-info language | |
149 | 'charset))))) | |
150 | (standard-display-default (make-char charset 32) | |
151 | (make-char charset 127))) | |
152 | (sit-for 0)) | |
153 | ||
7d354dd5 DL |
154 | (defun latin1-display-check-font (language) |
155 | "Return non-nil if we have a font with an encoding for LANGUAGE. | |
156 | LANGUAGE is a symbol naming a language environment using an ISO8859 | |
157 | character set: `latin-2', `hebrew' etc." | |
158 | (if (eq language 'cyrillic) | |
159 | (setq language 'cyrillic-iso)) | |
fa2c768f DL |
160 | (let* ((info (get-language-info language 'charset)) |
161 | (char (make-char (car (remq 'ascii info)) ?\ ))) | |
162 | (latin1-char-displayable-p char))) | |
163 | ||
164 | ;; This should be moved into mule-utils or somewhere after 21.1. | |
165 | (defun latin1-char-displayable-p (char) | |
166 | (cond ((< char 256) | |
167 | ;; Single byte characters are always displayable. | |
168 | t) | |
c8e6a854 | 169 | ((display-multi-font-p) |
fa2c768f DL |
170 | ;; On a window system, a character is displayable if we have |
171 | ;; a font for that character in the default face of the | |
172 | ;; currently selected frame. | |
173 | (let ((fontset (frame-parameter (selected-frame) 'font)) | |
174 | font-pattern) | |
175 | (if (query-fontset fontset) | |
176 | (setq font-pattern (fontset-font fontset char))) | |
177 | (or font-pattern | |
178 | (setq font-pattern (fontset-font "fontset-default" char))) | |
179 | (if font-pattern | |
180 | (progn | |
181 | ;; Now FONT-PATTERN is a string or a cons of family | |
b2bc32fc | 182 | ;; field pattern and registry field pattern. |
fa2c768f DL |
183 | (or (stringp font-pattern) |
184 | (setq font-pattern (concat (or (car font-pattern) "*") | |
185 | "-*-" | |
186 | (cdr font-pattern)))) | |
187 | (x-list-fonts font-pattern 'default (selected-frame) 1))))) | |
188 | (t | |
189 | (let ((coding (terminal-coding-system))) | |
190 | (if coding | |
191 | (let ((safe-chars (coding-system-get coding 'safe-chars)) | |
192 | (safe-charsets (coding-system-get coding 'safe-charsets))) | |
193 | (or (and safe-chars | |
194 | (aref safe-chars char)) | |
195 | (and safe-charsets | |
196 | (memq (char-charset char) safe-charsets))))))))) | |
7d354dd5 DL |
197 | |
198 | (defun latin1-display-setup (set &optional force) | |
199 | "Set up Latin-1 display for characters in the given SET. | |
200 | SET must be a member of `latin1-display-sets'. Normally, check | |
201 | whether a font for SET is available and don't set the display if it | |
202 | is. If FORCE is non-nil, set up the display regardless." | |
203 | (cond | |
204 | ((eq set 'latin-2) | |
205 | (when (or force | |
206 | (not (latin1-display-check-font set))) | |
207 | (latin1-display-identities set) | |
208 | (mapc | |
209 | (lambda (l) | |
210 | (apply 'latin1-display-char l)) | |
4c813282 DL |
211 | '((?\e,BF\e(B "'C" "C'") |
212 | (?\e,BP\e(B "'D" "/D") | |
213 | (?\e,B&\e(B "'S" "S'") | |
214 | (?\e,Bf\e(B "'c" "c'") | |
215 | (?\e,Bp\e(B "'d" "/d") | |
216 | (?\e,BE\e(B "'L" "L'") | |
217 | (?\e,Bq\e(B "'n" "n'") | |
218 | (?\e,BQ\e(B "'N" "N'") | |
219 | (?\e,B`\e(B "'r" "r'") | |
220 | (?\e,B@\e(B "'R" "R'") | |
221 | (?\e,B6\e(B "'s" "s'") | |
222 | (?\e,B<\e(B "'z" "z'") | |
223 | (?\e,B,\e(B "'Z" "Z'") | |
224 | (?\e,B!\e(B "`A" "A;") | |
225 | (?\e,BJ\e(B "`E" "E;") | |
226 | (?\e,B#\e(B "`L" "/L") | |
227 | (?\e,B*\e(B "`S" ",S") | |
228 | (?\e,B^\e(B "`T" ",T") | |
229 | (?\e,B/\e(B "`Z" "Z^.") | |
230 | (?\e,B1\e(B "`a" "a;") | |
231 | (?\e,B3\e(B "`l" "/l") | |
232 | (?\e,Bj\e(B "`e" "e;") | |
233 | (?\e,B:\e(B "`s" ",s") | |
234 | (?\e,B~\e(B "`t" ",t") | |
235 | (?\e,B?\e(B "`z" "z^.") | |
236 | (?\e,B\7f\e(B "`." "'.") | |
237 | (?\e,BC\e(B "~A" "A(") | |
238 | (?\e,BH\e(B "~C" "C<") | |
239 | (?\e,BO\e(B "~D" "D<") | |
240 | (?\e,BL\e(B "~E" "E<") | |
241 | (?\e,Bl\e(B "~e" "e<") | |
242 | (?\e,B%\e(B "~L" "L<") | |
243 | (?\e,BR\e(B "~N" "N<") | |
244 | (?\e,BU\e(B "~O" "O''") | |
245 | (?\e,BX\e(B "~R" "R<") | |
246 | (?\e,B)\e(B "~S" "S<") | |
247 | (?\e,B+\e(B "~T" "T<") | |
248 | (?\e,B[\e(B "~U" "U''") | |
249 | (?\e,B.\e(B "~Z" "Z<") | |
250 | (?\e,Bc\e(B "~a" "a(}") | |
251 | (?\e,Bh\e(B "~c" "c<") | |
252 | (?\e,Bo\e(B "~d" "d<") | |
253 | (?\e,B5\e(B "~l" "l<") | |
254 | (?\e,Br\e(B "~n" "n<") | |
255 | (?\e,Bu\e(B "~o" "o''") | |
256 | (?\e,Bx\e(B "~r" "r<") | |
257 | (?\e,B9\e(B "~s" "s<") | |
258 | (?\e,B;\e(B "~t" "t<") | |
259 | (?\e,B{\e(B "~u" "u''") | |
260 | (?\e,B>\e(B "~z" "z<") | |
261 | (?\e,B7\e(B "~v" "'<") ; ?\e,B"\e(B in latin-pre | |
262 | (?\e,B"\e(B "~~" "'(") | |
263 | (?\e,By\e(B "uu" "u^0") | |
264 | (?\e,BY\e(B "UU" "U^0") | |
265 | (?\e,BD\e(B "\"A") | |
266 | (?\e,Bd\e(B "\"a") | |
267 | (?\e,BK\e(B "\"E" "E:") | |
268 | (?\e,Bk\e(B "\"e") | |
269 | (?\e,B=\e(B "''" "'") | |
270 | (?\e,B7\e(B "'<") ; Lynx's rendering of caron | |
7d354dd5 DL |
271 | )))) |
272 | ||
273 | ((eq set 'latin-3) | |
274 | (when (or force | |
275 | (not (latin1-display-check-font set))) | |
276 | (latin1-display-identities set) | |
277 | (mapc | |
278 | (lambda (l) | |
279 | (apply 'latin1-display-char l)) | |
4c813282 DL |
280 | '((?\e,C!\e(B "/H") |
281 | (?\e,C"\e(B "~`" "'(") | |
282 | (?\e,C&\e(B "^H" "H^") | |
283 | (?\e,C6\e(B "^h" "h^") | |
284 | (?\e,C)\e(B ".I" "I^.") | |
285 | (?\e,C*\e(B ",S") | |
286 | (?\e,C+\e(B "~G" "G(") | |
287 | (?\e,C,\e(B "^J" "J^") | |
288 | (?\e,C/\e(B ".Z" "Z^.") | |
289 | (?\e,C1\e(B "/h") | |
290 | (?\e,C9\e(B ".i" "i^.") | |
291 | (?\e,C:\e(B ",s") | |
292 | (?\e,C;\e(B "~g" "g(") | |
293 | (?\e,C<\e(B "^j" "j^") | |
294 | (?\e,C?\e(B ".Z" "z^.") | |
295 | (?\e,CE\e(B ".c" "C^.") | |
296 | (?\e,CF\e(B "^C" "C^") | |
297 | (?\e,CU\e(B ".G" "G^.") | |
298 | (?\e,CX\e(B "^G" "G^") | |
299 | (?\e,C]\e(B "~U" "U(") | |
300 | (?\e,C^\e(B "^S" "S^") | |
301 | (?\e,Ce\e(B ".C" "c^.") | |
302 | (?\e,Cf\e(B "^c" "c^") | |
303 | (?\e,Cu\e(B ".g" "g^.") | |
304 | (?\e,Cx\e(B "^g" "g^") | |
305 | (?\e,C}\e(B "~u" "u(") | |
306 | (?\e,C~\e(B "^s" "s^") | |
307 | (?\e,C\7f\e(B "/." "^."))))) | |
7d354dd5 DL |
308 | |
309 | ((eq set 'latin-4) | |
310 | (when (or force | |
311 | (not (latin1-display-check-font set))) | |
312 | (latin1-display-identities set) | |
313 | (mapc | |
314 | (lambda (l) | |
315 | (apply 'latin1-display-char l)) | |
4c813282 DL |
316 | '((?\e,D!\e(B "A," "A;") |
317 | (?\e,D"\e(B "k/" "kk") | |
318 | (?\e,D#\e(B "R," ",R") | |
319 | (?\e,D%\e(B "I~" "?I") | |
320 | (?\e,D&\e(B "L," ",L") | |
321 | (?\e,D)\e(B "S~" "S<") | |
322 | (?\e,D*\e(B "E-") | |
323 | (?\e,D+\e(B "G," ",G") | |
324 | (?\e,D,\e(B "T/" "/T") | |
325 | (?\e,D.\e(B "Z~" "Z<") | |
326 | (?\e,D1\e(B "a," "a;") | |
327 | (?\e,D2\e(B "';") | |
328 | (?\e,D3\e(B "r," ",r") | |
329 | (?\e,D5\e(B "i~" "~i") | |
330 | (?\e,D6\e(B "l," ",l") | |
331 | (?\e,D7\e(B "'<") | |
332 | (?\e,D9\e(B "s~" "s<") | |
333 | (?\e,D:\e(B "e-") | |
334 | (?\e,D;\e(B "g," ",g") | |
335 | (?\e,D<\e(B "t/" "/t") | |
336 | (?\e,D=\e(B "N/" "NG") | |
337 | (?\e,D>\e(B "z~" "z<") | |
338 | (?\e,D?\e(B "n/" "ng") | |
339 | (?\e,D@\e(B "A-") | |
340 | (?\e,DG\e(B "I," "I;") | |
341 | (?\e,DH\e(B "C~" "C<") | |
342 | (?\e,DJ\e(B "E," "E;") | |
343 | (?\e,DL\e(B "E." "E^.") | |
344 | (?\e,DO\e(B "I-") | |
345 | (?\e,DQ\e(B "N," ",N") | |
346 | (?\e,DR\e(B "O-") | |
347 | (?\e,DS\e(B "K," ",K") | |
348 | (?\e,DY\e(B "U," "U;") | |
349 | (?\e,D]\e(B "U~" "~U") | |
350 | (?\e,D^\e(B "U-") | |
351 | (?\e,D`\e(B "a-") | |
352 | (?\e,Dg\e(B "i," "i;") | |
353 | (?\e,Dh\e(B "c~" "c<") | |
354 | (?\e,Dj\e(B "e," "e;") | |
355 | (?\e,Dl\e(B "e." "e^.") | |
356 | (?\e,Do\e(B "i-") | |
357 | (?\e,Dp\e(B "d/" "/d") | |
358 | (?\e,Dq\e(B "n," ",n") | |
359 | (?\e,Dr\e(B "o-") | |
360 | (?\e,Ds\e(B "k," ",k") | |
361 | (?\e,Dy\e(B "u," "u;") | |
362 | (?\e,D}\e(B "u~" "~u") | |
363 | (?\e,D~\e(B "u-") | |
364 | (?\e,D\7f\e(B "^."))))) | |
7d354dd5 DL |
365 | |
366 | ((eq set 'latin-5) | |
367 | (when (or force | |
368 | (not (latin1-display-check-font set))) | |
369 | (latin1-display-identities set) | |
370 | (mapc | |
371 | (lambda (l) | |
372 | (apply 'latin1-display-char l)) | |
4c813282 DL |
373 | '((?\e,Mp\e(B "~g" "g(") |
374 | (?\e,MP\e(B "~G" "G(") | |
375 | (?\e,M]\e(B ".I" "I^.") | |
376 | (?\e,M~\e(B ",s") | |
377 | (?\e,M^\e(B ",S") | |
378 | (?\e,Mj\e(B "^e" "e<") ; from latin-post | |
379 | (?\e,Ml\e(B ".e" "e^.") | |
380 | (?\e,Mo\e(B "\"i" "i-") ; from latin-post | |
381 | (?\e,M}\e(B ".i" "i."))))) | |
7d354dd5 DL |
382 | |
383 | ((eq set 'latin-8) | |
384 | (when (or force | |
385 | (not (latin1-display-check-font set))) | |
386 | (latin1-display-identities set) | |
387 | (mapc | |
388 | (lambda (l) | |
389 | (apply 'latin1-display-char l)) | |
4c813282 DL |
390 | '((?\e,_!\e(B ".B" "B`") |
391 | (?\e,_"\e(B ".b" "b`") | |
392 | (?\e,_%\e(B ".c" "c`") | |
393 | (?\e,_$\e(B ".C" "C`") | |
394 | (?\e,_&\e(B ".D" "D`") | |
395 | (?\e,_+\e(B ".d" "d`") | |
396 | (?\e,_8\e(B "`w") | |
397 | (?\e,_(\e(B "`W") | |
398 | (?\e,_:\e(B "'w" "w'") | |
399 | (?\e,_*\e(B "'W" "W'") | |
400 | (?\e,_<\e(B "`y") | |
401 | (?\e,_,\e(B "`Y") | |
402 | (?\e,_1\e(B ".f" "f`") | |
403 | (?\e,_0\e(B ".F" "F`") | |
404 | (?\e,_3\e(B ".g" "g`") | |
405 | (?\e,_2\e(B ".G" "G`") | |
406 | (?\e,_5\e(B ".m" "m`") | |
407 | (?\e,_4\e(B ".M" "M`") | |
408 | (?\e,_9\e(B ".p" "p`") | |
409 | (?\e,_7\e(B ".P" "P`") | |
410 | (?\e,_?\e(B ".s" "s`") | |
411 | (?\e,_;\e(B ".S" "S`") | |
412 | (?\e,_>\e(B "\"w") | |
413 | (?\e,_=\e(B "\"W") | |
414 | (?\e,_p\e(B "^w" "w^") | |
415 | (?\e,_P\e(B "^W" "W^") | |
416 | (?\e,_w\e(B ".t" "t`") | |
417 | (?\e,_W\e(B ".T" "T`") | |
418 | (?\e,_~\e(B "^y" "y^") | |
419 | (?\e,_^\e(B "^Y" "Y^") | |
420 | (?\e,_/\e(B "\"Y"))))) | |
7d354dd5 DL |
421 | |
422 | ((eq set 'latin-9) | |
423 | (when (or force | |
424 | (not (latin1-display-check-font set))) | |
425 | (latin1-display-identities set) | |
426 | (mapc | |
427 | (lambda (l) | |
428 | (apply 'latin1-display-char l)) | |
4c813282 DL |
429 | '((?\e,b(\e(B "~s" "s<") |
430 | (?\e,b&\e(B "~S" "S<") | |
431 | (?\e,b$\e(B "Euro" "E=") | |
432 | (?\e,b8\e(B "~z" "z<") | |
433 | (?\e,b4\e(B "~Z" "Z<") | |
434 | (?\e,b>\e(B "\"Y") | |
435 | (?\e,b=\e(B "oe") | |
436 | (?\e,b<\e(B "OE"))))) | |
7d354dd5 DL |
437 | |
438 | ((eq set 'greek) | |
439 | (when (or force | |
440 | (not (latin1-display-check-font set))) | |
441 | (mapc | |
442 | (lambda (l) | |
443 | (apply 'latin1-display-char l)) | |
4c813282 DL |
444 | '((?\e,F!\e(B "9'") |
445 | (?\e,F"\e(B "'9") | |
446 | (?\e,F/\e(B "-M") | |
447 | (?\e,F5\e(B "'%") | |
448 | (?\e,F6\e(B "'A") | |
449 | (?\e,F8\e(B "'E") | |
450 | (?\e,F9\e(B "'H") | |
451 | (?\e,F:\e(B "'I") | |
452 | (?\e,F<\e(B "'O") | |
453 | (?\e,F>\e(B "'Y") | |
454 | (?\e,F?\e(B "W%") | |
455 | (?\e,F@\e(B "i3") | |
456 | (?\e,FC\e(B "G*") | |
457 | (?\e,FD\e(B "D*") | |
458 | (?\e,FH\e(B "TH") | |
459 | (?\e,FK\e(B "L*") | |
460 | (?\e,FN\e(B "C*") | |
461 | (?\e,FP\e(B "P*") | |
462 | (?\e,FS\e(B "S*") | |
463 | (?\e,FV\e(B "F*") | |
464 | (?\e,FX\e(B "Q*") | |
465 | (?\e,FY\e(B "W*") | |
466 | (?\e,FZ\e(B "\"I") | |
467 | (?\e,F[\e(B "\"Y") | |
468 | (?\e,F\\e(B "a%") | |
469 | (?\e,F]\e(B "e%") | |
470 | (?\e,F^\e(B "y%") | |
471 | (?\e,F_\e(B "i%") | |
472 | (?\e,F`\e(B "u3") | |
473 | (?\e,Fa\e(B "a*") | |
474 | (?\e,Fb\e(B "b*") | |
475 | (?\e,Fc\e(B "g*") | |
476 | (?\e,Fd\e(B "d*") | |
477 | (?\e,Fe\e(B "e*") | |
478 | (?\e,Ff\e(B "z*") | |
479 | (?\e,Fg\e(B "y*") | |
480 | (?\e,Fh\e(B "h*") | |
481 | (?\e,Fi\e(B "i*") | |
482 | (?\e,Fj\e(B "k") | |
483 | (?\e,Fk\e(B "l*") | |
484 | (?\e,Fl\e(B "m*") | |
485 | (?\e,Fm\e(B "n*") | |
486 | (?\e,Fn\e(B "c*") | |
487 | (?\e,Fp\e(B "p*") | |
488 | (?\e,Fq\e(B "r*") | |
489 | (?\e,Fr\e(B "*s") | |
490 | (?\e,Fs\e(B "s*") | |
491 | (?\e,Ft\e(B "t*") | |
492 | (?\e,Fu\e(B "u") | |
493 | (?\e,Fv\e(B "f*") | |
494 | (?\e,Fw\e(B "x*") | |
495 | (?\e,Fx\e(B "q*") | |
496 | (?\e,Fy\e(B "w*") | |
497 | (?\e,Fz\e(B "\"i") | |
498 | (?\e,F{\e(B "\"u") | |
499 | (?\e,F|\e(B "'o") | |
500 | (?\e,F}\e(B "'u") | |
501 | (?\e,F~\e(B "'w"))) | |
7d354dd5 DL |
502 | (mapc |
503 | (lambda (l) | |
504 | (aset standard-display-table (car l) (string-to-vector (cadr l)))) | |
4c813282 DL |
505 | '((?\e,FA\e(B "A") |
506 | (?\e,FB\e(B "B") | |
507 | (?\e,FE\e(B "E") | |
508 | (?\e,FF\e(B "Z") | |
509 | (?\e,FG\e(B "H") | |
510 | (?\e,FI\e(B "I") | |
511 | (?\e,FJ\e(B "J") | |
512 | (?\e,FL\e(B "M") | |
513 | (?\e,FM\e(B "N") | |
514 | (?\e,FO\e(B "O") | |
515 | (?\e,FQ\e(B "P") | |
516 | (?\e,FT\e(B "T") | |
517 | (?\e,FU\e(B "Y") | |
518 | (?\e,FW\e(B "X") | |
519 | (?\e,Fo\e(B "o"))))) | |
7d354dd5 DL |
520 | |
521 | ((eq set 'hebrew) | |
522 | (when (or force | |
523 | (not (latin1-display-check-font set))) | |
524 | ;; Don't start with identities, since we don't have definitions | |
525 | ;; for a lot of Hebrew in internal.el. (Intlfonts is also | |
526 | ;; missing some glyphs.) | |
527 | (let ((i 34)) | |
528 | (while (<= i 62) | |
529 | (aset standard-display-table | |
530 | (make-char 'hebrew-iso8859-8 i) | |
531 | (vector (make-char 'latin-iso8859-1 i))) | |
532 | (setq i (1+ i)))) | |
533 | (mapc | |
534 | (lambda (l) | |
535 | (aset standard-display-table (car l) (string-to-vector (cadr l)))) | |
4c813282 DL |
536 | '((?\e,H_\e(B "=2") |
537 | (?\e,H`\e(B "A+") | |
538 | (?\e,Ha\e(B "B+") | |
539 | (?\e,Hb\e(B "G+") | |
540 | (?\e,Hc\e(B "D+") | |
541 | (?\e,Hd\e(B "H+") | |
542 | (?\e,He\e(B "W+") | |
543 | (?\e,Hf\e(B "Z+") | |
544 | (?\e,Hg\e(B "X+") | |
545 | (?\e,Hh\e(B "Tj") | |
546 | (?\e,Hi\e(B "J+") | |
547 | (?\e,Hj\e(B "K%") | |
548 | (?\e,Hk\e(B "K+") | |
549 | (?\e,Hl\e(B "L+") | |
550 | (?\e,Hm\e(B "M%") | |
551 | (?\e,Hn\e(B "M+") | |
552 | (?\e,Ho\e(B "N%") | |
553 | (?\e,Hp\e(B "N+") | |
554 | (?\e,Hq\e(B "S+") | |
555 | (?\e,Hr\e(B "E+") | |
556 | (?\e,Hs\e(B "P%") | |
557 | (?\e,Ht\e(B "P+") | |
558 | (?\e,Hu\e(B "Zj") | |
559 | (?\e,Hv\e(B "ZJ") | |
560 | (?\e,Hw\e(B "Q+") | |
561 | (?\e,Hx\e(B "R+") | |
562 | (?\e,Hy\e(B "Sh") | |
563 | (?\e,Hz\e(B "T+"))))) | |
7d354dd5 DL |
564 | |
565 | ((eq set 'cyrillic) | |
566 | (setq set 'cyrillic-iso) | |
567 | (when (or force | |
568 | (not (latin1-display-check-font set))) | |
569 | (mapc | |
570 | (lambda (l) | |
571 | (apply 'latin1-display-char l)) | |
4c813282 DL |
572 | '((?\e,L"\e(B "Dj") |
573 | (?\e,L#\e(B "Gj") | |
574 | (?\e,L$\e(B "IE") | |
575 | (?\e,L)\e(B "Lj") | |
576 | (?\e,L*\e(B "Nj") | |
577 | (?\e,L+\e(B "Ts") | |
578 | (?\e,L,\e(B "Kj") | |
579 | (?\e,L.\e(B "V%") | |
580 | (?\e,L/\e(B "Dzh") | |
581 | (?\e,L1\e(B "B=") | |
582 |