17站长网 网站首页 编程开发 PHP编程 查看内容

PHP函数Imagettftext(),用于写入带有表情符号的文本的处理方法

2023-1-19 16:40| 查看: 880 |来源: 互联网

我正在使用Imagettftext函数在图像上写入文本,但我的文本包含表情符号,它将表情符号替换为方框以下是mycode:$black=imagecolorallocate($main_img,0x00,0x00, ...

我正在使用Imagettftext函数在图像上写入文本,但我的文本包含表情符号,它将表情符号替换为方框

以下是mycode:

$black = imagecolorallocate ( $main_img, 0x00, 0x00, 0x00 );
$font_path = "Arial.ttf";
imagettftext ( $main_img, 14, 0, 73, 685, $black, $font_path, $text );

文本示例:

test testt😘 Hello 👋💐 Those 👏  Mega x 👊❤️  Graphic 💋

我已尝试将字体更改为"Arial Unicode",但未解决问题。

如何解决此问题?

首先,我们需要了解emoji是如何实现的:

Apple PNG图片(SBIX表)

Apple使用TrueType/OpenType规范的一个专有的、未发布的扩展来实现它,以将PNG图像添加到字体中。然后,这些PNG图像显示在连续文本中。谷歌也实现了类似的东西,但它与苹果的解决方案不兼容。

Mozilla和Adobe的SVG(SVG表)。

这两家网络巨头为了最雄心勃勃的格式而走到了一起:OpenType中的SVG。我们不是将Unicode字符映射到字形,而是将其映射到SVG图像。这为我们带来了SVG的所有可爱的额外功能,包括渐变、嵌入的位图图像甚至动画。从版本26开始,Firefox就已经支持它了!

Microsoft COLR/CPAL

默认情况下,新的Segoe UI Emoji字体的行为与常规TrueType/OpenType字体类似。它有Unicode编码的、未上色的"基本字形"。但字体中还有两个附加表:COLR表将作为层的附加字形链接到基本字形,并定义这些层的顺序。并且CPAL(调色板)表为各个层存储一个或多个调色板。(不同的调色板对于在深色和浅色背景上显示字体非常有用。)因此,当支持这一新的颜色功能时,基本字形将被有色层替换。

Google的PNG图片(CBDT/CBLC表)。

Google提出了一个使用PNG图像作为字形的实现。字形只是简单地被好的旧图像所取代。这对较小的图标很有效,显然带来了位图图像的所有创作自由,但伸缩性不是很好。放大一个足够大的字形,你会遇到模糊的像素。用css更改字形的颜色即使不是不可能,也是很难的。有趣的是,他们指定在他们的实现中不应该有GLYF表--保存未上色的"正常"字形的表--因此,当这种格式不受支持时,看起来没有退路。它已经在Android和Linux上使用的FreeType中实现,但如果提议使用OpenType,也会将其带到Windows和Apple计算机上。

最后一种方法是我们感兴趣的。这是因为imagefttext是由PHP GD扩展提供的函数。而GD内部使用的是FreeType库来绘制文本。

从2.5版开始,在FreeType中支持表情符号。尝试执行php -i命令以查看您有什么版本的FreeType。这是我的:

FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.5.2

但是,在尝试了我发现的一些示例字体here后,PHP一直抛出警告:

Warning: imagefttext(): Could not set character size

恐怕GD library不支持FT_LOAD_COLOR标志。此标志需要有彩色表情符号。请参阅自由类型更改日志:

2013-05-23  Behdad Esfahbod  

    Add support for color embedded bitmaps (eg. color emoji).

    A new load flag, FT_LOAD_COLOR, makes FreeType load color
    embedded-bitmaps, following this draft specification

      https://color-emoji.googlecode.com/git/specification/v1.html

回答您的问题:您不能使用imagefttext获得彩色笑脸。对不起,😉。

本文最后更新于 2023-1-19 16:40,某些文章具有时效性,若有错误或已失效,请在网站留言或联系站长:17tui@17tui.com
·END·
站长网微信号:w17tui,关注站长、创业、关注互联网人 - 互联网创业者营销服务中心

免责声明:本站部分文章和图片均来自用户投稿和网络收集,旨在传播知识,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系我们及时修正或删除。谢谢!

17站长网微信二维码

始终以前瞻性的眼光聚焦站长、创业、互联网等领域,为您提供最新最全的互联网资讯,帮助站长转型升级,为互联网创业者提供更加优质的创业信息和品牌营销服务,与站长一起进步!让互联网创业者不再孤独!

扫一扫,关注站长网微信

大家都在看

    返回顶部