Core Text
- 3 min read
- 2 chapters
Explore on Lably
ToursExplore Lably’s 3D toursFeatures
Core Text provides the following opaque types:
- CTFramesetter - creates CTFrame objects from given attributed string object and CGPath object using CTTypesetter.
- CTTypesetter - performs line layouts; e.g., line breaking
- CTFrame - represents an array of lines (i.e., CTLine objects).
- CTLine - represents an array of glyph runs.
- CTRun - an ordered collection of glyphs sharing the same attribute.
- CTFont - represents a font.
Sign in to keep reading
One more chapter is free with a Lably account.
Example
The following code displays the text "Hello, World!" to the given graphics context in Objective-C.
<span id="mwKg"></span><span class="c1" id="mwKw">// Prepare font</span> <span class="n" id="mwLA">CTFontRef</span><span class="w" id="mwLQ"> </span><span class="n" id="mwLg">font</span><span class="w" id="mwLw"> </span><span class="o" id="mwMA">=</span><span class="w" id="mwMQ"> </span><span class="n" id="mwMg">CTFontCreateWithName</span><span class="p" id="mwMw">(</span><span class="n" id="mwNA">CFSTR</span><span class="p" id="mwNQ">(</span><span class="s" id="mwNg">"Times"</span><span class="p" id="mwNw">),</span><span class="w" id="mwOA"> </span><span class="mi" id="mwOQ">48</span><span class="p" id="mwOg">,</span><span class="w" id="mwOw"> </span><span class="nb" id="mwPA">NULL</span><span class="p" id="mwPQ">);</span> <span class="c1" id="mwPg">// Create an attributed string</span> <span class="n" id="mwPw">CFStringRef</span><span class="w" id="mwQA"> </span><span class="n" id="mwQQ">keys</span><span class="p" id="mwQg">[]</span><span class="w" id="mwQw"> </span><span class="o" id="mwRA">=</span><span class="w" id="mwRQ"> </span><span class="p" id="mwRg">{</span><span class="w" id="mwRw"> </span><span class="n" id="mwSA">kCTFontAttributeName</span><span class="w" id="mwSQ"> </span><span class="p" id="mwSg">};</span> <span class="n" id="mwSw">CFTypeRef</span><span class="w" id="mwTA"> </span><span class="n" id="mwTQ">values</span><span class="p" id="mwTg">[]</span><span class="w" id="mwTw"> </span><span class="o" id="mwUA">=</span><span class="w" id="mwUQ"> </span><span class="p" id="mwUg">{</span><span class="w" id="mwUw"> </span><span class="n" id="mwVA">font</span><span class="w" id="mwVQ"> </span><span class="p" id="mwVg">};</span> <span class="n" id="mwVw">CFDictionaryRef</span><span class="w" id="mwWA"> </span><span class="n" id="mwWQ">attr</span><span class="w" id="mwWg"> </span><span class="o" id="mwWw">=</span><span class="w" id="mwXA"> </span><span class="n" id="mwXQ">CFDictionaryCreate</span><span class="p" id="mwXg">(</span><span class="nb" id="mwXw">NULL</span><span class="p" id="mwYA">,</span><span class="w" id="mwYQ"> </span><span class="p" id="mwYg">(</span><span class="k" id="mwYw">const</span><span class="w" id="mwZA"> </span><span class="kt" id="mwZQ">void</span><span class="w" id="mwZg"> </span><span class="o" id="mwZw">**</span><span class="p" id="mwaA">)</span><span class="o" id="mwaQ">&</span><span class="n" id="mwag">keys</span><span class="p" id="mwaw">,</span><span class="w" id="mwbA"> </span><span class="p" id="mwbQ">(</span><span class="k" id="mwbg">const</span><span class="w" id="mwbw"> </span><span class="kt" id="mwcA">void</span><span class="w" id="mwcQ"> </span><span class="o" id="mwcg">**</span><span class="p" id="mwcw">)</span><span class="o" id="mwdA">&</span><span class="n" id="mwdQ">values</span><span class="p" id="mwdg">,</span> <span class="w" id="mwdw"> </span><span class="k" id="mweA">sizeof</span><span class="p" id="mweQ">(</span><span class="n" id="mweg">keys</span><span class="p" id="mwew">)</span><span class="w" id="mwfA"> </span><span class="o" id="mwfQ">/</span><span class="w" id="mwfg"> </span><span class="k" id="mwfw">sizeof</span><span class="p" id="mwgA">(</span><span class="n" id="mwgQ">keys</span><span class="p" id="mwgg">[</span><span class="mi" id="mwgw">0</span><span class="p" id="mwhA">]),</span><span class="w" id="mwhQ"> </span><span class="o" id="mwhg">&</span><span class="n" id="mwhw">kCFTypeDictionaryKeyCallBacks</span><span class="p" id="mwiA">,</span><span class="w" id="mwiQ"> </span><span class="o" id="mwig">&</span><span class="n" id="mwiw">kCFTypeDictionaryValueCallBacks</span><span class="p" id="mwjA">);</span> <span class="n" id="mwjQ">CFAttributedStringRef</span><span class="w" id="mwjg"> </span><span class="n" id="mwjw">attrString</span><span class="w" id="mwkA"> </span><span class="o" id="mwkQ">=</span><span class="w" id="mwkg"> </span><span class="n" id="mwkw">CFAttributedStringCreate</span><span class="p" id="mwlA">(</span><span class="nb" id="mwlQ">NULL</span><span class="p" id="mwlg">,</span><span class="w" id="mwlw"> </span><span class="n" id="mwmA">CFSTR</span><span class="p" id="mwmQ">(</span><span class="s" id="mwmg">"Hello, World!"</span><span class="p" id="mwmw">),</span><span class="w" id="mwnA"> </span><span class="n" id="mwnQ">attr</span><span class="p" id="mwng">);</span> <span class="n" id="mwnw">CFRelease</span><span class="p" id="mwoA">(</span><span class="n" id="mwoQ">attr</span><span class="p" id="mwog">);</span> <span class="c1" id="mwow">// Draw the string</span> <span class="n" id="mwpA">CTLineRef</span><span class="w" id="mwpQ"> </span><span class="n" id="mwpg">line</span><span class="w" id="mwpw"> </span><span class="o" id="mwqA">=</span><span class="w" id="mwqQ"> </span><span class="n" id="mwqg">CTLineCreateWithAttributedString</span><span class="p" id="mwqw">(</span><span class="n" id="mwrA">attrString</span><span class="p" id="mwrQ">);</span> <span class="n" id="mwrg">CGContextSetTextMatrix</span><span class="p" id="mwrw">(</span><span class="n" id="mwsA">context</span><span class="p" id="mwsQ">,</span><span class="w" id="mwsg"> </span><span class="n" id="mwsw">CGAffineTransformIdentity</span><span class="p" id="mwtA">);</span><span class="w" id="mwtQ"> </span><span class="c1" id="mwtg">//Use this one when using standard view coordinates</span> <span class="c1" id="mwtw">//CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0)); //Use this one if the view's coordinates are flipped</span> <span class="n" id="mwuA">CGContextSetTextPosition</span><span class="p" id="mwuQ">(</span><span class="n" id="mwug">context</span><span class="p" id="mwuw">,</span><span class="w" id="mwvA"> </span><span class="mi" id="mwvQ">10</span><span class="p" id="mwvg">,</span><span class="w" id="mwvw"> </span><span class="mi" id="mwwA">20</span><span class="p" id="mwwQ">);</span> <span class="n" id="mwwg">CTLineDraw</span><span class="p" id="mwww">(</span><span class="n" id="mwxA">line</span><span class="p" id="mwxQ">,</span><span class="w" id="mwxg"> </span><span class="n" id="mwxw">context</span><span class="p" id="mwyA">);</span> <span class="c1" id="mwyQ">// Clean up</span> <span class="n" id="mwyg">CFRelease</span><span class="p" id="mwyw">(</span><span class="n" id="mwzA">line</span><span class="p" id="mwzQ">);</span> <span class="n" id="mwzg">CFRelease</span><span class="p" id="mwzw">(</span><span class="n" id="mw0A">attrString</span><span class="p" id="mw0Q">);</span> <span class="n" id="mw0g">CFRelease</span><span class="p" id="mw0w">(</span><span class="n" id="mw1A">font</span><span class="p" id="mw1Q">);</span>More in Computing and communication
ISBNUnique numeric book identifier since 1970X (social network)American social networking serviceWayback MachineDigital archive by the Internet ArchivePython (programming language)General-purpose programming languageMacOSOperating system for Apple computersAPIConnection between computers or programs

