Core Textは、macOSにおけるテキスト表示の中核を担うAPIです。
Mac OS X v10.4で初めて導入され、v10.5で公開されて以来、テキストレンダリング機能の基盤として活用されています。従来の
QuickDrawやATSUIといった技術に取って代わり、より高度で効率的なテキスト処理を実現しています。
Appleが提供するCore Textは、パフォーマンスと使いやすさを両立させることを目指して設計されました。このAPIは、テキストのレイアウト処理を簡潔かつ安定的に行えるよう、
Core Foundation、Core Graphics、Cocoaといった他のフレームワークと密接に連携しています。これにより、開発者は複雑なテキスト描画処理を容易に実装することが可能です。
Core Textの特徴
Core Textは、以下の要素を操作するための不透過型を提供します。
CTFramesetter: 属性付き文字列とCGPathを基に、CTFrameオブジェクトを生成します。CTTypesetterを利用して、テキストのレイアウトを管理します。
CTTypesetter: テキストの行レイアウトを制御し、改行などの処理を行います。これにより、テキストを適切に整形できます。
CTFrame: 複数の行(CTLineオブジェクト)をまとめた配列を表現します。テキストの表示領域を管理する上で重要な役割を果たします。
CTLine: 同じ属性を持つグリフの連続した配列を表します。これは、テキストの具体的な描画要素となります。
CTFont: フォントの情報を保持します。テキストの見た目を定義する上で欠かせない要素です。
これらの要素を組み合わせることで、テキストの描画、レイアウト、スタイリングを柔軟に制御できます。
使用例
以下のコードは、グラフィックコンテクストに「Hello, World!」というテキストを表示する簡単な例です。この例を通して、Core Textの基本的な使い方を理解できます。
objectivec
// コード例はObjective-Cですが、Swiftでも同様の概念で記述できます。
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, 100); // 描画位置を調整
NSString text = @"Hello, World!";
CFStringRef stringRef = CFStringCreateCopy(kCFAllocatorDefault, (CFStringRef)text);
CFAttributedStringRef attrStringRef = CFAttributedStringCreate(kCFAllocatorDefault, stringRef, NULL);
CFRelease(stringRef);
CTFontRef font = CTFontCreateWithName(CFSTR("Helvetica"), 20.0, NULL);
CFAttributedStringSetAttribute(attrStringRef, CFRangeMake(0, CFAttributedStringGetLength(attrStringRef)), kCTFontAttributeName, font);
CFRelease(font);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrStringRef);
CFRelease(attrStringRef);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, CGRectMake(0, 0, 300, 100));
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
CFRelease(path);
CTFrameDraw(frame, context);
CFRelease(frame);
CFRelease(framesetter);
このコードでは、文字列を属性付き文字列に変換し、フォントを設定した後、CTFramesetterとCTFrameを利用してテキストをグラフィックコンテクストに描画しています。具体的な実装は割愛しますが、Core Textの基本的な流れを掴む上で役立つでしょう。
参考情報
Core Textは、高度なテキスト処理を必要とするアプリケーションにとって不可欠なAPIです。詳細な情報や最新のドキュメントについては、以下の
Apple Developer Connectionを参照してください。
外部リンク
*
Overview at Apple's Developer Connection
このドキュメントでは、Core Textの基本的な概念から具体的な使用方法まで、幅広い情報を得られます。Core Textを使いこなす上で、ぜひ参考にしてください。