2016-06-02 10 views
5

मैं अपने कार्यक्रम में एसएफएमएल से एसडीएल 2 में स्विच कर रहा हूं, और मैंने यूटीएफ -8 प्रारूप में पाठ प्रस्तुत करने के लिए एसडीएल 2_ttf का उपयोग शुरू किया। मैं कार्य TTF_RenderUTF8_Solid का उपयोग करता हूं। मैंने देखा कि कुछ पात्रों को अब सही ढंग से प्रस्तुत नहीं किया गया है। एक उदाहरण है '' (यू + 1 एफ 70 डी)। मैंने सत्यापित किया कि फ़ॉन्ट में इन वर्ण हैं।क्या SDL2_ttf दो बाइट्स से अधिक वर्णों को प्रतिपादित करने में असमर्थ है?

मैंने glfont उदाहरण प्रोग्राम का उपयोग करने का प्रयास किया जो SDL2_ttf में शामिल है, और यह इन वर्णों को प्रस्तुत नहीं करता है।

मैं SDL2_ttf स्रोत कोड के लिए चला गया, और SDL_ttf.c में समारोह TTF_RenderUTF8_Solid में देखा है, और इस लाइन पर ध्यान:

Uint16 c = UTF8_getch(&text, &textlen); 

, जबकि UTF8_getch रिटर्न uint32। तो उच्च दो बाइटों को त्याग दिया जाता है (और वे कोड में कहीं और नहीं पढ़े जाते हैं), जो बताता है कि '' क्यों नहीं दिया जाता है (यह Uint16 में फिट नहीं होता है)। मैंने 'c' के प्रकार को Uint32 में बदल दिया, और इसे सही ढंग से 0x1F70D असाइन किया गया है। यह अभी भी प्रस्तुत नहीं करता है। संभवतः अन्य स्थानों की संभावना है जहां दो बाइट्स से अधिक वर्णों पर विचार नहीं किया गया था।

मेरा सवाल यह है कि क्या यह सिर्फ मेरी गलतफहमी या एसडीएल 2_ttf के साथ एक ज्ञात समस्या है, और यदि हां, तो इसके लिए कोई ज्ञात फिक्स है।

+0

SDL_ttf निम्नलिखित चेतावनी के साथ आया था: "यह जो आप अपने एसडीएल अनुप्रयोगों में ट्रू टाइप फोंट का उपयोग करने की अनुमति देता है एक नमूना पुस्तकालय है यह एक उदाहरण कार्यक्रम' showfont' जो किसी दिए गए के लिए एक उदाहरण स्ट्रिंग प्रदर्शित करता है के साथ आता है। ट्रू टाइप फ़ॉन्ट फ़ाइल। " मुझे SDL2_ttf के लिए एक समान चेतावनी नहीं मिली, लेकिन एसडीएल_एटीएफ के साथ मेरा अनुभव यह था कि जब आप विदेशी यूनिकोड वर्णों का उपयोग शुरू करते हैं तो स्मृति भ्रष्टाचार/क्रैश होते हैं। आप अपने बग ट्रैकर की जांच कर सकते हैं। मुझे लगता है कि यह सिर्फ खिलौनों के कार्यक्रमों के लिए है - मेरे विनम्र अनुभव में आप केवल Freetype का उपयोग करने के लिए बेहतर हैं और SDL_ttf के बारे में भूल जाते हैं। –

+0

धन्यवाद। जैसा कि मैं एसडीएल के लिए नया हूं, मैंने शुरुआत में सोचा था कि सभी एसडीएल_ * पुस्तकालय आधिकारिक तौर पर इसका हिस्सा हैं और अच्छी गुणवत्ता के हैं। मैं एसडीएल 2_मिक्सर का भी उपयोग करता हूं, मुझे आशा है कि इसके साथ मुझे और भाग्य होगा। टेक्स्ट प्रतिपादन के लिए मैं अन्य पुस्तकालयों को देखूंगा। –

+0

वही है जो मैं हाल ही में सोच रहा था। एक ही काम करने की कोशिश कर रहा है: एसडीएल_एटीएफ के साथ यूनिकोड प्रस्तुत करें, लेकिन यह सिर्फ 2 बाइट्स से अधिक अक्षरों के लिए काम नहीं करेगा। पूरी तरह से सही अवलोकन। तो अक्सर एसडीएल (और संबंधित पुस्तकालयों जैसे एसडीएल_एटीएफ) मुझे निराशाजनक बनाता है। (उदाहरण के लिए, विंडो का आकार बदलने के बाद अल्फा मिश्रण काम नहीं करता है।) बग्स पूरी जगह पर हैं। – huzzm

उत्तर

0

मैं इस पुस्तकालय का उपयोग कर समाप्त हुआ, ऐसा लगता है कि यह सब कुछ प्रस्तुत करना चाहिए।

https://github.com/akrinke/Font-Stash

संबंधित मुद्दे