>>>> "Jan" == Jan Vroonhof
<vroonhof(a)math.ethz.ch> writes:
Jan> "Stephen J. Turnbull" <turnbull(a)sk.tsukuba.ac.jp> writes:
Jan> 1. What should (reset-face 'default) do?
> No-op, I think, have to special-case it, I guess.
Jan> It would be very interesting to see if by making it a no op
Jan> for 'default your problems with the kanji fonts go away
Jan> too...
This works, so far with no effects (besides cleaning up both the
blanching and the ugly kanji problems) that I can see. I've played
with the options menu and Custom only a little bit though, and can't
claim anything like an exhaustive test.
I will submit a patch later (the machine I was working on is
off-line).
However, this only fixes the problem for 'default. Having thought
about it (only a little bit, though), I am very, very unhappy that
anything in Custom _ever_ calls `reset-face'.[1] Basically what you're
saying is that Custom knows better than the user what that user wants
to do with prior specifications: namely, throw them away. In its
current state, where cus-face.el can access the specifier interface
but it isn't documented, Mule fonts are at great risk any time Custom
is used. For example, Japanese (and AFAIK Chinese and Korean) don't
use italic typefaces (in the font sense), they use separate fonts. So
if I want to set up italic for Japanese, I need to add that font to
the italic face. Then I customize it somewhere, and *poof* go my Mule
customizations.
In general, if you use specifiers as they are intended to be used,
Custom's use of `reset-face' pretty much guarantees you will
eventually lose, more likely sooner than later.
Custom should be using define-specifier-tag to identify its work, and
'prepend to give its specifications precedence in face specifiers, not
clearing faces entirely, I would think.
Footnotes:
[1] I put it that way because I haven't tracked down where it's
called. But I would only allow it if the function was interactive and
required confirmation after presenting a warning like
Warning: this operation is implemented via `reset-face':
Clear all existing built-in specifications from FACE.
This makes FACE inherit all its display properties from 'default.
WARNING: Be absolutely sure you want to do this!!! It is a dangerous
operation and is not undoable.
The arguments LOCALE, TAG-SET and EXACT-P are the same as for
`remove-specifier'.
--
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Institute of Policy and Planning Sciences Tel/fax: +81 (298) 53-5091
__________________________________________________________________________
__________________________________________________________________________
What are those two straight lines for? "Free software rules."