diff src/ftfont.c @ 95698:d87a51f8851f

(ftfont_spec_pattern): Accept the registry `ascii-0'.
author Kenichi Handa <handa@m17n.org>
date Mon, 09 Jun 2008 07:16:15 +0000
parents de4cb7ab40db
children bea43f586395
line wrap: on
line diff
--- a/src/ftfont.c	Mon Jun 09 07:14:37 2008 +0000
+++ b/src/ftfont.c	Mon Jun 09 07:16:15 2008 +0000
@@ -490,6 +490,7 @@
 
   registry = AREF (spec, FONT_REGISTRY_INDEX);
   if (NILP (registry)
+      || EQ (registry, Qascii_0)
       || EQ (registry, Qiso10646_1)
       || EQ (registry, Qunicode_bmp)
       || EQ (registry, Qunicode_sip))
@@ -669,6 +670,33 @@
   fontset = FcFontList (NULL, pattern, objset);
   if (! fontset)
     goto err;
+#if 0
+  /* Need fix because this finds any fonts.  */
+  if (fontset->nfont == 0 && ! NILP (family))
+    {
+      /* Try maching with configuration.  For instance, the
+	 configuration may specify "Nimbus Mono L" as an alias of
+	 "Courier".  */
+      FcPattern *pat = FcPatternBuild (0, FC_FAMILY, FcTypeString,
+				       SYMBOL_FcChar8 (family), NULL);
+      FcChar8 *fam;
+
+      if (FcConfigSubstitute (NULL, pat, FcMatchPattern) == FcTrue)
+	{
+	  for (i = 0;
+	       FcPatternGetString (pat, FC_FAMILY, i, &fam) == FcResultMatch;
+	       i++)
+	    {
+	      FcPatternDel (pattern, FC_FAMILY);
+	      FcPatternAddString (pattern, FC_FAMILY, fam);
+	      FcFontSetDestroy (fontset);
+	      fontset = FcFontList (NULL, pattern, objset);
+	      if (fontset->nfont > 0)
+		break;
+	    }
+	}
+    }
+#endif
   for (i = 0; i < fontset->nfont; i++)
     {
       Lisp_Object entity;
@@ -1707,7 +1735,6 @@
 ftfont_font_format (FcPattern *pattern)
 {
   FcChar8 *str;
-  int len;
 
 #ifdef FC_FONTFORMAT
   if (FcPatternGetString (pattern, FC_FONTFORMAT, 0, &str) != FcResultMatch)