Core Text es una API de estilo Core Foundation en macOS , introducida por primera vez en Mac OS X 10.4 Tiger , hecha pública en Mac OS X 10.5 Leopard y presentada para iPad con iPhone SDK 3.2. Al exponer una API C , reemplaza las capacidades de representación de texto de los marcos QuickDraw y ATSUI ahora obsoletos en versiones anteriores de Mac OS X. Según Apple, Core Text está "diseñado para un alto rendimiento y facilidad de uso" y su API de diseño es "simple, coherente y estrechamente integrado con Core Foundation, Core Graphics y Cocoa". [1]
Características
Core Text proporciona los siguientes tipos opacos:
- CTFramesetter : crea objetos CTFrame a partir de un objeto de cadena con atributos y un objeto CGPath mediante CTTypesetter.
- CTTypesetter : realiza diseños de líneas; p. ej., salto de línea
- CTFrame : representa una matriz de líneas (es decir, objetos CTLine).
- CTLine : representa una matriz de ejecuciones de glifos.
- CTRun : una colección ordenada de glifos que comparten el mismo atributo.
- CTFont : representa una fuente.
Ejemplo
El siguiente código muestra el texto "¡Hola, mundo!" al contexto gráfico dado.
// Preparar la fuente CTFontRef font = CTFontCreateWithName ( CFSTR ( "Times" ), 48 , NULL );// Cree una cadena de atributos CFStringRef keys [] = { kCTFontAttributeName }; CFTypeRef valores [] = { fuente }; CFDictionaryRef attr = CFDictionaryCreate ( NULL , ( const void ** ) & keys , ( const void ** ) & values , sizeof ( keys ) / sizeof ( keys [ 0 ]), & kCFTypeDictionaryKeyCallBacks , & kCFTypeDictionaryValueCallBacks ); CFAttributedStringRef attrString = CFAttributedStringCreate ( NULL , CFSTR ( "¡Hola, mundo!" ), Atributo ); CFRelease ( attr );// Dibuja la cadena CTLineRef line = CTLineCreateWithAttributedString ( attrString ); CGContextSetTextMatrix ( contexto , CGAffineTransformIdentity ); // Use este cuando use coordenadas de vista estándar // CGContextSetTextMatrix (context, CGAffineTransformMakeScale (1.0, -1.0)); // Use este si las coordenadas de la vista están invertidasCGContextSetTextPosition ( contexto , 10 , 20 ); CTLineDraw ( línea , contexto );// Limpiar CFRelease ( línea ); CFRelease ( attrString ); CFRelease ( fuente );