Function: latin1-display-setup

latin1-display-setup is a byte-compiled function defined in latin1-disp.el.gz.

Signature

(latin1-display-setup SET &optional FORCE)

Documentation

Set up Latin-1 display for characters in the given SET.

SET must be a member of latin1-display-sets. Normally, check whether a font for SET is available and don't set the display if it is.

Source Code

;; Defined in /usr/src/emacs/lisp/international/latin1-disp.el.gz
(defun latin1-display-setup (set &optional _force)
  "Set up Latin-1 display for characters in the given SET.
SET must be a member of `latin1-display-sets'.  Normally, check
whether a font for SET is available and don't set the display if it is."
  (cond
   ((eq set 'latin-2)
    (latin1-display-identities set)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (apply 'latin1-display-char l)))
       '((?Ć "'C" "C'")
	 (?Đ "'D" "/D")
	 (?Ś "'S" "S'")
	 (?ć "'c" "c'")
	 (?đ "'d" "/d")
	 (?Ĺ "'L" "L'")
	 (?ń "'n" "n'")
	 (?Ń "'N" "N'")
	 (?ŕ "'r" "r'")
	 (?Ŕ "'R" "R'")
	 (?ś "'s" "s'")
	 (?ź "'z" "z'")
	 (?Ź "'Z" "Z'")
	 (?Ą "`A" "A;")
	 (?Ę "`E" "E;")
	 (?Ł "`L" "/L")
	 (?Ş "`S" ",S")
	 (?Ţ "`T" ",T")
	 (?Ż "`Z" "Z^.")
	 (?ą "`a" "a;")
	 (?ł "`l" "/l")
	 (?ę "`e" "e;")
	 (?ş "`s" ",s")
	 (?ţ "`t" ",t")
	 (?ż "`z" "z^.")
	 (?˙ "`." "'.")
	 (?Ă "~A" "A(")
	 (?Č "~C" "C<")
	 (?Ď "~D" "D<")
	 (?Ě "~E" "E<")
	 (?ě "~e" "e<")
	 (?Ľ "~L" "L<")
	 (?Ň "~N" "N<")
	 (?Ő "~O" "O''")
	 (?Ř "~R" "R<")
	 (?Š "~S" "S<")
	 (?Ť "~T" "T<")
	 (?Ű "~U" "U''")
	 (?Ž "~Z" "Z<")
	 (?ă "~a" "a(}")
	 (?č "~c" "c<")
	 (?ď "~d" "d<")
	 (?ľ "~l" "l<")
	 (?ň "~n" "n<")
	 (?ő "~o" "o''")
	 (?ř "~r" "r<")
	 (?š "~s" "s<")
	 (?ť "~t" "t<")
	 (?ű "~u" "u''")
	 (?ž "~z" "z<")
	 (?ˇ "~v" "'<")			; ?˘ in latin-pre
	 (?˘ "~~" "'(")
	 (?ů "uu" "u^0")
	 (?Ů "UU" "U^0")
	 (?Ä "\"A")
	 (?ä "\"a")
	 (?Ë "\"E" "E:")
	 (?ë "\"e")
	 (?˝ "''" "'")
	 (?ˇ "'<")			; Lynx's rendering of caron
	 )))

   ((eq set 'latin-3)
    (latin1-display-identities set)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (apply 'latin1-display-char l)))
       '((?Ħ "/H")
	 (?˘ "~`" "'(")
	 (?Ĥ "^H" "H^")
	 (?ĥ "^h" "h^")
	 (?İ ".I" "I^.")
	 (?Ş ",S")
	 (?Ğ "~G" "G(")
	 (?Ĵ "^J" "J^")
	 (?Ż ".Z" "Z^.")
	 (?ħ "/h")
	 (?ı ".i" "i^.")
	 (?ş ",s")
	 (?ğ "~g" "g(")
	 (?ĵ "^j" "j^")
	 (?ż ".Z" "z^.")
	 (?Ċ ".c" "C^.")
	 (?Ĉ "^C" "C^")
	 (?Ġ ".G" "G^.")
	 (?Ĝ "^G" "G^")
	 (?Ŭ "~U" "U(")
	 (?Ŝ "^S" "S^")
	 (?ċ ".C" "c^.")
	 (?ĉ "^c" "c^")
	 (?ġ ".g" "g^.")
	 (?ĝ "^g" "g^")
	 (?ŭ "~u" "u(")
	 (?ŝ "^s" "s^")
	 (?˙ "/." "^."))))

   ((eq set 'latin-4)
    (latin1-display-identities set)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (apply 'latin1-display-char l)))
       '((?Ą "A," "A;")
	 (?ĸ "k/" "kk")
	 (?Ŗ "R," ",R")
	 (?Ĩ "I~" "?I")
	 (?Ļ "L," ",L")
	 (?Š "S~" "S<")
	 (?Ē "E-")
	 (?Ģ "G," ",G")
	 (?Ŧ "T/" "/T")
	 (?Ž "Z~" "Z<")
	 (?ą "a," "a;")
	 (?˛ "';")
	 (?ŗ "r," ",r")
	 (?ĩ "i~" "~i")
	 (?ļ "l," ",l")
	 (?ˇ "'<")
	 (?š "s~" "s<")
	 (?ē "e-")
	 (?ģ "g," ",g")
	 (?ŧ "t/" "/t")
	 (?Ŋ "N/" "NG")
	 (?ž "z~" "z<")
	 (?ŋ "n/" "ng")
	 (?Ā "A-")
	 (?Į "I," "I;")
	 (?Č "C~" "C<")
	 (?Ę "E," "E;")
	 (?Ė "E." "E^.")
	 (?Ī "I-")
	 (?Ņ "N," ",N")
	 (?Ō "O-")
	 (?Ķ "K," ",K")
	 (?Ų "U," "U;")
	 (?Ũ "U~" "~U")
	 (?Ū "U-")
	 (?ā "a-")
	 (?į "i," "i;")
	 (?č "c~" "c<")
	 (?ę "e," "e;")
	 (?ė "e." "e^.")
	 (?ī "i-")
	 (?đ "d/" "/d")
	 (?ņ "n," ",n")
	 (?ō "o-")
	 (?ķ "k," ",k")
	 (?ų "u," "u;")
	 (?ũ "u~" "~u")
	 (?ū "u-")
	 (?˙ "^."))))

   ((eq set 'latin-5)
    (latin1-display-identities set)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	 (apply 'latin1-display-char l)))
       '((?ğ "~g" "g(")
	 (?Ğ "~G" "G(")
	 (?İ ".I" "I^.")
	 (?ş ",s")
	 (?Ş ",S")
	 (?ê "^e" "e<")			; from latin-post
	 (?ì ".e" "e^.")
	 (?ï "\"i" "i-")		; from latin-post
	 (?ı ".i" "i."))))

   ((eq set 'latin-8)
    (latin1-display-identities set)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (apply 'latin1-display-char l)))
       '((?Ḃ ".B" "B`")
	 (?ḃ ".b" "b`")
	 (?ċ ".c" "c`")
	 (?Ċ ".C" "C`")
	 (?Ḋ ".D" "D`")
	 (?ḋ ".d" "d`")
	 (?ẁ "`w")
	 (?Ẁ "`W")
	 (?ẃ "'w" "w'")
	 (?Ẃ "'W" "W'")
	 (?ỳ "`y")
	 (?Ỳ "`Y")
	 (?ḟ ".f" "f`")
	 (?Ḟ ".F" "F`")
	 (?ġ ".g" "g`")
	 (?Ġ ".G" "G`")
	 (?ṁ ".m" "m`")
	 (?Ṁ ".M" "M`")
	 (?ṗ ".p" "p`")
	 (?Ṗ ".P" "P`")
	 (?ṡ ".s" "s`")
	 (?Ṡ ".S" "S`")
	 (?ẅ "\"w")
	 (?Ẅ "\"W")
	 (?ŵ "^w" "w^")
	 (?Ŵ "^W" "W^")
	 (?ṫ ".t" "t`")
	 (?Ṫ ".T" "T`")
	 (?ŷ "^y" "y^")
	 (?Ŷ "^Y" "Y^")
	 (?Ÿ "\"Y"))))

   ((eq set 'latin-9)
    (latin1-display-identities set)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (apply 'latin1-display-char l)))
       '((?š "~s" "s<")
	 (?Š "~S" "S<")
	 (?€ "Euro" "E=")
	 (?ž "~z" "z<")
	 (?Ž "~Z" "Z<")
	 (?Ÿ "\"Y")
	 (?œ "oe")
	 (?Œ "OE"))))

   ((eq set 'greek)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (apply 'latin1-display-char l)))
       '((?‘ "9'")
	 (?’ "'9")
	 (?― "-M")
	 (?΅ "'%")
	 (?Ά "'A")
	 (?Έ "'E")
	 (?Ή "'H")
	 (?Ί "'I")
	 (?Ό "'O")
	 (?Ύ "'Y")
	 (?Ώ "W%")
	 (?ΐ "i3")
	 (?Γ "G*")
	 (?Δ "D*")
	 (?Θ "TH")
	 (?Λ "L*")
	 (?Ξ "C*")
	 (?Π "P*")
	 (?Σ "S*")
	 (?Φ "F*")
	 (?Ψ "Q*")
	 (?Ω "W*")
	 (?Ϊ "\"I")
	 (?Ϋ "\"Y")
	 (?ά "a%")
	 (?έ "e%")
	 (?ή "y%")
	 (?ί "i%")
	 (?ΰ "u3")
	 (?α "a*")
	 (?β "b*")
	 (?γ "g*")
	 (?δ "d*")
	 (?ε "e*")
	 (?ζ "z*")
	 (?η "y*")
	 (?θ "h*")
	 (?ι "i*")
	 (?κ "k")
	 (?λ "l*")
	 (?μ "m*")
	 (?ν "n*")
	 (?ξ "c*")
	 (?π "p*")
	 (?ρ "r*")
	 (?ς "*s")
	 (?σ "s*")
	 (?τ "t*")
	 (?υ "u")
	 (?φ "f*")
	 (?χ "x*")
	 (?ψ "q*")
	 (?ω "w*")
	 (?ϊ "\"i")
	 (?ϋ "\"u")
	 (?ό "'o")
	 (?ύ "'u")
	 (?ώ "'w")))
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (aset standard-display-table (car l) (string-to-vector (cadr l)))))
       '((?Α "A")
	 (?Β "B")
	 (?Ε "E")
	 (?Ζ "Z")
	 (?Η "H")
	 (?Ι "I")
	 (?Κ "J")
	 (?Μ "M")
	 (?Ν "N")
	 (?Ο "O")
	 (?Ρ "P")
	 (?Τ "T")
	 (?Υ "Y")
	 (?Χ "X")
	 (?ο "o"))))

   ((eq set 'hebrew)
    ;; Don't start with identities, since we don't have definitions
    ;; for a lot of Hebrew in internal.el.  (Intlfonts is also
    ;; missing some glyphs.)
    (let ((i 34))
      (while (<= i 62)
	(let ((ch (decode-char 'hebrew-iso8859-8 i)))
	  (if ch
	      (aset standard-display-table ch
		    (vector (decode-char 'latin-iso8859-1 i)))))
	(setq i (1+ i))))
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (aset standard-display-table (car l) (string-to-vector (cadr l)))))
       '((?‗ "=2")
	 (?א "A+")
	 (?ב "B+")
	 (?ג "G+")
	 (?ד "D+")
	 (?ה "H+")
	 (?ו "W+")
	 (?ז "Z+")
	 (?ח "X+")
	 (?ט "Tj")
	 (?י "J+")
	 (?ך "K%")
	 (?כ "K+")
	 (?ל "L+")
	 (?ם "M%")
	 (?מ "M+")
	 (?ן "N%")
	 (?נ "N+")
	 (?ס "S+")
	 (?ע "E+")
	 (?ף "P%")
	 (?פ "P+")
	 (?ץ "Zj")
	 (?צ "ZJ")
	 (?ק "Q+")
	 (?ר "R+")
	 (?ש "Sh")
	 (?ת "T+"))))

   ;; Arabic probably isn't so useful in the absence of Arabic
   ;; language support...
   ((eq set 'arabic)
    (setq set 'arabic)
    (or (char-displayable-p ? )
	(aset standard-display-table ?  " "))
    (or (char-displayable-p ?¤)
	(aset standard-display-table ?¤ "¤"))
    (or (char-displayable-p ?­)
	(aset standard-display-table ?­ "­"))
    (mapc (lambda (l)
	    (or (char-displayable-p (car l))
		(apply  'latin1-display-char l)))
	    '((?، ",+")
	      (?؛ ";+")
	      (?؟ "?+")
	      (?ء "H'")
	      (?آ "aM")
	      (?أ "aH")
	      (?ؤ "wH")
	      (?إ "ah")
	      (?ئ "yH")
	      (?ا "a+")
	      (?ب "b+")
	      (?ة "tm")
	      (?ت "t+")
	      (?ث "tk")
	      (?ج "g+")
	      (?ح "hk")
	      (?خ "x+")
	      (?د "d+")
	      (?ذ "dk")
	      (?ر "r+")
	      (?ز "z+")
	      (?س "s+")
	      (?ش "sn")
	      (?ص "c+")
	      (?ض "dd")
	      (?ط "tj")
	      (?ظ "zH")
	      (?ع "e+")
	      (?غ "i+")
	      (?ـ "++")
	      (?ف "f+")
	      (?ق "q+")
	      (?ك "k+")
	      (?ل "l+")
	      (?م "m+")
	      (?ن "n+")
	      (?ه "h+")
	      (?و "w+")
	      (?ى "j+")
	      (?ي "y+")
	      (?ً ":+")
	      (?ٌ "\"+")
	      (?ٍ "=+")
	      (?َ "/+")
	      (?ُ "'+")
	      (?ِ "1+")
	      (?ّ "3+")
	      (?ْ "0+"))))

   ((eq set 'cyrillic)
    (setq set 'cyrillic-iso)
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (apply 'latin1-display-char l)))
       '((?Ђ "Dj")
	 (?Ѓ "Gj")
	 (?Є "IE")
	 (?Љ "Lj")
	 (?Њ "Nj")
	 (?Ћ "Ts")
	 (?Ќ "Kj")
	 (?Ў "V%")
	 (?Џ "Dzh")
	 (?Б "B=")
	 (?Г "â")
	 (?Д "D")
	 (?Ж "Z%")
	 (?З "3")
	 (?И "U")
	 (?Й "J=")
	 (?Л "L=")
	 (?П "P=")
	 (?У "Y")
	 (?Ф "è")
	 (?Ц "C=")
	 (?Ч "C%")
	 (?Ш "S%")
	 (?Щ "Sc")
	 (?Ъ "=\"")
	 (?Ы "Y=")
	 (?Ь "%\"")
	 (?Э "Ee")
	 (?Ю "Yu")
	 (?Я "Ya")
	 (?б "b")
	 (?в "v=")
	 (?г "g=")
	 (?д "g")
	 (?ж "z%")
	 (?з "z=")
	 (?и "u")
	 (?й "j=")
	 (?к "k")
	 (?л "l=")
	 (?м "m=")
	 (?н "n=")
	 (?п "n")
	 (?р "p")
	 (?т "t=")
	 (?ф "f=")
	 (?ц "c=")
	 (?ч "c%")
	 (?ш "s%")
	 (?щ "sc")
	 (?ъ "='")
	 (?ы "y=")
	 (?ь "%'")
	 (?э "ee")
	 (?ю "yu")
	 (?я "ya")
	 (?№ "N0")
	 (?ђ "dj")
	 (?ѓ "gj")
	 (?є "ie")
	 (?љ "lj")
	 (?њ "nj")
	 (?ћ "ts")
	 (?ќ "kj")
	 (?ў "v%")
	 (?џ "dzh")))
    (mapc
     (lambda (l)
       (or (char-displayable-p (car l))
	   (aset standard-display-table (car l) (string-to-vector (cadr l)))))
       '((?Ё "Ë")
	 (?Ѕ "S")
	 (?І "I")
	 (?Ї "Ï")
	 (?Ј "J")
	 (?ё "ë")
	 (?§ "§")
	 (?­ "-")
	 (?А "A")
	 (?В "B")
	 (?Е "E")
	 (?К "K")
	 (?М "M")
	 (?Н "H")
	 (?О "O")
	 (?Р "P")
	 (?С "C")
	 (?Т "T")
	 (?Х "X")
	 (?а "a")
	 (?е "e")
	 (?о "o")
	 (?с "c")
	 (?у "y")
	 (?х "x")
	 (?ѕ "s")
	 (?і "i")
	 (?ї "ï")
	 (?ј "j"))))

   (t (error "Unsupported character set: %S" set)))

  (sit-for 0))