2010-12-10 5 views
10

एक बार फिर मुझे आपकी मदद चाहिए।सी # - सिस्टम में इसे इंस्टॉल किए बिना कस्टम फ़ॉन्ट का उपयोग कैसे करें

मैं सी # पर एक छोटा सा एप्लीकेशन विकसित कर रहा हूं जो एक कस्टम फ़ॉन्ट का उपयोग करता है। समस्या यह है कि फ़ॉन्ट पहले सिस्टम पर स्थापित होना चाहिए। यदि सिस्टम सिस्टम में मौजूद नहीं है तो यह टाइम्स न्यू रोमन का उपयोग करता है। क्या एप्लिकेशन में फ़ॉन्ट फ़ाइल एम्बेड करने का कोई तरीका है इसलिए इसे हर सिस्टम में स्थापित करने की आवश्यकता नहीं है?

धन्यवाद।

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/2288246, http://stackoverflow.com/questions/3007805/embedding-deploying-custom-font-in-net-app, http : //stackoverflow.com/questions/556147/how-to-quickly-and-easily-embed-fonts-in-winforms-app-in-c –

उत्तर

9

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

PrivateFontCollection _fonts = new PrivateFontCollection(); 

byte[] fontData = Resources.CustomFontResourceName; 

IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length); 

Marshal.Copy(fontData, 0, fontPtr, fontData.Length); 

_fonts.AddMemoryFont(fontPtr, fontData.Length); 

Marshal.FreeCoTaskMem(fontPtr); 

Font customFont = new Font(_fonts.Families[0], 6.0F); 
+0

आलेख जो स्वीकार्य उत्तर लिंक बताता है कि यह एक विकल्प है, दोनों VB.NET प्रोग्रामर और उन लोगों के लिए जो सी # में 'असुरक्षित' का उपयोग नहीं करना चाहते हैं। –

+0

@ कोडी फिर, मुझे लगता है, यहां एक उदाहरण है :)। – Shibumi

+0

जब मैं अपनी विकास मशीन पर फोंट लोड करने के लिए इस दृष्टिकोण का उपयोग करता हूं तो यह केवल .ttf फोंट के साथ काम करता है और नहीं .otf फोंट के साथ। जब मैं अपनी वेबसाइट क्लाउड (विंडोज़ एज़ूर) पर तैनात करता हूं तो यह केवल .otf फोंट के साथ काम करता है और नहीं .ttf फोंट के साथ। यह कैसे हो सकता है? – fireydude

1

ध्यान दें कि अगर आप AddMemoryFont उपयोग करते हैं, तो आप इस API कॉल "AddFontMemResourceEx" या यह अभ्यस्त काम का उपयोग करने की आवश्यकता होगी।

PrivateFontCollection giving me symbols

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