Mam prosty test, który wykorzystuje dwa SVG zainstalowanych czcionek (Helvetica-Narrow
i Helvetica-Bold
):Konwersja SVG na PDF za pomocą ImageMagick przy użyciu niezawodnego doboru czcionek?
<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>
Gdybym przekonwertować to do pliku PDF przy użyciu ImageMagick (ImageMagick 7.0.2-0 Q16 x86_64 działa na CentOS Linux 7 (Core)), a następnie wynik nie używa zainstalowanych czcionek.
Na przykład:
$ convert -density 600 test.svg test.pdf
Plony:
Wygląda domyślnych ImageMagick do korzystania z normalnej wadze Helvetica
, który nie pasuje do żadnej z rodzin czcionek określonych w wprowadź SVG.
Następnie próbuję określić ścieżkę do jednej z krojów pisma określonych w wejściowym SVG. Jest to ścieżka do kroju czcionki Helvetica-Bold
, określona na podstawie uruchomienia convert -list font
.
$ convert -density 600 -font /net/module/sw/ghostscript-fonts/5.50-32/n019004l.pfb test-helvetica-mix.svg test-helvetica-mix-bold.pdf
Pierwszy <text>
elementem jest poprawny - używa Helvetica-Bold
. Drugi element <text>
jest niepoprawny - używa także Helvetica-Bold
, ale naprawdę powinien używać Helvetica-Narrow
.
Mimo to, jestem coraz bliżej z tym podejściem, więc spróbuj dodać ścieżkę do drugiego czcionki stosowanej w SVG wejściowych:
$ 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
ImageMagick używa Helvetica-Narrow
krój zarówno elementy, które są nieprawidłowe z tego samego powodu.
Czy istnieje sposób przekonania ImageMagick do użycia poprawnych krojów pisma określonych w elementach <text>
w wejściowym SVG?
Czy oryginalny SVG renderuje się poprawnie na twoim komputerze? To znaczy. z poprawnymi czcionkami? –
ImageMagick to konwerter typu "jack-of-all-teses". Nie byłoby nieoczekiwane, gdyby miało problemy z jednym konkretnym formatem. Czy próbowałeś takiego, który specjalizuje się w SVG? Na przykład Apache Batik? https://xmlgraphics.apache.org/batik/tools/rasterizer.html –
SVG jest poprawny. Chociaż doceniam sugestie dotyczące innych narzędzi, powinienem zauważyć, że szukam rozwiązania określonego problemu, tj. Tego, co jest szczególnie wymagane, aby ImageMagick działał poprawnie z zainstalowanymi krojami pisma. (Dyskusja o innych narzędziach prawdopodobnie byłaby najlepsza poza tym wątkiem). –