在jpgraph的字符缺失(Missing chars in JpGraph)

2019-10-21 05:00发布

我有一个在Windows上运行,并使用一个网站cp1252 (又名Win-1252 ),所以它可以显示西班牙字符。 该应用程序生成的一些情节与jpgraph的2.3。 这些地块使用宋体开放式字体系列显示文字标签。 在ANSI(即CP1252)提供字符串和字体文件支持CP1252(实际上,在* .TTF文件从系统的字体文件夹复制)。

它在几个设置了工作的罚款从PHP / 5.2.6到PHP / 5.3.0。 问题开始时,我跑了PHP / 5.3.1下的应用程序:所有非ASCII是由代表失踪空心矩形或未知字符替换。

jpgraph的文档是不是它是如何预计国际字符非常精确。 显然,文本由imagettftext()函数,它预计UTF-8内部处理。 然而,一切都编码为UTF-8打破了所有的系统应用程序。 凡ANSI用来做工精细,我得到错误的字符( 电子 ,而不是U) 在那里我得到丢失字符,现在我得到一个PHP错误:

警告:imagettftext():any2eucjp():事情发生

你有关于GD2是什么改变了从PHP / 5.3.0 5.3.1可能会影响在非ASCII字符渲染任何线索? 我怎么有望与在WIN-1252字符集的字符串养活jpgraph的?

更新

明确,这个问题是不相关的jpgraph的。 我可以重现这个问题有一个简单的调用imagettftext():

<?php

$im = imagecreatetruecolor(400, 30);

$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

//$text = 'áéíóú ÁÉÍÓÚ'; # ANSI
$text = utf8_encode('áéíóú ÁÉÍÓÚ'); # UTF8

$font = '/path/to/tahomabd.ttf';
imagettftext($im, 15, 0, 10, 25, $black, $font, $text);

header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

?>

在PHP / 5.3.0,ANSI和UTF-8渲染正确的文本。 在PHP / 5.3.1,ANSI呈现错误的字符和UTF-8触发any2eucjp(): something happen内部错误。 我敢说我已经打了一个错误...

Answer 1:

我发现的总结:

  1. 这也可能是在PHP / 5.3.1(或在我的PHP / 5.3.1的二进制版本)中的错误; PHP / 5.3.2不再错过字符或抛出一个警告。
  2. 一种解决方法是用编码数字HTML实体非ASCII字符。


文章来源: Missing chars in JpGraph