Основной текст - Core Text

Основной текст это Основной фундамент стиль API в macOS, впервые представленный в Mac OS X 10.4 Tiger, обнародовано в Mac OS X 10.5 Leopard, и введен для iPad с iPhone SDK 3.2. Разоблачение C API, он заменяет возможности визуализации текста в устаревших Зарисовка и ATSUI фреймворков в предыдущих версиях Mac OS X. Согласно Apple, Core Text «разработан для обеспечения высокой производительности и простоты использования», а его API разметки «прост, согласован и тесно интегрирован с Core Foundation, Core Graphics и Cocoa».[1]

Функции

Core Text предоставляет следующие непрозрачные типы:

  • CTFramesetter - создает объекты CTFrame из заданного строкового объекта с атрибутами и объекта CGPath с помощью CTTypesetter.
  • CTTypesetter - выполняет линейные раскладки; например, разрыв строки
  • CTFrame - представляет собой массив строк (т.е. объекты CTLine).
  • CTLine - представляет собой массив пробегов глифов.
  • CTRun - упорядоченный набор глифов с одним и тем же атрибутом.
  • CTFont - представляет собой шрифт.

Пример

Следующий код отображает текст «Hello, World!» к заданному графическому контексту.

// Подготавливаем шрифтCTFontRef шрифт = CTFontCreateWithName(CFSTR("Times"), 48, НОЛЬ);// Создаем строку с атрибутамиCFStringRef ключи[] = { kCTFontAttributeName };CFTypeRef значения[] = { шрифт };CFDictionaryRef attr = CFDictionaryCreate(НОЛЬ, (const пустота **)&ключи, (const пустота **)&значения,					  размер(ключи) / размер(ключи[0]), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);CFAttributedStringRef attrString = CFAttributedStringCreate(НОЛЬ, CFSTR("Привет, мир!"), attr);CFRelease(attr);// Рисуем строкуCTLineRef линия = CTLineCreateWithAttributedString(attrString);CGContextSetTextMatrix(контекст, CGAffineTransformIdentity);  // Используйте это при использовании стандартных координат представления// CGContextSetTextMatrix (контекст, CGAffineTransformMakeScale (1.0, -1.0)); // Используйте это, если координаты представления переворачиваютсяCGContextSetTextPosition(контекст, 10, 20);CTLineDraw(линия, контекст);// ОчиститьCFRelease(линия);CFRelease(attrString);CFRelease(шрифт);

Рекомендации

внешняя ссылка