Задали тут вопрос про CoreText, GlyphRunnerDelegate и "обтекание картинок текстом".
По мотивам - http://18delphi.blogspot.ru/2013/10/coretext-nsattributedstring.html
Вопрос примерно такой - "позволяет ли CoreText сделать обтекание картинок текстом".
Ответ - "ЗА ПРОСТО ТАК" - НЕ ПОЗВОЛЯЕТ.
GlyphRunnerDelegate в CoreText - это всего лишь Glyph в "терминах GoF". Т.е. НА САМОМ деле - картинка для CoreText - это всего лишь - "буква".
Что же можно получить "практически за просто так"?
Немногое. Но может быть и это вам понравится.
НА САМОМ ДЕЛЕ при рендеринге NSAttributedString (CFAttributedString) в функцию CTCreateFrame подаётся НЕ ПРЯМОУГОЛЬНИК, а PATH - замкнутая линия, ограничивающая РЕГИОН.
А регион может быть - "ЛЮБОЙ". И с "дырками" - тоже.
Соответственно - если вы знаете - ГДЕ в вашем "параграфе" (NSAttributedString) располагаются картинки - вы можете - ЗАРАНЕЕ "вырезать дырки" в области вывода.
И CoreText - "сам" расположит текст с учётом этих "дырок".
Всё бы ничего. Но!
CoreText это сделает БЕЗ УЧЁТА границ слов. Он просто "порвёт слова" на границах "дырок".
Т.е. слово "упрётся" в дырку справа и продолжится от неё слева, когда она кончится.
Если же вы хотите сделать "НАСТОЯЩЕЕ" обтекание КАРТИНОК текстом с УЧЁТОМ границ слов, то придётся повозиться и многое "сделать руками".
Позже - я может быть пишу свои соображения на этот счёт. Они не очень простые. И сводятся к многопроходному нарезанию NSAttributedString на "куски между картинками".
По мотивам - http://18delphi.blogspot.ru/2013/10/coretext-nsattributedstring.html
Вопрос примерно такой - "позволяет ли CoreText сделать обтекание картинок текстом".
Ответ - "ЗА ПРОСТО ТАК" - НЕ ПОЗВОЛЯЕТ.
GlyphRunnerDelegate в CoreText - это всего лишь Glyph в "терминах GoF". Т.е. НА САМОМ деле - картинка для CoreText - это всего лишь - "буква".
Что же можно получить "практически за просто так"?
Немногое. Но может быть и это вам понравится.
НА САМОМ ДЕЛЕ при рендеринге NSAttributedString (CFAttributedString) в функцию CTCreateFrame подаётся НЕ ПРЯМОУГОЛЬНИК, а PATH - замкнутая линия, ограничивающая РЕГИОН.
А регион может быть - "ЛЮБОЙ". И с "дырками" - тоже.
Соответственно - если вы знаете - ГДЕ в вашем "параграфе" (NSAttributedString) располагаются картинки - вы можете - ЗАРАНЕЕ "вырезать дырки" в области вывода.
И CoreText - "сам" расположит текст с учётом этих "дырок".
Всё бы ничего. Но!
CoreText это сделает БЕЗ УЧЁТА границ слов. Он просто "порвёт слова" на границах "дырок".
Т.е. слово "упрётся" в дырку справа и продолжится от неё слева, когда она кончится.
Если же вы хотите сделать "НАСТОЯЩЕЕ" обтекание КАРТИНОК текстом с УЧЁТОМ границ слов, то придётся повозиться и многое "сделать руками".
Позже - я может быть пишу свои соображения на этот счёт. Они не очень простые. И сводятся к многопроходному нарезанию NSAttributedString на "куски между картинками".
Комментариев нет:
Отправить комментарий