|
Line Spacing and Ligature Changes
From NeoWiki
Prior to the release of NeoOffice 2.2.2 Patch 7, all versions of NeoOffice had problems with line spacing and ligature rendering for many fonts. Specifically, in many cases, NeoOffice's line spacing would be slightly wider than Microsoft Office for Mac. As a result, documents created in Microsoft Office for Mac would frequently have significantly different pagination and framed text would be pushed past the bottom of the frame in NeoOffice. In addition, NeoOffice would incorrectly apply font style changes where the style changes in the middle of a ligature and would cause ligatures to be misrendered.
Many NeoOffice users have documented these two problems over the last few years. However, we had been unable to find code changes that would reliably fix these two problems and these problems remained unfixed until January 2008 when we were finally able to properly identify a method of mapping Mac OS X's font metrics to the font metric handlers in NeoOffice's underlying OpenOffice.org code that reliably produces line spacing that is nearly identical to the line spacing in Microsoft Office for Mac. At the same time, we also implemented changes to ensure that font style changes cannot occur within the middle of a ligature.
Because these changes will cause text layout changes for many NeoOffice documents, below is a list of the changes that users can expect to see after they install NeoOffice 2.2.2 Patch 7 or later:
- Narrower line spacing for some fonts - Line height in NeoOffice is the sum of a font's ascent, descent, and leading. Prior to NeoOffice 2.2.2 Patch 7, NeoOffice incorrectly set the leading. In nearly all cases, the leading used by NeoOffice was larger than the font's actual leading. Starting with NeoOffice 2.2.2 Patch 7, NeoOffice uses the correct font leading. With the latest NeoOffice code, users will find that the leading for many fonts is smaller than before and, as a result, more lines will fit on a single page. Unfortunately, users that expect their text or images attached to text to be positioned at specific point in a specific page should be prepared for the inevitable re-layout of their document that will result from this change. While this change may not be welcomed by such users, users who share their documents with Microsoft Office users should find that their documents layout much more closely in both NeoOffice and Microsoft Office. Those who depend on specific positioning of their text will find that there at a specific point than set larger in order to fix bug 2827 and bug 2847, I had to modify my code that calculates the ascent, descent, and leading for fonts. Specifically, I removed an old hack that increased the line spacing for Asian fonts.
- Wider line spacing for some Asian fonts - While most fonts will have narrower line spacing, there are several Asian fonts such a Hiragino Mincho Pro that will have wider line spacing. Prior to NeoOffice 2.2.2 Patch 7, the same bug that caused many fonts to have line spacing that was too wide also caused some Asian fonts to have line spacing that was too narrow. Starting with NeoOffice 2.2.2 Patch 7, line spacing for such Asian fonts now more closely matches the line spacing Microsoft Office 2004.
- Editing of font ligatures - To prevent misrendering of font ligatures when there is a change in font style (such as color, underlying, italics, or bolding) in the middle of the characters that are included in the ligature, we disabled the ability to insert the cursor in the middle of a ligature and disabled highlighting only a portion of a ligature glyph cluster. Starting with NeoOffice 2.2.2 Patch 7, the cursor can only be placed at the beginning or end of a ligature and when highlighting, the entire ligature will be highlighted. For example, if you are using the Zapfino font and type the letters "pp", a single ligature glyph will be displayed. You will only be able to put the cursor before or after the "pp" glyph cluster and you will not be able to put it between the two "p" glyphs. Likewise, you will only be able to highlight both or none of the "p" glyphs and you will not be able to highlight only one of the "p" glyphs. Since there are cases where users need to insert or delete some but not all characters within a font ligature, we have left a way to position the cursor to a particular character within a ligature. To insert or delete a character within a ligature, use the following steps:
- Position the cursor at the start of the ligature.
- Press the right arrow key once. The cursor should move to the end of the ligature. At this point, pressing the delete key will delete the first character in the ligature and typing will insert characters immediately after the first character in the ligature.
- To access the second character in the ligature, press the right arrow key again. The cursor should not move but at this point, pressing the delete key will delete the second character in the ligature and typing will insert characters immediately after the second character in the ligature.
- Repeat the previous step to access any other characters that might be in the ligature.