2016-08-25 50 views
6

İki yüklü yazı biçimleri (Helvetica-Narrow ve Helvetica-Bold) kullanan basit bir test SVG var: Ben ImageMagick kullanarak bir PDF dosyasına bu dönüştürürsenizGüvenilir font seçimi ile SVG'yi PDF'ye ImageMagick ile dönüştürme?

<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 S16 x86_64 CentOS Linux 7 üzerinde çalışan (Çekirdek)), sonuçta yüklü yazı tiplerini kullanmaz.

Örneğin

:

$ convert -density 600 test.svg test.pdf 

Verim:

Bu belirtilen yazı tipi aileleri birini eşleşmiyor hangi Helvetica normal ağırlığını kullanarak ImageMagick varsayılan benziyor

default font applied

giriş SVG.

Ardından, giriş SVG'sinde belirtilen yazı tiplerinden birinin yolunu belirtmeyi deniyorum. Bu, convert -list font çalıştırıldığından belirlendiği gibi Helvetica-Bold yazı tipine giden yoldur.

$ 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

ilk <text> elemanı

doğru - bu Helvetica-Bold kullanır. İkinci <text> öğesi yanlış - aynı zamanda Helvetica-Bold kullanıyor, ancak gerçekten Helvetica-Narrow kullanıyor olmalıdır. Yine

, bu yaklaşım ile daha yakın alıyorum, bu yüzden giriş SVG kullanılan ikinci yazı biçimiyle yolunu eklemeyi deneyin:

$ 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 ikisi için Helvetica-Narrow yazı tipini kullanır Aynı sebepten dolayı yanlış olan elemanlar.

ImageMagick'i SVG girişindeki <text> öğelerinde belirtilen doğru yazı tiplerini kullanmaya ikna etmenin bir yolu var mı?

+0

Orijinal SVG makinenizde doğru bir şekilde görüntüleniyor mu? Yani. doğru yazı tipleri ile? –

+0

ImageMagick, bir all-trades dönüştürücüsüdür. Belirli bir formatta sorun varsa, beklenmedik olmaz. SVG'lerde uzmanlaşan birini denediniz mi? Örneğin Apache Batik? https://xmlgraphics.apache.org/batik/tools/rasterizer.html –

+0

SVG doğru. Diğer araçlara yönelik önerileri takdir etsem de, belirtildiği gibi problemi çözdüğüme dikkat etmeliyim, yani ImageMagick'in yüklü fontlarla doğru çalışmasını sağlamak için özellikle gerekli olan şey. (Diğer araçların tartışılması muhtemelen bu iş parçacığının en iyisi olacaktır.) –

cevap

2

diyor
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 ve Helvetica-Narrow için yazı tipi ailesi Helvetica ve 01'dir. Sırasıyla.Sen <text> gibi ek özellikleri kullanarak amaçlanan etkiyi (cesaret/darlık) elde edebilirsiniz: Bence doğrudan tür adı ( Helvetica-Bold, Helvetica-Narrow) kullanabilir olmadığını görmek için araştırdı

<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> 

, ama boşuna, bu Bu, ImageMagick'in convert aracıyla tanınan tek çözümdür. Umarım yardımcı olur.

0

yere ~/.magick/type.xml

Belirli bir yazı kullanmak ve istediğiniz herhangi bir isimle onu tanımak için zorlayabilirsiniz gibi yer ImageMagick yazı dosyasını düzenlemeyi deneyin. imagick_type_gen. Make ImageMagick recognize a font

Daha Imagemagick ile kullanmak için ek araç ile okuma: Burada

yapmaya çalışıyorsun ne yardımcı olmalıdır şey bir bağlantı ne convert -list font baktığımızda http://gothick.org.uk/2008/03/14/using-os-x-fonts-in-imagemagick/

0

Yazı tiplerinin nereye yerleştirildiğini açıklığa kavuşturmalısınız: SVG yüklemesinde, işletim sisteminde veya PDF'ye gömülü olarak. SVG, kendi sorunlarına neden olmayan kendi yazı tipi sistemine sahiptir. SVG, web yazı tiplerinin gerçekten kullanımdan önce yapıldı, bu yüzden SVG, taşınabilir olan kendi yazı tipi sistemini yaptı. Artık sadece SVG yazı tipleri için bir yazı tipi sisteminiz var ve muhtemelen PDF dosyasına dönmüyorlar.

Yapmanız gereken en iyi yol, @font-face { font-family: Helvetica; src: url('/var/www/fonts/Helvetica.ttf'); } gibi @font-face kuralını kullanmaktır. Başka bir görünüm için buna (https://graphicdesign.stackexchange.com/questions/5162/how-do-i-embed-google-web-fonts-into-an-svg/5167#5167) bakın.

Alternatif, yazı tiplerinden tamamen vazgeçmek ve SVG'nin istediğiniz yolu oluşturmasını sağlamaktır. Yani, oluşturulmuş yazı tipi olan bir grafikle bir PDF oluşturun. Bu, Inkscape'i, PDF'den SVG'ye, diğer gezi yönünü yapmak için kullanırken görünür. (bkz. Convert PDF to clean SVG? veya https://www.magebay.com/forum/forums/topic/pdf-svg-doesnt-embed-the-fonts/).

Üzgünüz, bu konu hakkında daha fazla bilgi sahibi olmadan 'bu tek satırın eklenmesi' anlamına gelmez, ancak bu yardımcı olacaktır.

İlgili konular