显示所有字体文件字符

时间:2012-09-28 12:01:01

标签: php javascript jquery fonts

我想知道是否有办法使用HTML / CSS / JS / PHP显示所有字体文件字符?

让我们说我想展示所有可能的" Arial"字符。或来自自定义@ font-face字体的字符。

4 个答案:

答案 0 :(得分:5)

字体可以使用0到0x10FFFF之间的代码映射各种Unicode字符。因此,如果你真的想以任何随机字体看到所有,那么在其他答案中建议的循环中进行它确实会有问题。即使对于Arial的“简单”示例,最低的映射字符是U + 0020,最高的是U + FB02。然而,不是该范围内的所有内容都已映射,因此如果您在循环中执行此操作,则最终会出现大量空白。更不用说它可能会很慢。

要有效地执行您想要的操作,您将需要一些东西来破解打开字体文件,检查cmap表,并获取映射字符列表(范围)。我不确定你的设置是什么,但是你可以用FreeType或类似的东西来做这个服务器端。

答案 1 :(得分:1)

我建议您尝试GD库imagettftext()功能。 手册示例:

// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The string with character sets
for($i=0; $i<256; $i++){ 
     $text.= chr($i); 
} 

// Replace path by your own font path
$font = 'arial.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);

答案 2 :(得分:0)

你可以使用带有for循环的chr函数。你会有一些不存在的角色,但它很快捷。如果您愿意,可以更具体地说明您的开始和结束ascii值。

for($x=1;$x<=255;$x++) {
    echo chr($x) . "&nbsp;"; 
}

然后你可以让我们jquery动态地改变字体。

答案 3 :(得分:0)

我有类似的情况,我解决了它解析.svg文件。因此,如果你没有在SVG中拥有该文件,你可以将ttf转换为SVG,然后解析它以获得可用字符的unicode。