में टेक्स्ट की बाउंडिंग रेक्ट ढूँढना मैं कोर टेक्स्ट में टेक्स्ट की एक पंक्ति की सीमाओं को खोजने की कोशिश कर रहा हूं। सादगी के लिए, मान लें कि इसमें एक ही चरित्र है। फिलहाल मैं निम्न विधि का उपयोग कर रहा:कोर टेक्स्ट
line = CTLineCreateWithAttributedString(attrString);
rect = CTLineGetImageBounds(line, context);
यह समय की सबसे काम करता है, लेकिन कुछ वर्ण, जैसे गणित इटैलिक घ के लिए (यूनिकोड: 0x1D451) या गणित इटैलिक क्ष (यूनिकोड: 0x1D45E), चौड़ाई थोड़ी छोटी है।
मैं CTLineGetTypographicBounds()
या CTFramesetterSuggestFrameSizeWithConstraints
उपयोग करने की कोशिश, लेकिन वे या तो मदद नहीं के रूप में फॉन्ट ही इटैलिक नहीं है, मैं भी नहीं कर सकते हैं (मैं वे चौड़ाई, अपने ग्राफिकल चौड़ाई नहीं। लगता है ग्लिफ़ की अग्रिम का उपयोग लगता है) था इसे ठीक करने के लिए स्लैंट कोण का उपयोग करें।
मैंने सीधे ग्लाइफ तक पहुंचने और CTFontCreatePathForGlyph()
का उपयोग करने का प्रयास किया, लेकिन सीजीजीलीफ और यूनीचर दोनों 16-बिट्स के रूप में विफल रहे और मुझे 32-बिट वर्णों की आवश्यकता है।
क्या किसी को पता है कि मैं कुछ गलत कर रहा हूं? यदि हां, तो सही तरीका क्या है?
अद्यतन:
यकीन है कि यह फ़ॉन्ट से संबंधित एक समस्या नहीं है बनाने के लिए, मैं अलग फोंट का इस्तेमाल किया। एरियल इटालिक में ASCII वर्णों के लिए भी समस्या मौजूद है।
अद्यतन:
मेरे पिछले अद्यतन पर ध्यान न दें! यह यह पता चला है (एरियल इटालिक के साथ समस्या) मेरी अपनी बग थी। हालांकि पहली समस्या अभी भी खड़ी है।
मैंने अभी एक बग दायर किया है। अगर मैं कुछ सुनूं तो आपको बता दूंगा। – mohsenr