--- Begin Message ---
Subject:
23.0.60; Cannot use function as value of :height face attribute
Date:
Sat, 13 Dec 2008 10:17:23 -0800
emacs -Q
M-: (set-face-attribute 'default (selected-frame) :height (quote 1+))
gives this error: (error "Invalid face height" 1+)
Emacs 22 gives the same error, BTW.
But the Elisp manual, node Face Attributes says this:
`:height'
Either the font height, an integer in units of 1/10 point, a
floating point number specifying the amount by which to scale the
height of any underlying face, or a function, which is called with
the old height (from the underlying face), and should return the
new height.
Am I misunderstanding the doc, or should you be able to use a function
as the value of the :height attribute?
What's more, if you do `M-x customize-face RET default', the Value
Menu for attribute Height does not have an item for a function
value. It has only `Height in 1/10 pt' and `Scale'. That suggests, but
doesn't prove, that a function value is not allowed.
And grepping the Elisp sources, I see no use of a function value for
:height.
Beyond this bug (or my misunderstanding), can we say more about the
kind of function that would be needed? Is it supposed to treat each
kind of :height value: integer, floating-point number, and function?
The doc says the old height (passed to the function) is "from the
underlying face", so I guess this means the actual face height, not
the old value of :height. But which units are used for the actual face
height? Are they too "units of 1/10 point"?
In GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600)
of 2008-11-24 on LENNART-69DE564
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt --cflags -Ic:/g/include
-fno-crossjumping'
--- End Message ---
--- Begin Message ---
Subject:
Re: 23.0.60; Cannot use function as value of :height face attribute
Date:
Thu, 01 Jan 2009 03:30:15 -0500
> M-: (set-face-attribute 'default (selected-frame) :height (quote 1+))
>
> gives this error: (error "Invalid face height" 1+)
>
> But the Elisp manual, node Face Attributes says this:
>
> `:height'
> Either the font height, an integer in units of 1/10 point, a
> floating point number specifying the amount by which to scale the
> height of any underlying face, or a function, which is called with
> the old height (from the underlying face), and should return the
> new height.
The default face must always be absolute (i.e., an integer). I've
clarified the manual.
--- End Message ---