Subject: Re: NS: wrong font chosen

From: Adrian Robert <[email-masked]>
Date: Thu, 23 Jul 2009 11:01:36 -0400

http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3588

I generated a trace output from this for the current CVS version and  
believe that the problem is that:

1) the NS font driver is not responding to registries
and
2) the core font code is not incorporating the fact that iso10646-1 is  
a superset of ascii or "ascii-0" into its logic

Fix one of these and the problem goes away.  To work on (1) would need  
a map converting from registries to scripts.  I'd prefer to keep this  
ugliness to support low-level X-legacy font code out of the NS port,  
but there may be no avoiding it in the long run.  To work on (2)  
requires some study of how the font search code in font/fontset.c  
works.  It is possible that a clearly-written email to emacs-devel  
would attract Handa-san's attention and he could fix it quickly though..

nsfont: list for fontspec:
     #<font-spec ns apple Lucida\ Calligraphy nil iso10646-1 nil nil  
nil nil nil nil nil ((:name))>
2009-07-23 10:55:20.072 Emacs[16252:807] Request covering families for  
script: ''
2009-07-23 10:55:20.073 Emacs[16252:807]     returning 203 families
2009-07-23 10:55:20.076 Emacs[16252:807] Got desc NSCTFontDescriptor  
<0x166b800> = {
     NSFontFamilyAttribute = "Lucida Calligraphy";
} and found 1 matching fonts from it:
created font_entity:
     #<font-entity ns apple Lucida_Calligraphy nil iso10646-1 medium  
italic normal 0 nil 0 0 ((:name))>
     Returning 1 entities.
nsfont: list for fontspec:
     #<font-spec ns apple Lucida\ Calligraphy nil ascii-0 nil nil nil  
nil nil nil nil ((:name))>
nsfont: list for fontspec:
     #<font-spec ns nil Lucida\ Calligraphy nil iso10646-1 nil nil nil  
nil nil nil nil ((:name))>
2009-07-23 10:55:20.079 Emacs[16252:807] Request covering families for  
script: ''
2009-07-23 10:55:20.081 Emacs[16252:807]     returning 203 families
2009-07-23 10:55:20.083 Emacs[16252:807] Got desc NSCTFontDescriptor  
<0x16b6390> = {
     NSFontFamilyAttribute = "Lucida Calligraphy";
} and found 1 matching fonts from it:
created font_entity:
     #<font-entity ns apple Lucida_Calligraphy nil iso10646-1 medium  
italic normal 0 nil 0 0 ((:name))>
     Returning 1 entities.
nsfont: list for fontspec:
     #<font-spec ns nil Lucida\ Calligraphy nil ascii-0 nil nil nil  
nil nil nil nil ((:name))>
nsfont: list for fontspec:
     #<font-spec ns apple nil nil iso10646-1 nil nil nil nil nil nil  
nil ((:name))>
2009-07-23 10:55:20.087 Emacs[16252:807] Request covering families for  
script: ''
2009-07-23 10:55:20.088 Emacs[16252:807]     returning 203 families
2009-07-23 10:55:20.102 Emacs[16252:807] Got desc NSCTFontDescriptor  
<0x16b6670> = {
} and found 443 matching fonts from it: