changeset 58902:e1ad27c7a13c

(Line Height): Rewrite text for clarity.
author Richard M. Stallman <rms@gnu.org>
date Sat, 11 Dec 2004 23:15:58 +0000
parents 40bfa1ceae4a
children f45991382cb9
files lispref/display.texi
diffstat 1 files changed, 56 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/lispref/display.texi	Sat Dec 11 22:06:17 2004 +0000
+++ b/lispref/display.texi	Sat Dec 11 23:15:58 2004 +0000
@@ -1525,70 +1525,83 @@
 continued doesn't include a final newline.)  In the most common case,
 the line height equals the height of the default frame font.
 
-  There are several other ways to change the line height, either by
-specifying an absolute height for the display line, or by adding
-additional vertical space below each line.
+  There are several ways to explicitly control or change the line
+height, either by specifying an absolute height for the display line,
+or by adding additional vertical space below one or all lines.
 
 @kindex line-height @r{(text property)}
-  A newline can have a @code{line-height} text or overlay property that
-controls the total height of the display line ending in that newline.
-We will call the property value @var{line-height}.
-
-  If @var{line-height} property is 0, the height of the line is
-determined solely from its contents; nothing is added.  Any
-@code{line-spacing} property on this newline is ignored.  This case is
-useful for tiling small images or image slices without adding blank
-areas between the images.
-
-  If @var{line-height} property is a positive integer, the value
-specifies the minimum line height in pixels.  The line's ascent height
-is increased as necessary to achieve the specified height.
-
-  If @var{line-height} property is a floating point number, the
-minimum line height is the product of @var{line-height} and the
-default frame line height.
-
-  If @var{line-height} property is a cons @code{(@var{ratio} . @var{face})},
-the minimum line height is calculated as @var{ratio} times the height
-of face @var{face}.  The @var{ratio} is an integer or a floating point
-number.  If @var{face} is @code{t}, it refers to the current face.
+  A newline can have a @code{line-height} text or overlay property
+that controls the total height of the display line ending in that
+newline.  If the property value is zero, the displayed height of the
+line is exactly what its contents need; no line-spacing is added.
+This case is useful for tiling small images or image slices without
+adding blank areas between the images.
+
+  If the property value is not zero, it specifies a desired height,
+@var{line-height}.  There are several ways it can do this:
+
+@table @code
+@item @var{integer}
+If the property is a positive integer, @var{line-height} is that integer.
+@item @var{float}
+If the property is a float, @var{float}, @var{line-height} is @var{float}
+times the frame's default line height.
+@item (@var{ratio} . @var{face})
+If the property is a cons of the format shown, @var{line-height} is
+@var{ratio} times the height of face @var{face}.  @var{ratio} can be
+any type of number.  If @var{face} is @code{t}, it refers to the
+current face.
+@end table
+
+  Thus, any valid nonzero property value specifies a height in pixels,
+@var{line-height}, one way or another.  If the line contents' height
+is less than @var{line-height}, Emacs adds extra vertical space above
+the line to achieve the total height @var{line-height}.  Otherwise,
+@var{line-height} has no effect.
+
+  If you don't specify the @code{line-height} propery, the line's
+height consists of the contents' height plus the line spacing.
 
 @vindex default-line-spacing
-  You can specify additional line spacing for all lines in a frame
-with the @code{line-spacing} frame parameter, @xref{Window Frame
-Parameters}.  However, if the variable @code{default-line-spacing} is
+  You can specify the line spacing for all lines in a frame with the
+@code{line-spacing} frame parameter, @xref{Window Frame Parameters}.
+However, if the variable @code{default-line-spacing} is
 non-@code{nil}, it overrides the frame's @code{line-spacing}
 parameter.  An integer value specifies the number of pixels put below
 lines on window systems.  A floating point number specifies the
-spacing relative to the default frame line height.
+spacing relative to the frame's default line height.
 
 @vindex line-spacing
-  You can specify additional line spacing for all lines in a buffer
-via the buffer-local @code{line-spacing} variable.  An integer value
-specifies the number of pixels put below lines on window systems.  A
-floating point number specifies the spacing relative to the default
-frame line height.
+  You can specify the line spacing for all lines in a buffer via the
+buffer-local @code{line-spacing} variable.  An integer value specifies
+the number of pixels put below lines on window systems.  A floating
+point number specifies the spacing relative to the default frame line
+height.  This overrides line spacings specified for the frame.
 
 @kindex line-spacing @r{(text property)}
   Finally, a newline can have a @code{line-spacing} text or overlay
 property that controls the height of the display line ending with that
 newline.  The property value overrides the default frame line spacing
-and the buffer local @code{line-spacing} variable.  We will call the
-property value @var{line-spacing}.
-
-  If the @var{line-spacing} value is a positive integer, the value
-specifies additional vertical space, below the display line, in
-pixels.
+and the buffer local @code{line-spacing} variable.
+
+  One way or another, these mechanisms specify a line spacing for each
+line.  Let's call the value @var{line-spacing}.
+
+  If the @var{line-spacing} value is a positive integer, it specifies
+the number of pixels of additional vertical space.  This space appears
+below the display line contents.
 
   If the @var{line-spacing} value is a floating point number or cons,
-the additional vertical space is the product of @var{line-spacing} and
-the default frame line height.
-
+the additional vertical space is @var{line-spacing} times the frame
+default line height.
+
+@ignore  @c I think we may want to delete this, so don't document it -- rms.
   If the @var{line-spacing} value is a cons @code{(total . @var{spacing})}
 where @var{spacing} is any of the forms described above, the value of
 @var{spacing} specifies the total displayed height of the line,
 regardless of the height of the characters in it.  This is equivalent
 to using the @code{line-height} property.
+@end ignore
 
 @node Faces
 @section Faces