Windows में, CreateFontIndirect()
कॉल चुपचाप संगत फोंट स्थानापन्न कर सकते हैं यदि अनुरोध फॉन्ट का अनुरोध नहीं है। GetObject()
कॉल इस प्रतिस्थापन को प्रतिबिंबित नहीं करता है; यह एक ही LOGFONT
में पारित देता है। मैं क्या फॉन्ट था वास्तव में बनाया कैसे मिल सकती है? वैकल्पिक रूप से, मैं विंडोज़ को केवल सटीक फ़ॉन्ट को वापस लौटने के लिए कैसे मजबूर कर सकता हूं?मुझे कैसे पता चलेगा कि मेरे CreateFont कॉल के लिए वास्तव में किस फ़ॉन्ट का उपयोग किया गया था?
उत्तर
विंडोज़ में, CreateFontIndirect() कॉल चुपचाप संगत फोंट को प्रतिस्थापित कर सकती है अगर अनुरोधित फ़ॉन्ट का अनुरोध नहीं किया जाता है। GetObject() कॉल इस प्रतिस्थापन को प्रतिबिंबित नहीं करता है; यह उसी LOGFONT को पास करता है।
यह CreateFontIndirect नहीं है जो प्रतिस्थापन कर रहा है। प्रतिस्थापन तब होता है जब फ़ॉन्ट डीसी में चुना जाता है। CreateFontIndirect बस आपको LOGFONT की एक आंतरिक प्रतिलिपि के लिए एक हैंडल देता है। यही कारण है कि GetObject आपको वही LOGFONT वापस देता है।
मैं कैसे देख सकता हूं कि वास्तव में बनाया गया था?
यदि आप लक्षित डीसी में एचएफओटी का चयन करते हैं, तो आप डीसी से उस फ़ॉन्ट के बारे में जानकारी के लिए पूछ सकते हैं जिसे वास्तव में LOGFONT के सर्वोत्तम मैच के रूप में चुना गया था।
- चेहरा नाम GetTextFace के साथ उपलब्ध है।
- आप GetTextMetrics साथ मैट्रिक्स मिल सकती है।
- चयनित फ़ॉन्ट ट्रू टाइप या ओपन टाइप है, तो आप GetOutlineTextMetrics साथ अतिरिक्त मीट्रिक मिल सकती है।
कि अनिवार्य रूप से बताता है कि फॉन्ट वास्तव में बनाया गया था।
एक तरफ:
जब मुद्रण पूर्वावलोकन की तरह कुछ कर रही है, यदि आप एक LOGFONT साथ शुरू कर सकते, प्रिंटर डीसी (या आईसी) में उसका चयन करें, वास्तविक फ़ॉन्ट का विवरण (प्रिंटर अक्सर स्थानापन्न फोंट) हड़पने, और फिर एक नया LOGFONT बनाएं जो वास्तविक फ़ॉन्ट का अधिक प्रतिनिधि है। स्क्रीन डीसी में इसका चयन करें, और - उचित आकार रूपांतरणों के साथ - उपयोगकर्ता को वास्तव में क्या मिलेगा इसका एक अच्छा अच्छा मिलान करें।
यह ध्यान देने योग्य है कि 'GetTextFace' आवश्यक रूप से उसी नाम को वापस नहीं करता है, भले ही चयनित फ़ॉन्ट का अनुरोध किया गया हो। उदाहरण के लिए, यदि आप 'एमएस गोथिक' को 'CreateFont'' पर पास करते हैं, तो 'GetTextFace'' एमएस ゴ シ ッ ク 'या 'एमएस गोथिक' वापस लौटा सकता है लोकेल सेटिंग्स पर निर्भर करता है। – raymai97
ओएस के विभिन्न भाषा संस्करणों पर उपयुक्त फ़ॉन्ट पाने के लिए, LOGFONT संरचना में वांछित फ़ॉन्ट विशेषताओं के साथ कॉल EnumFontFamiliesEx, तो उपयुक्त टाइपफेस नाम निकालते हैं और CreateFont या CreateFontIndirect का उपयोग कर फ़ॉन्ट बनाने।
हालांकि यह एचएफओटी से वास्तविक फ़ॉन्ट नाम प्राप्त करने का सार्वभौमिक तरीका नहीं है, तो आप पहले से जांच सकते हैं कि CreateFontIndirect (सबसे अधिक संभावना) वापसी क्या करेगा।
से कैसे MSDN गुण यह तरीका विंडोज आंतरिक रूप से प्रतिस्थापन करता है की तरह लगता है से एक फ़ॉन्ट परिवार प्राप्त करने के लिए एक अच्छा समाधान के रूप में इस सुझाव है आंकना।
मुझे संदेह है कि प्रश्न वास्तव में फ़ॉन्ट आउटपुट के बारे में है, लक्ष्य लक्ष्य डिवाइस पर उपलब्ध फ़ॉन्ट्स के चयन के बजाय विभिन्न भाषा/स्क्रिप्ट मुद्दों के लिए फ़ॉन्ट-लिंकिंग या फ़ॉन्ट-फ़ॉलबैक। –
@ एड्रियन मैकार्थी, मुझे लगता है कि टिप्पणी का पहला भाग भ्रामक है। महत्वपूर्ण हिस्सा यह है कि EnumFontFamiliesEx का उपयोग उन फ़ॉन्ट्स को करने के लिए किया जा सकता है जो LOGFONT में दिए गए मानदंडों से मेल खाते हैं। किसी भी अन्य सदस्य की तरह lfCharSet पर लागू होता है। – pezcode
EnumFontFamiliesEx केवल LOGFONT के कुछ क्षेत्रों में दिखता है। वास्तविक फ़ॉन्ट मैपर सबकुछ देखता है। यह सुनिश्चित करने का एकमात्र तरीका यह तय करने का एकमात्र तरीका है कि कौन सा फ़ॉन्ट चुना जाता है, इसे डीसी में चुनना है और वे इसे पूछते हैं। –
- 1. WPF मुझे कैसे पता चलेगा कि कौन सा ListBox आइटम क्लिक किया गया था
- 2. मुझे कैसे पता चलेगा कि एनएसविंडो बंद बटन का उपयोग कर बंद कर दिया गया था?
- 3. मुझे कैसे पता चलेगा कि
- 4. मुझे कैसे पता चलेगा कि मेरे स्ट्रिंग में डाइक्रिटिक्स हैं?
- 5. मुझे कैसे पता चलेगा कि मेरा संदेश वसंत amqp के साथ सफलतापूर्वक भेजा गया था?
- 6. मुझे कैसे पता चलेगा कि HTTP या HTTPS का उपयोग कर सर्वलेट को अनुरोध निष्पादित किया गया था?
- 7. मुझे कैसे पता चलेगा कि Google विज़ुअलाइज़ेशन
- 8. मुझे कैसे पता चलेगा कि एक पृष्ठ वास्तव में पूरी तरह से लोड हो गया है?
- 9. मैं कैसे पता लगा सकता हूं कि ऐप पर हस्ताक्षर करने के लिए किस कीस्टोर का उपयोग किया गया था?
- 10. मुझे कैसे पता चलेगा कि डब्ल्यूपीएफ
- 11. कोड का पता लगाने के लिए किस बटन को क्लिक किया गया था?
- 12. आईओएस पता पुस्तिका - कैसे पता चलेगा कि कौन सा संपर्क जोड़ा गया/संपादित/हटाया गया था?
- 13. मुझे कैसे पता चलेगा कि विंडोज सीई
- 14. मुझे कैसे पता चलेगा कि पेपैल साइट
- 15. का पता लगाने के जो फ़ॉन्ट एक वेब पेज में इस्तेमाल किया गया था
- 16. मुझे कैसे पता चलेगा कि ScalaQuery
- 17. कैसे पता चलेगा कि एक वेब पेज आखिरी बार कब अपडेट किया गया था?
- 18. मुझे कैसे पता चलेगा कि UIPageViewController आगे फिसल गया या उलट गया?
- 19. विदेशी कुंजी उल्लंघन के कारण एक SQLexception फेंक दिया गया था, तो मुझे कैसे पता चलेगा?
- 20. मुझे कैसे पता चलेगा कि स्क्रॉलव्यू पहले से नीचे स्क्रॉल किया गया है?
- 21. यह कैसे बताना है कि .ipa पर हस्ताक्षर करने के लिए किस प्रोफ़ाइल/हस्ताक्षर प्रमाणपत्र का उपयोग किया गया था?
- 22. मुझे यह कैसे पता चलेगा कि मुझे क्या जानना है?
- 23. यदि किसी HTML फॉर्म में दो <इनपुट प्रकार = "सबमिट करें"> बटन हैं, तो मुझे कैसे पता चलेगा कि किस पर क्लिक किया गया था?
- 24. यह पता लगाना कि कर्ल को रीडायरेक्ट किया गया था
- 25. साइबरिन/साइबरस्ट्रैड किस भाषा में लागू किया गया था?
- 26. 'एंग्री बर्ड' ऐप प्रोग्राम करने के लिए किस भाषा का उपयोग किया गया था?
- 27. मुझे कैसे पता चलेगा कि एक संपादन योग्य JComboBox का पाठ बदल दिया गया है?
- 28. मुझे कैसे पता चलेगा कि मेरे NSTextView में अनुलग्नक विशेषता कब जोड़ा जा रहा है?
- 29. मुझे कैसे पता चलेगा कि कर्सर मेरे कर्सर को एक्सकोड में क्या है?
- 30. स्कैला MouseEvent - कैसे पता चलेगा कि कौन सा बटन दबाया गया था?
आपको इस तरह के नियंत्रण के लिए यूनिस्क्रिप एपीआई का उपयोग करने की आवश्यकता है। –
@ हंस, दुर्भाग्य से यह कुछ काफी बालों वाली विरासत कोड के बीच में गहरा है। Uniscribe का उपयोग करने के लिए इसे refactoring एक होगा ...कठिन कार्य, कम से कम परीक्षण और दस्तावेज़ीकरण की कमी से मदद नहीं की। अगर एचएफओटी से इस प्रकार की जानकारी प्राप्त करने के लिए अनियंत्रित जीडीआई कॉल का कुछ बच्चा है, तो यह कुछ भी बेहतर नहीं होगा :) – bdonlan