बाहरी पुस्तकालयों का उपयोग किए बिना मुझे XNA में सुंदर छोटे पाठ कैसे मिलेंगे?


13

XNA में, स्प्राइटफोंट तकनीक भयानक है। Nuclex इतना बेहतर काम करता है, लेकिन मैं कोई बाहरी संदर्भ नहीं रखना चाहता हूं, और मैं अपने खेल के साथ लगभग ऐसा ही हूं।

Sansation या Quicksand जैसे फोंट का उपयोग करते समय, यह फोंट के छोटे आकार में भयानक लगता है। यह इतना बुरा है!

क्या इसके लिए एक ज्ञात समाधान है? मैंने फोंटाइज को बहुत ऊंचा करने की कोशिश की, और फिर बिना किसी भाग्य के उन्हें स्प्रिटबैच में नीचे स्केलिंग करने की कोशिश की।


मैं XNA के लिए अपने फोंट बनाने के लिए स्प्राइटफोंट का उपयोग करता हूं, आपके पास बहुत लचीलापन है। मैं यह भी सुनिश्चित करता हूं कि फ़ॉन्ट की स्थिति एक पूर्णांक है, ताकि कोई गंदा एंटीएलियासिंग न हो, लेकिन यह संभवतः एक महान समाधान नहीं है। आप अपने पाठ स्प्रिटबैच कॉल में भी पॉइंट फ़िल्टरिंग का प्रयास कर सकते हैं।
जोनाथन कॉनेल

विभिन्न प्रकार के वास्तविक उपकरणों और लोगों पर अपने छोटे फोंट का परीक्षण करना न भूलें। यदि यह एक 360 शीर्षक है और इस प्रकार टीवी को लक्षित कर रहा है, तो सभी दृश्य तत्वों के आकार एक पीसी स्क्रीन की तुलना में काफी हद तक बड़े होने की आवश्यकता है।
लार्स विकलंड

मैं एक पीसी गेम कर रहा हूं, और फॉन्ट साइज पूरी संख्या में सेट है।
मथियास लिकेगार्ड लोरेंजेन

1
ग्रंथों को स्केल न करें, हर आकार के लिए एक स्प्राइटफोंट बनाएं जो आपको चाहिए।
वाउचर

1
आपके लिए यहां कुछ और नियम। रेंडर करने से पहले पूर्णांक की स्थिति वेक्टर को क्लैंप करें, अन्यथा नमूना आपके आउटपुट टेक्स्ट को बकवास बना देगा । टेक्स्ट रेंडर करने से पहले टेक्सचर सैम्पलर को प्वाइंट / नियरस्ट नेबर में बदलने लायक हो सकता है। सामान्यतया यदि आपका फ़ॉन्ट
पिक्सेलित है

जवाबों:


11

XNA आपको स्प्राइटफोंट के रूप में एक बनावट आयात करने देता है । यदि आप XNA जेनरेट करने वाली स्प्राइट शीट पर भरोसा करने के बजाय एक अच्छी छवि संपादन प्रोग्राम में मैन्युअल रूप से प्रत्येक वर्ण को बाहर रखते हैं तो आप अपने फ़ॉन्ट में बेहतर हिंटिंग और एंटी-अलियासिंग प्राप्त कर सकते हैं।


13

XNA स्प्राइट फ़ॉन्ट प्रोसेसर DXT3 संपीड़न का उपयोग करता है जो कि XNA 4.0 में नए प्रीप्लेप्टेड अल्फा के साथ अच्छी तरह से काम नहीं करता है। इसलिए पाठ का अवरोधी रूप।

Nuclex स्प्राइट फ़ॉन्ट प्रोसेसर आउटपुट बिल्कुल उसी डेटा को आउटपुट करता है, सिवाय इसके कि Texture2Dफ़ॉन्ट बिटमैप डेटा रखने वाला आंतरिक संपीड़ित नहीं है - इसलिए इसमें कोई गुणवत्ता के मुद्दे नहीं हैं।

क्योंकि Nuclex प्रोसेसर का डेटा एक ही प्रारूप में है, XNA SpriteFontरीडर इसे पढ़ सकता है, और आपको अपने खेल के साथ वितरण के लिए किसी भी Nuclex लाइब्रेरी को शामिल करने की आवश्यकता नहीं है।

(यह आसानी से XNA के मूल स्प्राइट फ़ॉन्ट परिभाषाओं के समान XML प्रारूप का उपयोग करने की अनुमति देता है।)

कहा जा रहा है: आपके खेल के साथ बाहरी पुस्तकालयों को बंडल करने में कुछ भी गलत नहीं है। यह ऐसा नहीं है कि वे आपके सिस्टम या किसी भी चीज पर स्थापित हो जाएं। (आप दो विधानसभाओं के विलय के लिए भी इतनी दूर जा सकते हैं)।

और वही चीज़ कोड के लिए जाती है (यदि आप संस्करण नियंत्रण के बारे में चिंतित हैं, उदाहरण के लिए)। आप बस Nuclex.Fonts.Content.TrueTypeImporter.dllअपने स्रोत कोड के साथ डाल सकते हैं । यह वास्तव में कोई बड़ी बात नहीं है।


9

आप पिक्सेल फोंट का उपयोग कर सकते हैं :

पीएफ अस्थायी संस्करण

जब आप फ़ॉन्ट आकार में पिक्सेल फ़ॉन्ट का उपयोग करते हैं, तो इसे (या इसके कई गुणांक, जैसे 2x, 3x, 4x) के लिए डिज़ाइन किया गया था, आपको पिक्सेल-परफेक्ट टेक्स्ट की गारंटी दी जाती है, जिसके लिए एंटी-एलियासिंग की आवश्यकता नहीं होती है। इसका मतलब है कि आपको कभी भी भयानक एंटी-अलियासिंग से निपटना नहीं पड़ता है जो XNA के स्प्राइट फोंट को इतना बुरा और Nuclex को इतना बेहतर बनाता है। ( यह लेख उस समस्या की जाँच करता है और उनकी तुलना करता है)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.