Вы не можете включить правило @font-face
в атрибут style
(который является «встроенным CSS» в самом узком смысле). Согласно спецификации HTML 4.01, вы не можете вообще включать такое правило в элемент body
(«встроенный CSS» в более широком смысле, который включает style
элементы) . Но на практике это возможно.
На практике, если вы включите элемент style
внутри body
, он будет обрабатываться браузерами так же, как если бы он находился в синтаксически правильном месте, то есть внутри элемента head
. Он даже работает «задом наперед», воздействуя на элементы, появляющиеся перед ним.
Вы даже можете использовать этот подход - который следует использовать, только если вы не можете изменить head
- формально правильный согласно HTML5 CR. Он допускает элемент style
в начале любого элемента с потоковым содержимым в качестве модели содержимого. Текущие браузеры игнорируют атрибут scoped
.
Обновление : следующее больше не имеет значения, поскольку ошибка валидатора была исправлена.
Однако есть ошибка в W3C Markup Validator и validator.nu: они запрещают style
в начале body
. Чтобы преодолеть эту ошибку и сделать документ в дополнение к действительности, вы можете использовать дополнительный элемент div
:
<body>
<div>
<style scoped>
/* your @font-face and other CSS rules go here */
</style>
<!-- your document body proper goes here -->
</div>
</body>