2010-03-11 6 views
7

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

मेरा सवाल यह है कि यह निर्धारित करने का कोई तरीका है कि कौन से फोंट TextOut फ़ॉन्ट लिंकिंग के लिए (या चुना गया) चुनेंगे?

मुझे निम्न-स्तर के अनइस्क्रिप्शन API के साथ कुछ टेक्स्ट खींचना है, जो स्वत: फ़ॉन्ट-लिंकिंग नहीं करता है। मैंने अपना स्वयं का फ़ॉन्ट-लिंकिंग लागू किया है, लेकिन कभी-कभी मेरा एल्गोरिदम उसी पाठ के लिए TextOut से भिन्न फ़ॉन्ट चुनता है। मैं विंडोज एल्गोरिदम को बेहतर समझने की कोशिश कर रहा हूं, लेकिन मैं दृष्टि पर फोंट की पहचान करने में विशेष रूप से अच्छा नहीं हूं (विशेष रूप से अपरिचित स्क्रिप्ट में)।

उत्तर

2

फ़ॉन्ट रजिस्ट्री प्रविष्टि द्वारा चुना गया है। यह अच्छी तरह से this article. में वर्णन किया गया प्रासंगिकता का हवाला देते हुए: फ़ॉन्ट जोड़ने अपने डिवाइस पर सक्षम है

हैं, तो आप HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ पर रजिस्ट्री कुंजी की उपकुँजियाँ गणना करके रजिस्ट्री जांच कर सकते हैं विंडोज एनटी \ CurrentVersion \ FontLink \ SystemLink लिंक फोंट के लिए फ़ॉन्ट्स के मैपिंग को निर्धारित करने के लिए। अतिरिक्त उपकुंजी बनाने के लिए आप Regedit का उपयोग कर लिंक जोड़ सकते हैं।

+3

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

+0

IMLangFontLink देखें: http://msdn.microsoft.com/en-us/library/aa767872%28v=VS.85%29.aspx –

+0

मैंने पहले के पुनरावृत्ति में IMLangFontLink2 का उपयोग किया था, लेकिन जब मैंने एलटीआर स्क्रिप्ट मिश्रित की तो समस्याएं आईं आरटीएल स्क्रिप्ट के साथ। मुझे लगता है कि यह एक बहुत पुराना समाधान है और यह शायद पिछड़े संगतता के लिए बना हुआ है। –

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