Здравствуйте, 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. Хотя вряд-ли, конечно, будет сильно лучше.