这似乎是一个与口音有关的问题。这段代码已经完美地用于超过一百万张照片水印,但只要水印中有一个重点(在这种情况下,e急,é[是的,我已经仔细检查过那个角色是什么])它会吐出来错误。
我正在使用Myriad Pro ttf文件,我已经检查过它确实包含该字符。
这是一个已知问题吗?如果是这样,那么解决方法是什么?
$draw = new ImagickDraw();
$draw->setFont('MyriadPro-Regular.ttf');
$draw->annotation(100, 100, 'é');
$photo->drawImage($draw);
答案 0 :(得分:0)
(道歉,这还不是答案,但对评论框来说太长了)
这是一个已知问题吗?
不。
我唯一能想到的就是尝试使用非utf8字符,这是SVG渲染器不喜欢的。虽然它看起来像一个正常的急性重音e,并且你已经说过你已经检查了,请你通过显示这个功能的输出来仔细检查:
function showRawCharacters($result) {
$resultInHex = unpack('H*', $result);
$resultInHex = $resultInHex[1];
$resultSeparated = implode(', ', str_split($resultInHex, 2)); //byte safe
echo $resultSeparated;
}
对于你正在使用的字符串。
另外,请确认您在代码中的任何位置都没有使用setlocale。
为了记录,你的代码工作正常,所以我怀疑你的代码会出现问题。它更可能是环境中的东西,库版本或一般非显而易见的东西。
修改的 我强烈怀疑你的代码中的某些地方改变了语言环境,这是不安全的,这就是为什么我认为它应该是removed from PHP
请你能跑:
var_dump(setlocale(LC_ALL, "0"));
紧接->annotation
行之前,将结果添加到您的问题中。
答案 1 :(得分:0)
var rolePath = `image Over ${role.outX},${role.outY},${role.outW},${role.outH},"${role.rolePath}"`;
添加图片
gm(backimgPath).draw(rolePath)