"पी" पत्र से अंक के अनुक्रम में जाने से कई कदम शामिल हैं। आपको कोर टेक्स्ट का उपयोग करने की आवश्यकता होगी।
CTFont
बनाएं। आईओएस 7 के बाद से, आप UIFont
का उपयोग कर सकते हैं जहां CTFont
की आवश्यकता है (वे "टोल-फ्री ब्रिज" हैं)। आप CTFontCreateWithGraphicsFont
फ़ंक्शन का उपयोग करके, CTFontCreateWithName
(या कुछ अन्य विधियों का उपयोग करके) नाम से CGFont
पर सीधे CTFont
बना सकते हैं।
CTFontGetGlyphsForCharacters
फ़ंक्शन का उपयोग कर पत्र के लिए ग्लिफ प्राप्त करें। पत्र "पी" के लिए सिर्फ एक ग्लिफ होना चाहिए। गैर-अंग्रेजी स्क्रिप्ट में कुछ पात्रों के लिए आपको एकाधिक (संयोजन) ग्लिफ मिल सकते हैं।
CTFontCreatePathForGlyph
फ़ंक्शन का उपयोग CGPath
ग्लाइफ के लिए प्राप्त करने के लिए करें।
पथ के तत्वों का आकलन करने के लिए CGPathApply
का उपयोग करें।
प्रत्येक पंक्ति, चौकोर वक्र, और बिंदुओं के अनुक्रम के पथ के घन वक्र तत्व को कनवर्ट करें। ऐप्पल ऐसा करने के लिए कोई सार्वजनिक एपीआई प्रदान नहीं करता है। आपको इसे स्वयं करने की आवश्यकता होगी। सीधे लाइन तत्वों के लिए यह आसान है। वक्र तत्वों के लिए, आपको कुछ शोध करने की आवश्यकता होगी यदि आप पहले से ही नहीं जानते कि बेज़ीयर वक्र कैसे प्रस्तुत किया जाए। उदाहरण के लिए, convert bezier curve to polygonal chain? देखें।
हम आसानी से एक स्विफ्ट खेल के मैदान में इस के साथ प्रयोग कर सकते हैं:
import UIKit
import CoreText
import XCPlayground
let font = UIFont(name: "HelveticaNeue", size: 64)!
var unichars = [UniChar]("P".utf16)
var glyphs = [CGGlyph](count: unichars.count, repeatedValue: 0)
let gotGlyphs = CTFontGetGlyphsForCharacters(font, &unichars, &glyphs, unichars.count)
if gotGlyphs {
let cgpath = CTFontCreatePathForGlyph(font, glyphs[0], nil)!
let path = UIBezierPath(CGPath: cgpath)
print(path)
XCPlaygroundPage.currentPage.captureValue(path, withIdentifier: "glyph \(glyphs[0])")
}
परिणाम:
<UIBezierPath: 0x7fbc89e0d370; <MoveTo {11.072000000000001, 23.808}>,
<LineTo {11.072000000000001, 40.576000000000001}>,
<LineTo {22.975999999999999, 40.576000000000001}>,
<QuadCurveTo {30.560000000000002, 38.432000000000002} - {28.16, 40.576000000000001}>,
<QuadCurveTo {32.960000000000001, 32.192} - {32.960000000000001, 36.288000000000004}>,
<QuadCurveTo {30.560000000000002, 25.920000000000002} - {32.960000000000001, 28.096}>,
<QuadCurveTo {22.975999999999999, 23.808} - {28.16, 23.744}>,
<Close>,
<MoveTo {4.992, 45.695999999999998}>,
<LineTo {4.992, 0}>,
<LineTo {11.072000000000001, 0}>,
<LineTo {11.072000000000001, 18.687999999999999}>,
<LineTo {25.024000000000001, 18.687999999999999}>,
<QuadCurveTo {35.488, 22.208000000000002} - {31.936, 18.623999999999999}>,
<QuadCurveTo {39.039999999999999, 32.192} - {39.039999999999999, 25.792000000000002}>,
<QuadCurveTo {35.488, 42.143999999999998} - {39.039999999999999, 38.591999999999999}>,
<QuadCurveTo {25.024000000000001, 45.695999999999998} - {31.936, 45.695999999999998}>,
<Close>
[आपने क्या प्रयास किया है?] (Http://whathaveyoutried.com) – EmilioPelaez