Re: Flash, AS3 - Как считаются метрики (ascent, descent) для класса TextFormat?
От: maxkar  
Дата: 01.10.12 14:24
Оценка:
Здравствуйте, Zzzum, Вы писали:

Z>Привет!


Z>У меня есть два приложения: первое на Flex'e (AS3) — "дизайнер" и второе на Java — "рендерер". Смысл этих двух приложений в том, что юзер сначала создает дизайн в первом приложении, потом жмет "Save", и второе приложение генерит PDF при помощи iText либы. Дизайн может состоять из текстовых полей и картинок. Текст может быть разных шрифтов и размеров.


Z>Может быть кто-нибудь знает как эти метрики (class TextFormat) считаются во флеше? потому что для меня это является большой загадкой, и результаты, выдаваемые в логах флеша, даже по соотношениями не похожи на то, что должно быть...


А официальную картинку смотрели? Там ascent/descent достаточно абстракты. И, возможно, зависят только от шрифта, а не от текста. По пропорциям вроде бы похож ваш descent на хвостик от g. Причем в ascent/descent может даже и межстрочный интервал закладывается. Я сейчас проверял, на размере шрифта 12.5 две строки английского текста (ggg и TTtt) начинают касаться друг друга только при leading = -2.

Сразу предупрежу, что размеры текста во флеше еще и неточно могут определяться (возможно, только на некоторых форматах). Я, правда, мерил ширину textWidth у textField, но флеш ее периодически врал на пару пикселей). Еще у пользователя шрифты могут чуть отличаться (или стоять настройки антиалиасинга) из за чего ширина (а то и высота) шрифта в дизайнере будет не та, что у вас при рендеринге. А если шрифт внедрять, он конвертируется (там кривые безье кубические вместо квадратичных).

Можете попробовать flash.text.engine (я сам не использова). Документацию можно начать смотреть с TextLine. Хотя вряд-ли, конечно, будет сильно лучше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.