Doc fixes. Change coding to
[bpt/emacs.git] / lisp / international / latin1-disp.el
CommitLineData
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.
56These are the nicknames for the sets and correspond to Emacs language
57environments.")
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.
67The 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.
75This is done for each character set in the list `latin1-display-sets',
76if no font is available to display it. Characters are displayed using
77the corresponding Latin-1 characters where they match. Otherwise
78ASCII sequences are used, mostly following the Latin prefix input
79methods. Some different ASCII sequences are used if
80`latin1-display-mnemonic' is non-nil.
81
82Setting this variable directly does not take effect;
83use 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.
99See option `latin1-display' for the method. The members of the list
100must be in `latin1-display-sets'. With no arguments, reset the
101display 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.
111These are taken from the tables in `internal.el' rather than the Quail
112input 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.
118If ALT-DISPLAY is provided, use that instead if
119`latin1-display-mnemonic' is non-nil. The actual string displayed is
120formatted 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
130CHARSET is a symbol which is the nickname of a language environment
131using 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 144LANGUAGE is a symbol naming a language environment using an ISO8859
7d354dd5
DL
145character 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.
156LANGUAGE is a symbol naming a language environment using an ISO8859
157character 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.
200SET must be a member of `latin1-display-sets'. Normally, check
201whether a font for SET is available and don't set the display if it
202is. 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