diff src/font.c @ 95699:0afdc320716c

(Qascii_0): New variable. (syms_of_font): DEFSYM it. (font_open_by_name): If the registry "iso8859-1" fails, try also "ascii-0".
author Kenichi Handa <handa@m17n.org>
date Mon, 09 Jun 2008 07:17:32 +0000
parents 0da1a8e03099
children b490fda95b13
line wrap: on
line diff
--- a/src/font.c	Mon Jun 09 07:16:15 2008 +0000
+++ b/src/font.c	Mon Jun 09 07:17:32 2008 +0000
@@ -55,7 +55,7 @@
 Lisp_Object Qopentype;
 
 /* Important character set strings.  */
-Lisp_Object Qiso8859_1, Qiso10646_1, Qunicode_bmp, Qunicode_sip;
+Lisp_Object Qascii_0, Qiso8859_1, Qiso10646_1, Qunicode_bmp, Qunicode_sip;
 
 /* Special vector of zero length.  This is repeatedly used by (struct
    font_driver *)->list when a specified font is not found. */
@@ -3009,7 +3009,7 @@
      char *name;
 {
   Lisp_Object args[2];
-  Lisp_Object spec, prefer, size, entity, entity_list;
+  Lisp_Object spec, prefer, size, registry, entity, entity_list;
   Lisp_Object frame;
   int i;
   int pixel_size;
@@ -3049,10 +3049,16 @@
       size = make_number (pixel_size);
       ASET (prefer, FONT_SIZE_INDEX, size);
     }
-  if (NILP (AREF (spec, FONT_REGISTRY_INDEX)))
+  registry = AREF (spec, FONT_REGISTRY_INDEX);
+  if (NILP (registry))
     ASET (spec, FONT_REGISTRY_INDEX, Qiso8859_1);
-
   entity_list = Flist_fonts (spec, frame, make_number (1), prefer);
+  if (NILP (entity_list) && NILP (registry))
+    {
+      ASET (spec, FONT_REGISTRY_INDEX, Qascii_0);
+      entity_list = Flist_fonts (spec, frame, make_number (1), prefer);
+    }
+  ASET (spec, FONT_REGISTRY_INDEX, registry);
   if (NILP (entity_list))
     entity = font_matching_entity (f, NULL, spec);
   else
@@ -4524,6 +4530,7 @@
 
   DEFSYM (Qopentype, "opentype");
 
+  DEFSYM (Qascii_0, "ascii-0");
   DEFSYM (Qiso8859_1, "iso8859-1");
   DEFSYM (Qiso10646_1, "iso10646-1");
   DEFSYM (Qunicode_bmp, "unicode-bmp");