Subject: bug#17457: 24.4.50; REGRESSION: "Invalid font name: -outline-Lucida Console-normal-normal-normal-mono"

From: Eli Zaretskii <[email-masked]>
Date: Sun, 11 May 2014 20:41:59 +0300

> Date: Sun, 11 May 2014 10:19:58 -0700 (PDT)
> From: Drew Adams <[email-masked]>
> Cc: [email-masked]
> 
> > There must be some other factor at work here, because I don't
> > understand how you get your truncated spec.
> 
> Yes, sorry.  This is what I was doing, with var FONT as input:
> 
> (save-match-data
>  (let ((xlfd-regexp  "\\`\\(-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*\\)\
> -[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*-[^-]*\\'"))
>    (or (not (string-match xlfd-regexp font))
>        (setq font  (replace-match "\\1" nil nil font)))))
> 
> I truncated it because I am not interested in anything except the
> first 6 fields of the XLFD string.

The right way is to replace the other fields with "*", not chop them
off.

> I have fixed my code now so that the main feature works.  But `font-info'
> still complains about some of the fonts I have.  I've wrapped the
> `font-info' call in an `ignore-errors' to ignore that, but this means that
> I cannot get font info for those few fonts.  So be it.
> 
> FYI, here are some problematic fonts.  It is no doubt the addition of
> extra fields that makes them invalid.
> 
> -outline-MingLiU-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-big5-0
> -outline-MingLiU-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-iso10646-1
> -outline-MingLiU-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-iso8859-1
> -outline-MingLiU_HKSCS-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-big5-0
> -outline-MingLiU_HKSCS-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-iso10646-1
> -outline-MingLiU_HKSCS-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-iso8859-1
> -outline-PMingLiU-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-big5-0
> -outline-PMingLiU-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-iso10646-1
> -outline-PMingLiU-ExtB-normal-normal-normal-serif-*-*-*-*-p-*-iso8859-1
> -outline-SimSun-ExtB-normal-normal-normal-mono-*-*-*-*-c-*-gb2312.1980-0
> -outline-SimSun-ExtB-normal-normal-normal-mono-*-*-*-*-c-*-iso10646-1
> -outline-SimSun-ExtB-normal-normal-normal-mono-*-*-*-*-c-*-iso8859-1

Yes, I think the problem is in that "-ExtB", which I think is part of
the font name, but Emacs's XLFD parser thinks it is a separate field.
Perhaps Handa-san, or someone else who knows more about fonts, could
tell how to handle these font names correctly.  It looks like a bug to
me, FWIW.