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

Target

Служить веб-шрифту (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 Ответ

0 голосов
/ 06 ноября 2018

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

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

...