Мне интересно, есть ли способ отобразить все символы шрифта с помощью HTML/CSS/JS/PHP?
Скажем, я хотел бы отобразить все возможные символы "Arial". Или символы из шрифта пользовательского шрифта @font-face.
Мне интересно, есть ли способ отобразить все символы шрифта с помощью HTML/CSS/JS/PHP?
Скажем, я хотел бы отобразить все возможные символы "Arial". Или символы из шрифта пользовательского шрифта @font-face.
Шрифты могут отображать широкий диапазон символов Юникода, используя коды от 0 до 0x10FFFF. Таким образом, если вы действительно хотите видеть все в любом случайном шрифте, делать это в цикле, как было предложено в других ответах, действительно будет проблематичным. Даже для "простого" примера Arial наименьший отображаемый символ равен U + 0020, а наивысший - U + FB02. Однако не все в этом диапазоне отображается, поэтому, если вы сделали это в цикле, у вас получилось бы много пустых тарелок. Не говоря уже о том, что это, вероятно, будет довольно медленным.
Чтобы делать то, что вы хотите эффективно, вам понадобится что-то, чтобы взломать файл шрифта, изучить таблицу cmap и получить список отображаемых символов ( не диапазон). Я не уверен, что такое ваша установка, но вы, вероятно, могли бы сделать эту серверную часть с чем-то вроде FreeType или некоторыми такими.
Я хотел бы предложить вам попробовать GD library 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);
Вы можете просто использовать функцию chr с циклом for. У вас будет несколько персонажей, которых нет, но это быстро и просто. Если вы хотите, вы можете быть более конкретным о значении начала и конца ascii.
for($x=1;$x<=255;$x++) {
echo chr($x) . " ";
}
Затем вы можете просто использовать jquery для динамического изменения шрифта.
У меня была аналогичная ситуация, и я решил, что он разбирает файл .svg. Поэтому, если у вас нет файла в SVG, вы можете преобразовать ttf в SVG, а затем проанализировать его, чтобы получить unicode доступных символов.