emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/src xfont.c


From: Kenichi Handa
Subject: [Emacs-diffs] emacs/src xfont.c
Date: Thu, 16 Apr 2009 01:39:09 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Kenichi Handa <handa>   09/04/16 01:39:09

Modified files:
        src            : xfont.c 

Log message:
        (xfont_has_char): Special handling of `ja' and `ko' adstyle.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xfont.c?cvsroot=emacs&r1=1.24&r2=1.25

Patches:
Index: xfont.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfont.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- xfont.c     14 Apr 2009 01:26:03 -0000      1.24
+++ xfont.c     16 Apr 2009 01:39:08 -0000      1.25
@@ -792,17 +792,33 @@
   return 0;
 }
 
+extern Lisp_Object Qja, Qko;
+
 static int
-xfont_has_char (entity, c)
-     Lisp_Object entity;
+xfont_has_char (font, c)
+     Lisp_Object font;
      int c;
 {
-  Lisp_Object registry = AREF (entity, FONT_REGISTRY_INDEX);
+  Lisp_Object registry = AREF (font, FONT_REGISTRY_INDEX);
   struct charset *encoding;
-  struct charset *repertory;
+  struct charset *repertory = NULL;
 
-  if (font_registry_charsets (registry, &encoding, &repertory) < 0)
-    return -1;
+  if (EQ (registry, Qiso10646_1))
+    {
+      /* We use a font of `ja' and `ko' adstyle only for a character
+        in JISX0208 and KSC5601 charsets respectively.  */
+      if (EQ (AREF (font, FONT_ADSTYLE_INDEX), Qja)
+         && charset_jisx0208 >= 0)
+       encoding = repertory = CHARSET_FROM_ID (charset_jisx0208);
+      else if (EQ (AREF (font, FONT_ADSTYLE_INDEX), Qko)
+              && charset_ksc5601 >= 0)
+       encoding = repertory = CHARSET_FROM_ID (charset_ksc5601);
+      else
+       encoding = CHARSET_FROM_ID (charset_unicode);
+    }
+  else if (font_registry_charsets (registry, &encoding, &repertory) < 0)
+    /* Unknown REGISTRY, not usable.  */
+    return 0;
   if (ASCII_CHAR_P (c) && encoding->ascii_compatible_p)
     return 1;
   if (! repertory)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]