2009-03-05 17 views
6

मैं एक भ्रष्ट ट्रू टाइप फॉन्ट के साथ काम कर वर्तमान में कर रहा हूँ। मेरे पास उपलब्ध कार्यक्रम मुझे बताओ वहाँ maxp तालिका के साथ एक समस्या है - maxContours सदस्य है कि बहुत बड़ी है एक मूल्य है। क्या maxContours मान बहुत अधिक या बहुत कम है (हाँ यह भी एक समस्या हो सकती है) का पता लगाने के लिए एक निश्चित अग्नि तरीका है? (फ़ॉन्ट्स प्रोग्राम हैं, इसलिए फ़ॉन्ट फ़ाइल का पता लगाने का एक तरीका है उन्हें निष्पादित करना अच्छा है, लेकिन यह मेरे लिए स्वीकार्य समाधान नहीं है।)भ्रष्ट ट्रू टाइप फ़ॉन्ट जांच

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

मैं फ़ॉन्ट पुनर्निर्माण करने का विकल्प नहीं है। मैं एक उपभोक्ता हूं - मुझे यह पता लगाने की ज़रूरत है कि आने वाला फ़ॉन्ट भ्रष्ट है या नहीं और यदि इसे यथासंभव छोटे से काम के साथ जमानत मिलती है।

मामले में यह मदद करता है - मैं Windows XP/Vista पर दोनों 32 & 64 बिट और उनके सर्वर संस्करणों रहा हूँ!

उत्तर

0

क्या मंच आप उपयोग कर रहे हैं? मैं अजगर के लिए FontTools लाइब्रेरी का उपयोग कर ट्रू टाइप फ़ाइलों को हैक करने के लिए काफी सुखद कर लिया है:

font= fontTools.ttLib.TTFont("suspect.ttf") 
font['maxp'].maxContours 

ईटीए फिर क्यू संपादित करें: तो सवाल यह है कि सिर्फ "maxContours किस मान बहुत कम/बहुत अधिक हैं"? जहां तक ​​मुझे पता है कि दस्तावेजीकृत सीमा नहीं है, लेकिन मुझे पता है कि अगर ग्लिफ में राज्यों की तुलना में अधिक समोच्च होते हैं तो अधिकतम कंटूर में 'कुछ जोड़ें' के लिए यह काफी आम है।

(क्या है परेशानी फ़ॉन्ट में maxContours, और कैसे यह आकृति वास्तव में ग्लिफ़ में इस्तेमाल की संख्या से संबंधित? करता है) बस के पुनर्निर्माण

+0

धन्यवाद!लेकिन नहीं, मुझे एक पार्सर की आवश्यकता नहीं है। स्पष्टता जोड़ने के लिए मैं अपना प्रश्न संपादित करूंगा। – dirkgently

2

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

+0

मैं इनपुट का उपभोग कर रहा हूं और मुझे एप को जमानत देने की आवश्यकता है - इसलिए यह काम नहीं करता है। मैं इसे प्रश्न में जोड़ दूंगा :) – dirkgently

+0

विचार के लिए धन्यवाद, आपने [एक संबंधित समस्या] हल की है (https://stackoverflow.com/questions/44622656/) जो मैं कर रहा था। – Pikamander2

3

क्या यह पता लगाने के लिए एक निश्चित अग्नि तरीका है कि अधिकतम कंटोरस मान बहुत अधिक या बहुत कम होता है (हाँ यह भी एक समस्या हो सकती है)?

हां। यदि आपने संकेत दिया है कि आपने ट्रू टाइप/ओपन टाइप टाइपिंग लाइब्रेरी पहले ही बनाई है/तो है, तो यह विशेष मान मान्य करने के लिए काफी आसान है। आपको प्रत्येक ग्लिफ ('glyf' table से, 'लोका' तालिका का उपयोग इंडेक्स के रूप में उपयोग करने की आवश्यकता होगी), प्रत्येक ग्लाइफ से एक-एक करके समोच्चों की संख्या प्राप्त करें, और फ़ॉन्ट-वाइड अधिकतम की तुलना करें 'maxp' में संग्रहीत।

ध्यान दें कि 'maxp' में कुछ अन्य मूल्यों नहीं परीक्षण करने के लिए इस सरल कर रहे हैं; उदाहरण के लिए, maxZones, maxTwilightPoints, maxStorage, maxFunctionDefs, maxInstructionDefs, maxStackElements, maxSizeOfInructions सभी को अतिरिक्त तालिकाओं के पार्सिंग की आवश्यकता होती है और उनमें से कुछ के लिए, ट्रू टाइप स्केलर और दुभाषिया तक पहुंच होती है।

एक छोटी सी पृष्ठभूमि: स्मृति अधिकतम आवंटन में सहायता के रूप में 'maxp' (अधिकतम प्रोफ़ाइल) तालिका संभावित रूप से उपयोगी फ़ॉन्ट-व्यापी maximums का शॉर्टकट/सारांश होना था। तो आम तौर पर बोलते हुए, यदि 'maxp' में कोई मान वास्तविक फ़ॉन्ट मान से अधिक है, तो सबसे बुरा यह होगा कि आप बहुत अधिक स्मृति आवंटित करते हैं ... यानी, यदि आप ऐसे मंच पर हैं जो वास्तव में सभी का उपयोग करता है उस उद्देश्य के लिए 'maxp' मान।

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