bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#5503: Font choice in Emacs 23 does not match weight/traits


From: David Reitter
Subject: bug#5503: Font choice in Emacs 23 does not match weight/traits
Date: Sun, 31 Jan 2010 23:44:49 -0500

The fonts chosen for non-latin (here: Asian) characters are not very similar to 
the face font.

For example, if "Lucida Grande" is selected as the frame's default font, the 
following:

DOUBLETはあなたと->世 界をつなげる翻訳会社です。

is displayed using a much to lightweight (skinny) font for all the non-Latin 
glyphs.  The Hiragana portion at the beginning is set in PMingLiU, while the 
Kanji (Han script) is displayed in LiSung.

These fonts appear very thin compared to the Latin text.
This is despite there being the "Osaka" font present on my system, which is a 
medium-weight, very suitable font.

-apple-PMingLiU-medium-normal-normal-*-13-*-*-*-p-0-iso10646-1 (#x303)
-apple-Apple_LiSung-medium-normal-normal-*-13-*-*-*-p-0-iso10646-1 (#x7CD)

This is under NS, whereas I am not positive that this is actually due to NS.

This worked great on Emacs 22 - Osaka is chosen there [well, I have tried with 
Aquamacs].
I have received concrete complaints from users who say that they're not using 
Emacs 23 because of that.  
The user also said that matching the font according to further traits 
(serif/sans) would be desirable/expected.

I advised the user of setting Osaka directly (which works), and of fontsets 
(which appear inappropriate for such simple use-cases in 2010).

For what it's worth, I have been trying to fix this myself.
So far I know that Osaka has 95% "han" script coverage and is returned among 
the list of (many) fonts in the font driver's "list" function.

It seems that exact weight and more specific traits are not being made 
available to Emacs by the NS font driver (e.g., nsfont.m:532, call to 
ns_descriptor_to_entity, last argument is NULL).  Font weight should go into 
"ADSTYLE", which is one matching criterion in font_find_for_lface.  
font_select_entity() presumably doesn't have enough weight information.

ns_descriptor_to_entity() sets weight, but only to Qbold and Qmedium.  If I 
comment some code in:
   FONT_SET_STYLE (font_entity, FONT_WEIGHT_INDEX,
                    make_number (100 + 100
                        * ns_attribute_fvalue (desc, NSFontWeightTrait)));
.. then the "han" portion in the above examples is rendered with a matching 
font (LiGothic), but not any of the Hiragana text (still in PMingLiU).

FWIW, the AppKit port of 23 shows the same behavior as NS.
Again, Emacs 22 got it right - unfortunately I haven't managed to figure out 
how the Emacs 22 code works.

Attachment: PGP.sig
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]