2010-06-01 9 views
16

मैं WP12 में टेक्स्टब्लॉक पर फ़ॉन्टस्ट्रेच संपत्ति सेट करने का प्रयास कर रहा हूं लेकिन ऐसा लगता है कि यह काम नहीं करता है। मैंने विस्तृत, कंडेन्स्ड इत्यादि की कोशिश की लेकिन टेक्स्ट उपस्थिति नहीं बदली।क्यों FontStretch WPF में काम नहीं करता है?

मैं फ्रेमवर्क 4.0 के साथ विंडोज एक्सपी पर काम कर रहा हूं और वर्डाना और एरियल दोनों के साथ परीक्षण किया।

क्या यह केवल विंडोज 7 पर या केवल कुछ विशिष्ट फोंट के साथ काम करता है?

संपादित: यह सब फोंट के साथ काम नहीं करता है, वहाँ फोंट इस सुविधा का समर्थन की एक सूची है? या क्या इसका समर्थन करने के लिए वर्डाना/एरियल जैसे फ़ॉन्ट को संशोधित करना संभव है?

उत्तर

20

है कि यह समर्थन नहीं करता है एक फ़ॉन्ट में FontStretch करने के लिए एक समान प्रभाव पाने के लिए आपको TextBlock पर एक LayoutTransform उपयोग कर सकते हैं:

<Application.Resources> 
    <ScaleTransform x:Key="FontStretchCondensed" ScaleX="0.8" /> 
    <ScaleTransform x:Key="FontStretchExpanded" ScaleX="1.2" /> 
</Application.Resources> 

... 

<TextBlock Text="This is my text" 
      LayoutTransform="{StaticResource FontStretchCondensed}" /> 

यह भी एक शैली में सेट किया जा सकता है अगर आप करना चाहते हैं TextBlocks में सभी पाठ सघन दिखाई देते हैं:

<Style TargetType="TextBlock"> 
    <Style.Setters> 
    <Setter Property="LayoutTransform" Value="{StaticResource FontStretchCondensed}" /> 
    </Style.Setters> 
</Style> 
2

मेरा मानना ​​है कि FontStretch सभी फ़ॉन्ट्स के लिए काम नहीं करता है।

1

यह केवल ओपनटाइप फोंट के लिए काम करता है। अधिक जानकारी के लिए:

http://en.wikipedia.org/wiki/OpenType

http://www.adobe.com/type/opentype/

http://www.microsoft.com/typography/WhatIsOpenType.mspx

+0

ध्यान दें कि सभी ओपन टाइप फ़ॉन्ट्स इसका समर्थन नहीं करते हैं। जैसे कैलिब्ररी नहीं करता है। –

5

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

यह देखने के लिए कि कौन से फोंट FontStretch का समर्थन करते हैं, आपको उन फ़ॉन्ट्स को देखना होगा जिनके लिए एक अलग फ़ॉन्ट फ़ाइल है। संघनित या विस्तारित। और फिर केवल सही टाइप किया गया TrueType/OpenType फोंट काम करेगा। कुछ फ़ॉन्ट विक्रेता नियमित रूप से अपने फ़ॉन्ट्स के विस्तारित या संघनित रूपों को नियमित रूप से लिंक नहीं करते हैं, इसलिए डब्ल्यूपीएफ को यह नहीं पता कि ये फ़ॉन्ट वेरिएंट संबंधित हैं।

3

कुछ पाठ (TextBlock.Measure) को मापने के द्वारा, मुझे लगता है कि एरियल संकीर्ण × 0.82 एरियल की चौड़ाई है।

तो textBlock.LayoutTransform = new System.Windows.Media.ScaleTransform(0.82, 1.0); जब एरियल पर लागू होता है तो एरियल संकीर्ण अनुमान लगा सकता है।

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