Line Height Bugs

From Inkscape Wiki
Revision as of 14:31, 24 January 2017 by Tavmjong (Talk | contribs) (Created page with "This page is to track bugs and issues regarding the changes to 'line-height' in 0.92. =Background= 0.92 introduces changes in behavior with regards to line spacing. Changes...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page is to track bugs and issues regarding the changes to 'line-height' in 0.92.

Background

0.92 introduces changes in behavior with regards to line spacing. Changes were made in order to adhere to the CSS definition of the 'line-height' property. Work was motivated by a desire to handle units in the 'line-height' property as well as to prepare for SVG 2 multi-line text.

Key Issues

The following issues have been identified by testing a variety of pre-0.92 Inkscape files:

  1. Pre 0.92 Inkscape interprets % 'line-height' values incorrectly. CSS dictates that 'line-height' values with units are "computed" at the point the are defined and it is the computed value that is inherited by child elements. On the other hand, unit-less 'line-height' values pass the "uncomputed" value to child elements and the child elements compute their own line spacing.
  2. Pre 0.92 Inkscape ignores the "strut". The "strut" is the minimum spacing between lines as determined by the 'font-size' and 'line-height' values of the outermost text element. For example, if one has a 'font-size' of 40px and a 'line-height' value of 1.25, the strut value is 50px. No lines inside the <text> element can be spaced closer together than 50px.
  3. Inkscape 0.92.0 introduces a bug in spacing blank lines. Blank lines (which are represented by empty <tspan> elements) are spaced according to the strut value, incorrectly ignoring styling information on the <tspan>. If one sets the strut value to zero, it appears that blank lines are not rendered.
  4. The placement of the first line in flowed text may be shifted slightly from pre 0.92 Inkscape. This is due to a correction on positioning the first line, again to better adhere to CSS. For the most part, any shift should be minor.

Other Issues

  1. The 'sodipodi:line-height' attribute should be removed.

Bug Reports

  • Bug #1655483 “Inkscape 0.92 line space problem with text of Inkscape 0.91”
  • Bug #1655412 “Space between base lines misbehavior”
  • Bug #1652340 “Extension for 0.92.x to fix line spacing in legacy documents”
  • Bug #1652006 “Line spacing differs between 0.91 an 0.92b4”
  • Bug #1644299 “text and image not displaying in 0.92pre3”
  • Bug #1642133 “Inkscape shows text with ridiculously wide line spacing”
  • Bug #1617692 “Spacing Between Baselines Messed Up 0.92 15081”
  • Bug #1556400 “line height all equal in development version”

Test Files

su_v has assembled a set of test files that can be found at: https://gitlab.com/su-v/test-files

Identified issues in test files:

1274158: Issue had to do with bitmap import. Note: file contains <flowRoot> elements without text.

	 The file exposes two issues:

	 1. The strut issue.
	 2. The improper inheritance of % line-height values.

	 (Inkscape multi-line text.)

1382923: The actual issue had to do with changing from 'px' to 'pt' font size.

	 The file exposes the strut issue.

	 Simplest fix is to set the outer font-size to zero to
	 create a zero-height strut.

	 (Inkscape multi-line text.)

1513959: Pre 0.92 line-height % values inherited incorrectly.

	 Fix is to convert % to unitless.

	 (<flowRoot> text.)

1642133: Pre 0.92 the strut was not used. Here the outer font-size
	 is larger than the inner font-sizes so the strut value is
	 limiting how close the lines can be spaced.

	 Easiest fix is to set outer font-size to zero and line-height
	 to 1.25. sodipodi:linespacing attribute should be removed.

	 (Inkscape multi-line text.)

AmigaBallTutorial:

         Pre 0.92 the strut was not used. Here, due to the 12px
	 font-size on the outer text element a 15px strut is created
	 (the default value for line-height is 1.25). Line spacing can
	 never be less than the strut value.

	 The easiest fix is to change the 12px font-size on the outer
	 text element to 9px, to match the inner font-size's.

	 An alternative fix is to set the outer line-height to 0 (but
	 this fails due to incorrect spacing of empty lines).

	 (Inkscape multi-line text.)

References