Simplify redisplay-x/separate_textual_runs

Aidan Kehoe kehoea at parhasard.net
Fri Mar 30 11:44:38 EDT 2007


 Ar an triochadú lá de mí Márta, scríobh Aidan Kehoe: 

 > [...] You’ve just done that Unicode conversion to throw away the result. 
 > That’s not very constructive, since the XFT redisplay routines *require*
 > that the supplied strings are Unicode. I’m fighting with Cygwin right now
 > to get it to usefully install fontconfig so I can check this out for
 > certain, but I believe strongly that this will break redisplay with
 > non-Latin-1 characters under XFT and Mule.

Confirmed. Cf. http://mid.gmane.org/17780.28830.970989.79622@parhasard.net
if you’re not sure how to tell XEmacs to use reasonble non-Latin-1 fonts
with XFT. Since that link seems to be broken right now, here’s the code I
use: 

(when (featurep 'xft)
  (set-specifier
   (face-font 'default) 
   (cons '(x) 
         (fc-name-unparse 
          (fc-font-match (selected-device) 
                         (fc-name-parse "Monospace-11.5:lang=en")))))
  (loop 
    for (tag-name regex size) in 
    '((zh-tw "^chinese-\\(big5\\|cns\\)" 18)
      (zh "^chinese-" 18)
      (ja "^\\(japanese\\|katakana\\)-" 18)
      (ko "^korean-" 18)
      (am "^ethiopic-" 18)
      (vi "^vietnamese-" 14)
      (el "^greek-" 12)
      (ru "^cyrillic-" 12)
      (hu "^latin-iso8859-2" 12)
      (ar "^arabic-" 16))
    do
    (define-specifier-tag tag-name nil 
      (list 'lambda '(charset) 
            (list 'string-match regex
                  '(symbol-name (charset-name charset)))))
    (set-face-font 'default
                   (fc-name-unparse 
                    (fc-font-match 
                     (selected-device) 
                     (fc-name-parse 
                      (format "-%d:lang=%s"
                              size tag-name))))
                   nil (list 'x tag-name) 'append)))

-- 
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)



More information about the XEmacs-Patches mailing list