On Jan 9, 2008, at 8:35 AM, Frederico Garcia wrote:

Does anyone know how to make flash render fonts the same way for screen display and printing? I've tried embedding fonts, changing the settings
for flashType and fontAntiAliasType but I just can't get fonts to
display the same way. This is causing a lot of trouble since I can' get
lineMetrics to give me accurate values.

Good luck. Long response follows.

Flash renders the line height of all text with an incorrect (always) leading value. This is major apparent as you change the font size of the text in the field.

If you set the leading of a text field, that leading is not used for all point sizes of text. I can only surmise that's because the developers failed to use just the point size of the type to set default leading value.

The line height issue is not a bug - it's just straight up wrong.

First the problems you will run into:

1. Leading of text is never right - the line heights vary within one field (?!). It adds in some weird ass measure including the ascent and descent (which varies as well).

2. Changing the font size and setting the leading to the same value will lead you to madness. The leading of the field will change at certain point sizes (sometimes more than 30% larger/smaller) - even if you force a certain leading.

3. If you scale your text field, your character spacing AND individual character baselines shift - they are not all aligned on the same baseline. Imagine a word where groupings of the characters are shifted down 4-5 pixels (again, [EMAIL PROTECTED]). If the text field is rotated 0.01 radians, the character spacing issue is fixed but the baseline issue is not (wtf).

#1 and #2 can be fixed. #3 is a bug in the font rendering in Flash. I do not know how to fix this issue completely. Big prize to whoever can figure that out.

Now, to fix #1 and #2 and match the way Photoshop renders line heights:

Photoshop renders text with a leading of 120% of the FONT SIZE. It uses the max ascent and descent of the entire font outline with that leading - rather than a dynamically adjusted ascent and descent, which is what the player does.

This process will render a text field almost identically to Photoshop:

1. Get the line metrics from every line of text
2. Find the average line height (fun)
3. Get the difference between what Flash, in it's confused mind, thinks the leading should be and what you want it to be (== font size *1.2) 4. Set the leading of a new text format object to this resulting number minus the ascent and descent measurements of the text format in question.

This whole thing has annoyed me for years. What is driving me crazy right now is the #3 problem I listed above (using embedded fonts).

cheers,

jon

Reply via email to