суббота, 19 октября 2013 г.

Вброс. Знаете ли вы что такое CoreText и NSAttributedString (CFAttributedString)?

Знаете ли вы что такое CoreText и NSAttributedString (CFAttributedString)?

Всё банально.

Хотя на этом и строится весь "нативный" рендеринг текста под MacOS и iOS.

Попробую в двух словах объяснить.

NSAttributedString = class
 Text : NSString;
 Attributes : T(?)Attributes;
end;//NSAttributedString

Где T(?)Attributes:

T(?)Attributes = array of Decoration;

Где Decoration:

Decoration = record
 Start : Integer;
 Finish: Integer;
 Font : TFont;
 Style : TStyle;
 GlyphRunnerDelegate : TGlyphRunnerDelegate; // - вот это САМЫЙ интересный член. Он позволяет вставлять КАРТИНКИ
...
etc // например SpaceBefore или SpaceAfter...
...
end;//Decorations

Атрибуты - "натянуты" на Text. Сверху наложены. Как "прозрачные" стёклышки.

И есть возможность "отрендерить" NSAttributedString в указанный прямоугольник.

И ЗАПОМНИТЬ результаты рендеринга. И анализировать из. С "точностью до буквы". Точнее - Glyph'а. И потом выводить эти результаты в реальное место контекста вывода.

В принципе - схема - знакомая. У меня в EVD - так всё примерно и устроено. С "точностью до запятых".

Интересная тема? Стоит про неё писать?

Там есть "подводные камни"... Например с системой координат.

Но если - "сразу неинтересно" - писать не буду...

4 комментария:

  1. Интересная тема. Я даже более общую бы взял. Интересно как устроена работа с GUI в целом.

    ОтветитьУдалить
    Ответы
    1. Роман, ничего кстати "нового" по сравнению с "виндой" - нет. Те же "контексты", те же "примитивы вывода". Плюс/минус. ОЧЕНЬ (ИМХО) похоже на GDI+. Только про трансформации и Layer'ы - ничего пока сказать не могу. Ибо - чайник в них. Там - есть "зерно". Да. Но тоже - не думаю, что Apple - "первопроходцы".

      Удалить
  2. Дим, да. "Навскидку" многое в Cocoa. Quartz и CoreText - user-friendly. И "очень правильно". Но не стоит ОБОЛЬЩАТЬСЯ. Там ТОЖЕ есть "шероховатости". А что до "не винды" - да в целом - "ничего нового". Те же контексты (hDC) и "окна" (View). Вопрос только в том, что КАКИЕ-ТО моменты там - БОЛЬШЕ проработаны. А какие-то кстати - меньше...

    ОтветитьУдалить