2010-08-23 8 views
8

मैं फॉन्ट के बीच विसंगति समझने की कोशिश कर में मेरे दिमाग wracking हूँ आकार उपयोगकर्ताओं का चयन करें या (उदाहरण के लिए एक FontDialog का उपयोग कर,) और उन्हें आकार .NET में फ़ॉन्ट वर्ग द्वारा रिपोर्ट निर्दिष्ट करें।.NET GDI + में फ़ॉन्ट आकार विसंगति?

उदाहरण के लिए:

संवाद में 11 का चयन का उत्पादन 11.25

संवाद में 12 का चयन का उत्पादन 12

:

using (FontDialog dlg = new FontDialog()) { 
    if (dlg.ShowDialog() == DialogResult.OK) { 
     Console.WriteLine("Selected font size: " + dlg.Font.SizeInPoints.ToString("0.##")); 
    } 
} 

उपरोक्त कोड का उपयोग करना, आप कुछ भ्रामक परिणाम मिलेंगे

संवाद में 14 का चयन 14.25

संवाद में 16 का चयन 15.75

यह व्यवहार आपके द्वारा चुने गए फ़ॉन्ट के बावजूद होता है। जैसा कि आप ऊपर से देख सकते हैं, विसंगति में कोई पैटर्न नहीं है, ऐसा लगता है कि यह +0.25 और -0.25 के बीच यादृच्छिक रूप से भिन्न होता है।

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

क्या कोई इस के लिए तर्कसंगत स्पष्टीकरण प्रदान कर सकता है? यूआई में फ़ॉन्ट आकार प्रदर्शित करने के लिए कोई सर्वोत्तम अभ्यास तकनीक है? जब उपयोगकर्ता '10 .5 'जैसे आंशिक आकार चाहता है तो कैसे?

उत्तर

1

विसंगति

आप देख सकते हैं, फ़ॉन्ट आकार 0.75 की दर से वृद्धि होने में कोई पैटर्न नहीं है।

संपादित करें: यदि आप फ़ॉन्ट संवाद का उपयोग नहीं करते हैं तो आप ट्यून आकार ठीक कर सकते हैं, लेकिन मुझे लगता है कि परिणाम 'पसंदीदा' आकारों से कम प्रसन्न होंगे।

+1

को परिवर्तित करता है तो अनिवार्य रूप से बदल जाएगा, (और हमेशा किया गया है) अनुमानित मान ? क्या मैं अकेला हूं जो इसे थोड़ा परेशान करता है? :/ स्पष्ट रूप से मेरे उपयोगकर्ताओं को आंशिक फ़ॉन्ट आकार देने में कोई बात नहीं है, क्योंकि स्थापित सम्मेलनों में पहले से ही अपर्याप्तता का एक तत्व है ... –

+0

@ ब्रैडली स्मिथ: जो मैं समझता हूं, हां। लेकिन यह अलग हो सकता है, अगर आप अपनी मॉनीटर को एक अलग डीपीआई सेटिंग में चलाते हैं। मेरा सुझाव है कि आप इसके साथ खेलें, जवाब पाने में नाकाम रहे, एमएस से खुद से पूछें। – leppie

12

इन छोटी-मोटी बातें पर विचार करें:

  • एक इंच, हालांकि इन बातों को इतिहास में निर्णय लिया जाता है का एक परिणाम के रूप में, 72 अंक हैं।
  • आम तौर पर लोग लॉजिकल 9 6 डॉट प्रति इंच के संकल्प पर विंडोज चला रहे हैं।
  • हम्म, ठीक है, हमारे पास अंक, इंच और बिंदु हैं - तीन इकाइयां यहां से निपटने के लिए हैं।
  • जीडीआई जानना चाहता है कि कितने डॉट आकर्षित करने के लिए, और उपयोगकर्ता अंक का चयन कर रहा है।
  • अंत में, 72 अंक प्रति इंच/96 डॉट प्रति इंच = 0.75 अंक प्रति डॉट का अनुपात।

वह 0.75 दुर्भाग्यपूर्ण है! इसका मतलब यह है कि यदि हम उपयोगकर्ता को सीधे अंक चुनने की अनुमति देते हैं, तो आदर्श प्रतिपादन लॉजिकल डॉट के केवल एक भाग पर आकर्षित होगा। यह अच्छा होगा अगर हम पूरे प्रतिपादन को निकटतम पूरे तार्किक बिंदु पर ऊपर या नीचे स्नैप कर सकें।

तैयार? ये रहा!


  • 11:
    • 11 अंक प्रति इंच/72 अंक = 0.153 इंच * प्रति इंच 96 डॉट्स = 14.667 डॉट्स, Barf!
    • चलो 15 डॉट्स,
    • तो फिर 15 डॉट्स/9 6 डॉट प्रति इंच * 72 अंक प्रति इंच = 11.25 अंक।

  • 12:
    • 12/72 * 96 = 16 डॉट्स।
    • मैं इसके साथ रह सकता हूं, कोई फज नहीं पड़ता।

  • 16:
    • 16/72 * 96 = 21,3333, Barf!
    • चलिए 21 डॉट्स/9 6 * 72 = 15.75 तक चले जाते हैं, जो बहुत अच्छे हैं।

आप अंदाजा हो।

याद रखें कि ये नंबर दिए गए हैं आम संवाद बॉक्स में अभिन्न आकार उपयोगकर्ता अपने तार्किक संकल्प (96 डीपीआई, 120 डीपीआई, आदि)