Subject: 23.0.60; Cannot use function as value of :height face attribute

From: "Drew Adams" <[email-masked]>
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'