gpt4 book ai didi

php - ImageMagick 和 imagick_type_gen 无法识别添加的字体

转载 作者:可可西里 更新时间:2023-11-01 01:00:01 26 4
gpt4 key购买 nike

好的,我正在运行 CentOS 服务器、PHP 5.4.440 和 ImageMagick 6.5.4,并且我正在尝试添加其他字体,例如 Lobster。这是我到目前为止所做的:

上传 Lobster.ttf 到/home/myusername/fonts/

从 SSH,运行“perl imagick_type_gen > fonts.xml”。这导致字体文件很大,但没有包含对 Lobster.otf 或 Lobster.ttf 的引用

相反,我生成了自己的 type.xml 并将其保存到/home/myusername/.magick/。这是标记:

<?xml version="1.0"?>
<typemap>
<type format="otf" name="Lobster" fullname="Lobster" family="Lobster" glyphs="/home/myusername/fonts/Lobster.otf" />
</typemap>

通过 SSH,我编辑了/user/lib64/ImageMagick-6.5.4/config/type.xml 并插入了引用自定义 type.xml 的节点:

<typemap>
<include file="type-ghostscript.xml" />
<include file="/home/myusername/.magick/type.xml" />
</typemap>

重启服务器。

此时,我可以使用这个列出字体:

$image = new Imagick();
$fonts = $image->queryfonts();
foreach($fonts as $font) {
echo $font . '<br />';
}

龙虾出现在列表中。但是,将 SVG 转换为 PNG 并没有使用 Lobster 字体。我在这里看到了与我的类似的其他问题,它们似乎有效。我需要做什么才能让系统识别添加的字体?

这是我用来渲染应该是使用 Lobster 作为字体的图像的代码:

//Setup SVG to be read by Imagick.
$SVG = '<?xml version="1.0" encoding="utf-8"?>';
$SVG .= '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';
$SVG .= '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="158px" height="92px" viewBox="0 0 158 92" enable-background="new 0 0 158 92" xml:space="preserve">';
$SVG .= '<text transform="matrix(1 0 0 1 32 58)" font-family="Lobster" font-style="normal" font-size="20px" font-weight="400">Lobster</text>';
$SVG .= '</svg>';

$image = new Imagick();

//Convert SVG to JPG
$image->readImageBlob($SVG);
$image->setImageFormat("jpeg");

//Save the thumbnail.
$save_path = 'lobster-test.jpg';
$image->writeImage($save_path);

echo '<img src="'.$save_path.'">';

我在这里完全不知所措。帮助!

最佳答案

此处讨论了完整的解决方案: http://www.multipole.org/discourse-server/viewtopic.php?t=25630

但这是简短的版本:

  1. 为您自定义上传的字体创建一个目录/usr/share/fonts/default - 我创建了一个名为“custom”的目录。
  2. 将要安装的字体复制到/usr/share/fonts/default/custom
  3. 运行命令 fc-cache -v/usr/share/fonts

在此之后,ImageMagick 将使用 SVG 中的字体。一个警告是您必须使用字体中嵌入的字体系列声明。例如,Lobster.otf 实际上列出了“Lobster 1.4”。

如果您已经安装了字体并使用了正确的字体系列名称,您将得到您的字体渲染!

关于php - ImageMagick 和 imagick_type_gen 无法识别添加的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com