gpt4 book ai didi

php - Imagettftext - 不正确的行距

转载 作者:行者123 更新时间:2023-12-04 18:17:12 26 4
gpt4 key购买 nike

我对 PHP 函数 imagettftext 有疑问。我有从带有文本信息的数据库生成卡片图像的代码。对于一些卡片,我有问题 - 单词是相互重叠的( like here )。

我的代码看起来像这样(字体大小根据文本的长度而变化)

            $length = strlen($cardInfo->description);
if ($length < 15) {
$divide = 15;
$fontSize = 16;
$lineHeight = 25;
$startPos = 220;
} else if ($length < 70) {
$divide = 25;
$fontSize = 12;
$lineHeight = 18;
$startPos = 210;
} else if ($length < 110) {
$divide = 28;
$fontSize = 10;
$lineHeight = 14;
$startPos = 210;
} else {
$divide = 38;
$fontSize = 8;
$lineHeight = 13;
$startPos = 210;
}
$description = wordwrap($cardInfo->description, $divide, ">>>");
$lines = explode(">>>", $description);
$count = 0;
foreach ($lines as $line) {
$position = $count * $lineHeight;
$count++;
imagettftext($image, $fontSize, 0, 28, ($startPos + $position), $black, $font, $line);
}

数据库中的文本如下所示:
Oblehací stroj

Imunita vůči střelám /Tato jednotka je imunní vůči střeleckým zraněním/

其他问题是换行: here .我不知道为什么“jídlo”这个词在下一行。

感谢您的任何回答!

最佳答案

很久以前,我写了一个相当复杂的类来归档一个类似的任务。

我不再有此代码,但步骤相当简单。

第一:不要依赖计算,php依赖稀有字体。

php 的自动换行功能在这里毫无意义,因为您处理的是 php 未知的字符集宽度(例如跟踪)。 Wordwrap 假定所有字符都具有相同的字符宽度。

因此,您必须使用 imagettfbbox 构建自己的自动换行功能。然后,您必须确定小写“x”字母和大写“X”字母的大小。这些字母是计算您自己的行高/行距的标准。我还建议您手动分隔单词,因为 PHP 并不总是能正确识别空白宽度。

希望这可以帮助你...

关于php - Imagettftext - 不正确的行距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429701/

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