ImageMagick конвертирует SVG в PNG с неправильными шрифтами

Я получаю квадраты вместо текста, введенного в SVG:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="200px" height="200px" version="1.1"viewBox="0 0 200 200" xmlns:xlink="http://www.w3.org/1999/xlink">

<text font-size="40px" x="0" y="50" font-family="Arial" >
123456789 ABCDEFGH
</text>

</svg>

Тогда я согласен с PNG на PHP с этим кодом:

<?php
header('Content-Type: image/png');
$output = shell_exec("convert -size 280x280 test.svg png:- ");
echo  $output;
?>

и я получаю эти квадраты вместо текста, который я ввел:

введите описание изображения здесь

Любые идеи о том, как контролировать эти шрифты?

Я нашел ссылку, которая показывает отличный контроль над шрифтами, но я не мог
понять точно, как они это сделали
http://www.rubblewebs.co.uk/imagemagick/server/fonts.php

0

Решение

Во-первых, проверьте, какая версия ImageMagick у вас установлена, и обновите ее, если она старая — в наши дни мир быстро движется!

identify -version
Version: ImageMagick 6.9.1-10 Q16 x86_64 2015-09-04 http://www.imagemagick.org

Во-вторых, рассмотрите возможность использования rsvg делегат — вы можете перечислить делегатов следующим образом:

identify -list delegate | grep svg
cdr =>          "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o"cgm =>          "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o"dot =>          "dot" -Tsvg "%i" -o "%o"dxf =>          "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o"fig =>          "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o"svg =>          "rsvg-convert" -o "%o" "%i"

В-третьих, проверьте, какие шрифты вы установили, например:

identify -list font

Font: Arial
family: Arial
style: Undefined
stretch: Undefined
weight: 0
glyphs: /Library/Fonts/Microsoft/Arial.ttf
Font: ArialB
family: Arial
style: Undefined
stretch: Undefined
weight: 0
glyphs: /Library/Fonts/Microsoft/Arial Bold.ttf

Наконец, если вы запустите свою команду в моей системе, вы получите это — я добавил черную рамку, чтобы вы могли видеть экстенты.

введите описание изображения здесь

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]