2013-12-16 5 views
19

मैं सरल लोगो उत्पन्न करने के लिए Imagick का उपयोग कर रहा हूं, जो पृष्ठभूमि पर केवल टेक्स्ट हैं।क्या यह बताने का कोई तरीका है कि कोई फ़ॉन्ट इमेगिक में दिए गए चरित्र का समर्थन करता है या नहीं?

मैं आमतौर पर सभी फ़ॉन्ट्स के माध्यम से लूपिंग कर रहा हूं, प्रत्येक फ़ॉन्ट के लिए उपयोगकर्ता को अलग-अलग प्रस्तुतिकरणों (एक प्रति छवि प्रति छवि) के साथ प्रस्तुत करने के लिए प्रस्तुत करता हूं।

समस्या यह है कि कुछ फोंट ASCII वर्णों का समर्थन नहीं करते हैं (मुझे लगता है कि उन्हें केवल दी गई भाषा के लिए डिज़ाइन किया गया है)। और मुझे लगता है कि ASCII वर्णों का समर्थन करने वाले कुछ फ़ॉन्ट, गैर-ASCII वर्णों के साथ भी असफल हो जाएंगे।

वैसे भी, मैं इस तरह के चित्र के साथ अंत:

Imagick non-supported font characters Imagick non-supported font characters Imagick non-supported font characters

वहाँ Imagick में एक कार्यक्रम संबंधी रास्ता किसी दिए गए फ़ॉन्ट एक दिया स्ट्रिंग में सभी वर्णों का समर्थन करता है कि क्या यह बताने के लिए है ?

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

+0

कुछ गुगलिंग के बाद, यह संदिग्ध लगता है - ऐसा लगता है कि आपको सीधे फ़ॉन्ट फ़ाइल को पार्स करना होगा, जो तुच्छ नहीं है। –

+0

@ पेक्का 웃 मैं निश्चित रूप से ऐसा करने से बचूंगा ... हो सकता है कि इमेजिक की तुलना में टीटीएफ फोंट से पूछने के लिए अन्य पुस्तकालय हैं, उम्मीद है कि कोई इस पर कुछ प्रकाश डालेगा! – Benjamin

+0

शायद PHP में नहीं। * निक्स कमांड लाइन पर टूल्स हैं: [उबंटू पर फ़ॉन्ट * .ttf फ़ाइल से समर्थित यूनिकोड रेंज प्राप्त करें] (http://superuser.com/q/409317) लेकिन जाहिर है कि वे 100% विश्वसनीय –

उत्तर

2

मैं imagemagik का उपयोग कर एक तरह से पता नहीं है, लेकिन यहां से php-font-पार्सर पुस्तकालय इस्तेमाल कर सकते हैं:

https://github.com/Pomax/PHP-Font-Parser

विशेष रूप से, आप अपने आवश्यक में प्रत्येक अक्षर के लिए एक फ़ॉन्ट पार्स कर सकते हैं स्ट्रिंग और वापसी मान की जाँच करें:

$fonts = array("myfont.ttf"); 

    /** 
    * For this test, we'll print the header information for the 
    * loaded font, and try to find the letter "g". 
    */ 
    $letter = "g"; 
    $json = false; 
    while($json === false && count($fonts)>0) { 
      $font = new OTTTFont(array_pop($fonts)); 
      echo "font header data:\n" . $font->toString() . "\n"; 
      $data = $font->get_glyph($letter); 
      if($data!==false) { 
        $json = $data->toJSON(); }} 

    if($json===false) { die("the letter '$letter' could not be found!"); } 
    echo "glyph information for '$letter':\n" . $json; 

कोड से ऊपर फ़ॉन्ट पार्सर परियोजनाओं से आता है fonttest.php वर्ग:

https://github.com/Pomax/PHP-Font-Parser/blob/master/fonttest.php

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

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