2011-09-22 11 views
5

जब एक एक्सपीएस फ़ाइल बनाई है, यह सबसेट और ODTTF फ़ॉन्ट फ़ाइलों के रूप में मूल दस्तावेज के फोंट obfuscates, और उन्हें एक्सपीएस फ़ाइल में बंडल (जो सिर्फ एक ज़िप फ़ाइल है, ताकि वे आसानी निकाले जाते हैं।)क्या मेरे डब्ल्यूपीएफ ऐप में ओडीटीटीएफ फ़ॉन्ट फ़ाइल का उपयोग करने का कोई तरीका है?

मैं इन ओडीटीटीएफ फाइलों में से एक निकाला है, और इसे मेरे डब्ल्यूपीएफ ऐप में संसाधन के रूप में शामिल किया है।

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

क्या ऐसा करने का कोई तरीका है? मुझे कुछ Google खोजों में सबूत मिले हैं कि लोग ऐसा करने के लिए प्रबंधन कर रहे हैं!

उत्तर

9

ओडीटीटीएफ फाइलें obfuscated हैं। उन्हें टीटीएफ के रूप में उपयोग करने के लिए आपको उन्हें अव्यवस्थित करना होगा। आप इस कोड का उपयोग कर सकते हैं:

void DeobfuscateFont(XpsFont font, string outname) 
{ 
    using (Stream stm = font.GetStream()) 
    { 
     using (FileStream fs = new FileStream(outname, FileMode.Create)) 
     { 
      byte[] dta = new byte[stm.Length]; 
      stm.Read(dta, 0, dta.Length); 
      if (font.IsObfuscated) 
      { 
       string guid = new Guid(font.Uri.GetFileName().Split('.')[0]).ToString("N"); 
       byte[] guidBytes = new byte[16]; 
       for (int i = 0; i < guidBytes.Length; i++) 
        guidBytes[i] = Convert.ToByte(guid.Substring(i * 2, 2), 16); 

       for (int i = 0; i < 32; i++) 
       { 
        int gi = guidBytes.Length - (i % guidBytes.Length) - 1; 
        dta[i] ^= guidBytes[gi]; 
       } 
      } 
      fs.Write(dta, 0, dta.Length); 
     } 
    } 
} 

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

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

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