У меня проблема с пользовательскими webfonts и fabric.js. В моем приложении много настраиваемых веб-сайтов, и я запускаю их при добавлении iText к моему холсту:
var text = new fabric.IText("My Text", {
fontFamily: "Some Custom Font Family",
fontSize: 50,
top: 0,
left: 0,
fill: "#000000"
});
canvas.add(text);
canvas.bringToFront(text);
canvas.setActiveObject(text);
canvas.renderAll();
Это работает, но только если я нажимаю на iText на своем холсте и взаимодействую с ним. Затем, как только шрифт загрузится, это уже не проблема. Проблема изначально и первый раз, когда iText добавлен.
Я много исследовал и пришел к этой теме:
Инициализировать загруженный текст удаленным веб-шрифтом в Fabric.js
но это не помогло мне. Jsfiddle при условии, что имеет такую же проблему:
Просто откройте эту скрипту новым браузером (например, Chrome CMD + Shift + R) с очищенным кешем. Вы увидите, как только вы откроете скрипку, пользовательский webfont не будет загружен, но сразу загрузится, когда вы нажмете iText справа.
Теперь, как мы можем это решить?
Предполагаемый подход состоял в том, чтобы установить useNative
в false и позволить Cufon отображать текст, но это не сработало.
Я загружаю свои веб-сайты в файл CSS следующим образом:
@font-face {
font-family: 'ApolloASM';
src: url('ApolloASM-webfont.eot');
src: url('ApolloASM-webfont.eot?#iefix') format('embedded-opentype'),
url('ApolloASM-webfont.woff2') format('woff2'),
url('ApolloASM-webfont.woff') format('woff'),
url('ApolloASM-webfont.ttf') format('truetype'),
url('ApolloASM-webfont.svg#apollo_asmregular') format('svg');
font-weight: normal;
font-style: normal;
}