У меня есть svg файл, который содержит определенный шрифт с использованием синтаксиса @font-face
. Этот svg находится в /logo/logo-big-web.svg
, а шрифт находится на /font/MDN/MDN.ttf
на сервере.
Все работает нормально, когда я открываю http://www.mywebsite/logo/logo-big-web.svg
в браузере, шрифт загружается правильно, и файл svg отображается правильно.
Однако, когда я пытаюсь вставить файл svg в html файл, например, в index.html
:
<img src="/logo/logo-big-web.svg" ... ></img>
Когда я открываю http://www.mywebsite/index.html
в браузере, шрифт не загружается должным образом, а svg отображает уродливый шрифт по умолчанию.
Кто-нибудь еще испытал эту проблему? Как обойти это?
Я знаю, что я мог бы вставлять шрифт в виде SVG-глифов внутри файла svg, но это не работает в firefox и много добавляет к размеру файла svg, пока я загружаю шрифт в любом случае для использования на самой веб-странице (кажется, расточительно загружать шрифт дважды). Таким образом, внедрение глифов не является вариантом. То же самое касается встроенного data:
uri.
Обновление:
Шрифт указан в файле svg следующим образом:
<defs>
<style>
@font-face {
font-family: MDN;
src: url("/font/MDN/MDN.ttf"); }
</style>
</defs>
и я использую его следующим образом:
<text font-family="MDN" font-size="11"> <textPath ... > ... </textPath> </text>
Обновление 2:
Я попытался обойти проблему, указав шрифт в отдельной таблице стилей и включив его следующим образом:
<?xml-stylesheet type="text/css" href="/style/slyle.css" ?>
Но это похоже на ту же проблему: он работает, когда я открываю svg непосредственно в браузере
(http://www.mywebsite/logo/logo-big-web.svg
), но ломается, когда я использую svg в теге html img
или в качестве фона для элемента html.