Subject: Re: bug#9621: 24.0.90; a characger not displayed

From: William Xu <[email-masked]>
Date: Wed, 28 Sep 2011 15:12:33 +0300

Eli Zaretskii <[email-masked]> writes:

   FWIW, this character is displayed correctly on my MS-Windows box.
   "C-u C-x =" says that it is displayed using the Uniscribe font driver
   and this font:

      uniscribe:-outline-Arial Unicode
      MS-normal-normal-normal-sans-15-*-*-*-p-*-jisx0208*-* (#x12D9)

I can reproduce it here, the same as Takaaki.  The font being used is: 
  -outline-BatangChe-normal-normal-normal-mono-13-*-*-*-c-*-jisx0208*-*

And BatangChe font doesn't cover unicode 30FC, that's why it can't
display it.  The font you are using -- Arial Unicode MS, covers most
unicode characters on windows, which is often used as a fallback font, i
guess.  Because it seems you don't have BatangChe font, yours uses Arial
Unicode MS directly...  Some locale differences, probably.  

To force it to use Arial Unicode MS, just: 
  (set-fontset-font t '(#x30fc . #x30fd) "Arial Unicode MS")

The real problem is that when the selected font(like BatangChe here)
doesn't contain all the glyphs for the unicode range it covers, emacs
doesn't select a fallback font, like Arial Unicode MS here.  

Only if one day the following code could be implemented?..  

int
w32font_has_char (Lisp_Object entity, int c)
{
  /* We can't be certain about which characters a font will support until
     we open it.  Checking the scripts that the font supports turns out
     to not be reliable.  */
  return -1;

-- 
William

http://xwl.appspot.com