Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP编写具有多种字体的文本_Php_Laravel 5_Intervention - Fatal编程技术网

用PHP编写具有多种字体的文本

用PHP编写具有多种字体的文本,php,laravel-5,intervention,Php,Laravel 5,Intervention,我目前正在使用类在图像上编写文本 使用text()方法很容易进行书写: $img->text('The quick brown fox jumps over the lazy dog.', 120, 100); 但我的问题是,我希望一个单词的每个字符都有不同的字体。例如,假设单词test,每个字符必须使用不同的字体。这是不容易做到的,因为我找不到下一个字符的起始位置,例如在单词test中,当我写t时,然后当我想调用text()方法来写e时,我不知道应该在哪里设置位置,以便字符e紧跟在t

我目前正在使用类在图像上编写文本

使用
text()
方法很容易进行书写:

$img->text('The quick brown fox jumps over the lazy dog.', 120, 100);

但我的问题是,我希望一个单词的每个字符都有不同的字体。例如,假设单词
test
,每个字符必须使用不同的字体。这是不容易做到的,因为我找不到下一个字符的起始位置,例如在单词
test
中,当我写
t
时,然后当我想调用
text()
方法来写
e
时,我不知道应该在哪里设置位置,以便字符
e
紧跟在
t
之后


如何获取最后一个字符的
位置
,以便在最后一个字符结束的地方开始书写下一个字符?或者还有其他方法可以实现这一点吗?

这是我用来获取字符串宽度的方法。
我使用imagettftext(),因此它可能不适合您。但此代码有效。
所以,如果你必须在无代码和有效代码之间做出选择

$type_space = imagettfbbox($size, 0, $font, $text); // 0 = angle
$text_width = abs($type_space[4] - $type_space[6]);
imagettfbbox返回一个值数组。

Imagettfbbox()返回一个数组,其中包含8个元素,表示构成文本边界框的四个点:
0左下角,X位置
1左下角,Y位置
2右下角,X位置
3右下角,Y位置
4右上角,X位置
5右上角,Y位置
6左上角,X位置
7左上角,Y位置


代码取右上角x-左上角x,表示宽度

我在我的网页上使用了一些方法,但我不记得它是什么。我也不确定它是否适合你。但是我现在要睡觉了,如果你还没有解决的话,我可以明天再看。只要@me,这样我就不会忘记这条线。@Andreas@you:)哈哈!还在床上。但是当我从床上摔下来的时候,我会看着它。