2017-02-10 11 views
11

मैं जानना चाहता हूं कि एक विंडो में सार्वभौमिक अनुप्रयोग में Win2D का उपयोग करके किसी दिए गए फ़ॉन्ट (इसकी गुणों, जैसे आकार, वजन, शैली ...) की ऊंचाई की गणना कैसे करें।Win2D (लाइन स्पेसिंग) के साथ FontFamily की ऊंचाई की गणना कैसे करें?

मैं पहले एक CanvasTextLayout इस्तेमाल किया है, लेकिन यह काम करने के लिए, इस पंक्ति में की तरह एक पाठ की आवश्यकता है:

var ctl = new CanvasTextLayout(session, "Some text", new CanvasTextFormat(), constraintWidth, constraintHeight);

मेरे मामले में, मेरे पास कोई पाठ नहीं होगा क्योंकि जो मैं खोज रहा हूं वह ऊंचाई है जिसमें किसी दिए गए फ़ॉन्ट (इसकी शैली, आकार, वजन ... के साथ) के सभी ग्लिफ फिट हैं।

संपादित करें: मैंने CanvasFontFace कक्षा के साथ भी प्रयास किया है, लेकिन ऐसा लगता है कि इसमें कोई सार्वजनिक निर्माता नहीं है।

+0

क्या आप GetGlyphRunBounds https://microsoft.github.io/Win2D/html/Overload_Microsoft_Graphics_Canvas_Text_CanvasFontFace_GetGlyphRunBounds.htm ढूंढ रहे हैं? अन्यथा CanvasTexFormat में एक फ़ॉन्ट आकार संपत्ति है, सामान्य रूप से फ़ॉन्ट परिवारों के साथ –

+0

मुझे लगता है कि GetGlyphRunBounds मुझे जो चाहिए वह नहीं है, क्योंकि मुझे कम से कम एक ग्लिफ़ निर्दिष्ट करना होगा। यह इस सवाल के बराबर सटीक है, लेकिन Win2D में। http://stackoverflow.com/questions/4509613/how-to-calculate-font-height-in-wpf। कृपया उत्तर देखें। डब्ल्यूपीएफ में इसे "लाइनस्पेसिंग" कहते हैं। – SuperJMN

+0

मुझे नहीं लगता कि आप डिफ़ॉल्ट 'लाइनस्पेसिंग' जैसे WPF में प्राप्त कर सकते हैं। आपको पहले टेक्स्ट खींचना होगा। यह Win2D की एक सीमा है। –

उत्तर

5

लेकिन आप पहले से ही सही रास्ते पर हैं। तुम देखो। जी। पाठ के रूप में fgf ऊपरी क्षेत्र को आवंटित करता है, g निचला वाला, इसलिए आपको कैनवास के वर्तमान फ़ॉन्ट में टेक्स्ट की कुल ऊंचाई मिलती है।

+0

यह सब के बाद एक हैक है;) – SuperJMN

+0

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

+0

ओह, और टाइपोग्राफी के अर्थ में 'लाइनस्पेसिंग' में बहु-पंक्ति टेक्स्ट को व्यवस्थित रूप से अच्छी तरह से सेट करने के लिए अतिरिक्त ऊंचाई इकाइयां शामिल हो सकती हैं। मुझे यकीन नहीं है कि क्या मामले हैं, जहां डब्ल्यूपीएफ में 'लाइनस्पेसिंग' या इसी तरह से व्यवहार करता है। यदि आप वास्तव में किसी भी अतिरिक्त अतिरिक्त स्थान के बिना वास्तविक टेक्स्ट ऊंचाई चाहते हैं, तो यह समाधान परिभाषा के अनुसार सही होना चाहिए, क्योंकि यह वर्तमान फ़ॉन्ट का उत्पादन करने वाले ग्लिफ के मीट्रिक पर केंद्रित होता है। –

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