Subject: Re: bug#17973: Thin space not thin at all

From: [email-masked] (K. Handa)
Date: Mon, 14 Jul 2014 00:12:58 +0900

In article <[email-masked]>, Stefan Monnier <[email-masked]> writes:

> Ah, right, that explains it.  Hmm... I guess ideally, Emacs should
> consider a height that's "too far" from the requested one as a failure
> and then try again ignoring some of the specs.

font_find_for_lface has a code to do that, but I found that
it is called with full font properties in SPEC.  This
function does not try a font of different properties
(foundry, family, registry, adstyle).

> The patch below expresses the first part, but it looks like the second
> part doesn't exit: Emacs just doesn't find any font to use for the "thin
> space" of C-x SPC and indicates it to me with one of those big squares
> that say "0020", which is a lot more intrusive than the problem I'm
> trying to fix.

In addition to your patch, could you please try the following patch?

=== modified file 'src/xfaces.c'
--- src/xfaces.c	2014-07-07 23:33:05 +0000
+++ src/xfaces.c	2014-07-13 15:09:21 +0000
@@ -5547,7 +5547,7 @@
 	}
       if (! FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
 	attrs[LFACE_FONT_INDEX]
-	  = font_load_for_lface (f, attrs, attrs[LFACE_FONT_INDEX]);
+	  = font_load_for_lface (f, attrs, Ffont_spec (0, NULL));
       if (FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
 	{
 	  face->font = XFONT_OBJECT (attrs[LFACE_FONT_INDEX]);

> PS: The patch below also happens to give me assertion failures
> fontset.c:897: Emacs fatal error: assertion failed: fontset_id_valid_p (face->fontset)
> I haven't investigated any further, tho (and the line number might be off
> because of local changes anyway).

I didn't face with that error, but I'll keep on checking the code.

---
Kenichi Handa
[email-masked]