changeset 101035:21dea33fa8fd

(add_font_entity_to_list): Don't report unknown Windows charset as any unrecognized registry. (Bug#1548) Only report Unicode Plane 2 fonts as unicode-sip.
author Jason Rumney <jasonr@gnu.org>
date Fri, 09 Jan 2009 18:31:39 +0000
parents 3a5cd4eaf1f2
children c15ff3cc3aba
files src/w32font.c
diffstat 1 files changed, 6 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32font.c	Fri Jan 09 18:08:41 2009 +0000
+++ b/src/w32font.c	Fri Jan 09 18:31:39 2009 +0000
@@ -1439,19 +1439,17 @@
 	  /* unicode-sip fonts must contain characters beyond the BMP,
 	     so look for bit 57 (surrogates) in the Unicode subranges.  */
 	  else if (EQ (spec_charset, Qunicode_sip)
-		   && !(physical_font->ntmFontSig.fsUsb[1] & 0x02000000))
+		   && (!(physical_font->ntmFontSig.fsUsb[1] & 0x02000000)
+		       || !(physical_font->ntmFontSig.fsUsb[1] & 0x28000000)))
 	    return 1;
           /* If registry was specified, but did not map to a windows
-             charset, only report fonts that have unknown charsets.
-             This will still report fonts that don't match, but at
-             least it eliminates known definite mismatches.  */
+             charset, don't report any fonts.  */
           else if (!NILP (spec_charset)
                    && !EQ (spec_charset, Qiso10646_1)
                    && !EQ (spec_charset, Qunicode_bmp)
                    && !EQ (spec_charset, Qunicode_sip)
-                   && match_data->pattern.lfCharSet == DEFAULT_CHARSET
-                   && logical_font->elfLogFont.lfCharSet != DEFAULT_CHARSET)
-            return 1;
+                   && match_data->pattern.lfCharSet == DEFAULT_CHARSET)
+            return 0;
 
           /* If registry was specified, ensure it is reported as the same.  */
           if (!NILP (spec_charset))
@@ -1488,7 +1486,7 @@
   add_font_entity_to_list (logical_font, physical_font, font_type, lParam);
 
   /* If we have a font in the list, terminate the search.  */
-  return !NILP (match_data->list);
+  return NILP (match_data->list);
 }
 
 /* Old function to convert from x to w32 charset, from w32fns.c.  */