2016-08-25 4 views
6

मैं एक साधारण परीक्षण एसवीजी दो इंस्टॉल किया टाइपफेस (Helvetica-Narrow और Helvetica-Bold) का उपयोग करता है: यदि मैं ImageMagick का उपयोग कर एक पीडीएफ फाइल में कनवर्ट करविश्वसनीय फ़ॉन्ट चयन के साथ ImageMagick के साथ पीडीएफ में एसवीजी कनवर्ट करना?

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="50"> 
    <text x="0" y="24" fill="blue" font-family="Helvetica-Bold" font-size="24px">Bold</text> 
    <text x="0" y="48" fill="blue" font-family="Helvetica-Narrow" font-size="24px">Narrow</text> 
</svg> 

(ImageMagick 7.0.2-0 प्रश्न 16 x86_64 CentOS लिनक्स 7 पर चल रहा है (कोर)), तो परिणाम स्थापित फोंट का उपयोग नहीं करता है।

उदाहरण के लिए:

$ convert -density 600 test.svg test.pdf 

पैदावार:

default font applied

यह Helvetica के सामान्य वजन का उपयोग, जो फ़ॉन्ट परिवारों में निर्दिष्ट में से किसी से मेल नहीं खाता के लिए ImageMagick चूक की तरह दिखता है इनपुट एसवीजी।

अगला, मैं इनपुट एसवीजी में निर्दिष्ट टाइपफेस में से किसी एक को पथ निर्दिष्ट करने का प्रयास करता हूं। convert -list font चलाने से निर्धारित यह Helvetica-Bold टाइपफ़ेस का पथ है।

$ convert -density 600 -font /net/module/sw/ghostscript-fonts/5.50-32/n019004l.pfb test-helvetica-mix.svg test-helvetica-mix-bold.pdf 

bold font specified

पहले <text> तत्व सही है - यह Helvetica-Bold उपयोग करता है। दूसरा <text> तत्व गलत है - यह Helvetica-Bold का भी उपयोग करता है, लेकिन वास्तव में Helvetica-Narrow का उपयोग करना चाहिए।

फिर भी, मैं इस दृष्टिकोण के साथ करीब हो रही है, इसलिए मैं दूसरे इनपुट एसवीजी में इस्तेमाल किया टाइपफेस के लिए पथ जोड़ने का प्रयास करें:

$ convert -density 600 -font /net/module/sw/ghostscript-fonts/5.50-32/n019004l.pfb -font /net/module/sw/ghostscript-fonts/5.50-32/n019043l.pfb test-helvetica-mix.svg test-helvetica-mix-both.pdf 

both font paths added

ImageMagick दोनों के लिए Helvetica-Narrow टाइपफेस का उपयोग करता है तत्व, जो एक ही कारण के लिए गलत है।

इनपुट एसवीजी में <text> तत्वों में निर्दिष्ट सही टाइपफेस का उपयोग करने के लिए ImageMagick को मनाने का कोई तरीका है?

+0

क्या मूल एसवीजी आपकी मशीन पर सही ढंग से प्रस्तुत करता है? अर्थात। सही फोंट के साथ? –

+0

ImageMagick एक जैक-ऑफ-ऑल-ट्रेड कनवर्टर है। यदि यह एक विशेष प्रारूप के साथ समस्या है तो यह अप्रत्याशित नहीं होगा। क्या आपने एसवीजी में विशेषज्ञता रखने की कोशिश की है? उदाहरण के लिए अपाचे बटिक? https://xmlgraphics.apache.org/batik/tools/rasterizer.html –

+0

एसवीजी सही है। हालांकि मैं अन्य उपकरणों के लिए सुझावों की सराहना करता हूं, मुझे ध्यान रखना चाहिए कि मैं निर्दिष्ट समस्या के समाधान की तलाश कर रहा हूं, यानि, स्थापित मैकमैक्स को स्थापित टाइपफेस के साथ सही तरीके से काम करने के लिए विशेष रूप से क्या आवश्यक है। (अन्य उपकरणों की चर्चा शायद इस धागे के बाहर सबसे अच्छी होगी।) –

उत्तर

2

कहते

Font: Helvetica-Bold 
    family: Helvetica 
    style: Normal 
    stretch: Normal 
    weight: 700 
    glyphs: /usr/share/fonts/type1/gsfonts/n019004l.pfb 
Font: Helvetica-Narrow 
    family: Helvetica Narrow 
    style: Normal 
    stretch: Condensed 
    weight: 400 
    glyphs: /usr/share/fonts/type1/gsfonts/n019043l.pfb 

Helvetica-Bold और Helvetica-Narrow के लिए फ़ॉन्ट परिवार Helvetica और 01 है क्रमशः।आप पर <text> की तरह अतिरिक्त गुण का उपयोग करके इच्छित प्रभाव (साहस/संकीर्णता) प्राप्त कर सकते हैं:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="50"> 
    <text x="0" y="24" fill="blue" font-family="Helvetica" font-size="24px" font-weight="700">Bold</text> 
    <text x="0" y="48" fill="blue" font-family="Helvetica Narrow" font-size="24px" font-stretch="Condensed">Narrow</text> 
</svg> 

मैं अगर हम सीधे प्रकार का नाम (Helvetica-Bold, Helvetica-Narrow) का उपयोग कर सकते देखने के लिए शोध किया है, लेकिन कोई लाभ नहीं हुआ इस, एकमात्र समाधान है जिसे मैं पा सकता हूं, जिसे ImageMagick के convert टूल द्वारा सम्मानित किया जाता है। आशा करता हूँ की ये काम करेगा।

0

संपादन ImageMagick फोंट कहीं ~/.magick/type.xml

आप एक विशिष्ट फ़ॉन्ट का उपयोग और कोई भी नाम से यह पहचान करने के लिए यह मजबूर कर सकते हैं की तरह स्थित फ़ाइल की कोशिश करो। imagick_type_gen। Make ImageMagick recognize a font

इसके अलावा ImageMagick के साथ उपयोग करने के लिए अतिरिक्त उपकरण के साथ पढ़ने:

यहाँ की मदद करनी चाहिए कि आप क्या करने की कोशिश कर रहे हैं कुछ के लिए एक लिंक है क्या convert -list font को देखते हुए http://gothick.org.uk/2008/03/14/using-os-x-fonts-in-imagemagick/

0

आपको यह स्पष्ट करने की आवश्यकता है कि फ़ॉन्ट कहां स्थापित है: एसवीजी स्थापना में, ओएस, या पीडीएफ में एम्बेडेड।

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

आपकी सबसे अच्छी शर्त @font-face नियम का उपयोग करना है, उदाहरण के लिए, @font-face { font-family: Helvetica; src: url('/var/www/fonts/Helvetica.ttf'); }। एक और दृश्य के लिए यह देखें (https://graphicdesign.stackexchange.com/questions/5162/how-do-i-embed-google-web-fonts-into-an-svg/5167#5167)।

वैकल्पिक रूप से फ़ॉन्ट्स को पूरी तरह से छोड़ना है और एसवीजी आपके इच्छित पथ को प्रस्तुत करना है। यही है, एक ग्राफिक के साथ एक पीडीएफ बनाएँ जो प्रस्तुत फ़ॉन्ट है। यह पीडीएफ से एसवीजी तक यात्रा की दूसरी दिशा बनाने के लिए इंकस्केप का उपयोग करते समय दिखाता है। (Convert PDF to clean SVG?, या https://www.magebay.com/forum/forums/topic/pdf-svg-doesnt-embed-the-fonts/ देखें)।

क्षमा करें यह करने के लिए नीचे उबाल नहीं करता ब्यौरे के बारे में एक बहुत अधिक जानने के बिना 'इस एक पंक्ति जोड़ें', लेकिन यह मदद करनी चाहिए।

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