Обслуживание встроенного Webfont (.woff) из сценария php приводит к ошибке синтаксического анализа OTS

цель

Служите веб-шрифту (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, а не через встроенное обслуживание? Мне нужно изменить некоторые типы заголовков или так?

1

Решение

OTS parsing error: invalid version tag ошибка может возникнуть, когда файл недействителен, например, когда PHP выдает дамп и выдает ошибку и вы транслируете его в браузер как шрифт. Или когда ваш код вводит другие байты (например, перевод строки после первого ?> и начало ваших двоичных данных).

Вы можете попробовать проверить HTTP-запрос на сетевой панели инструментов разработчика вашего браузера и посмотреть, действительно ли запрос содержит шрифт или что-то еще.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]