цель
Служите веб-шрифту (woff) непосредственно из встроенного PHP-скрипта.
Код
<?php
ob_start(); ?>
0001 0000 000b 0080 0003 0030 4f53 2f32
....
0f12 0b9e 0000 00bc 0000 0060 636d 6170
$font_test_woff = ob_get_clean();
header("Content-type: application/font-woff", true);
header('Content-Disposition: attachment; filename="font_test.woff"');
echo $font_test_woff;
?>
«….» означает, что есть еще двоичный код. Но это было бы много для этого поста.
ошибка
Обслуживание шрифта производит
Ошибка анализа OTS: неверный тег версии в браузере Chrome.
Временное решение
Подавать шрифт через file_get_contents ().
<?php
$font_test_woff = file_get_contents("path_to_woff.woff.php");
header("Content-type: application/font-woff", true);
header('Content-Disposition: attachment; filename="font_test.woff"');
echo $font_test_woff;
?>
Это не приводит к ошибкам и работает как положено
Почему это работает через file_get_contents, а не через встроенное обслуживание? Мне нужно изменить некоторые типы заголовков или так?
OTS parsing error: invalid version tag
ошибка может возникнуть, когда файл недействителен, например, когда PHP выдает дамп и выдает ошибку и вы транслируете его в браузер как шрифт. Или когда ваш код вводит другие байты (например, перевод строки после первого ?>
и начало ваших двоичных данных).
Вы можете попробовать проверить HTTP-запрос на сетевой панели инструментов разработчика вашего браузера и посмотреть, действительно ли запрос содержит шрифт или что-то еще.
Других решений пока нет …