Основной текст
Появление
Эта статья нуждается в дополнительных ссылок для проверки . ( сентябрь 2007 г. ) |
Core Text — это Core Foundation в стиле API в macOS , впервые представленный в Mac OS X 10.4 Tiger , опубликованный в Mac OS X 10.5 Leopard и представленный для iPad с iPhone SDK 3.2. Предоставляя C API , он заменяет возможности рендеринга текста ныне устаревших платформ QuickDraw и 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!» к данному графическому контексту в Objective-C .
// Подготавливаем шрифт
CTFontRef font = CTFontCreateWithName ( CFSTR ( «Times» ), 48 , NULL );
строку
CFStringRefkeys // Создаем атрибутированную [] = { kCTFontAttributeName };
CFTypeRef Значения [] = { шрифт };
CFDictionaryRef attr = CFDictionaryCreate ( NULL , ( const void ** ) & keys , ( const void ** ) & values ,
sizeof ( keys ) / sizeof ( keys [ 0 ]), & kCFTypeDictionaryKeyCallBacks , & kCFTypeDictionaryValueCallBacks );
CFAttributedStringRef attrString = CFAttributedStringCreate ( NULL , CFSTR ( «Привет, мир!» ), attr );
CFRelease ( атрибут );
// Рисуем строку
CTLineRef line = CTLineCreateWithAttributedString ( attrString );
CGContextSetTextMatrix ( контекст , CGAffineTransformIdentity ); //Используйте это при использовании стандартных координат представления
//CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0)); //Используйте это, если координаты представления перевернуты
CGContextSetTextPosition ( context , 10 , 20 );
CTLineDraw ( строка , контекст );
// Очистка
CFRelease ( строка );
CFRelease ( attrString );
CFRelease ( шрифт );