html5-canvas - 当 SVG 包含具有自定义字体的文本时,FabricJS 无法正确渲染 SVG?
问题描述
当 SVG 包含具有自定义字体的文本时,我在 fabricjs 中渲染 SVG 时遇到问题。
如何使用自定义字体使 Fabricjs 中的 SVG 显示正确?
这是我的代码:
var canvasObject = document.getElementById("editorCanvas");
// set canvas equal size with div
$(canvasObject).width($("#canvasContainer").width());
$(canvasObject).height($("#canvasContainer").height());
var canvas = new fabric.Canvas('editorCanvas', {
backgroundColor: null,
selectionLineWidth: 2,
width: $("#canvasContainer").width(),
height: $("#canvasContainer").height()
});
var imageObj = new fabric.Image();
canvas.add(imageObj);
imageObj.setSrc('https://futushigame.firebaseapp.com/group_test.svg', function(imageObject) {
imageObject.set({top: 0, left: 0});
imageObject.set('dirty', true);
canvas.renderAll();
setObjectCoords();
});
function setObjectCoords() {
canvas.forEachObject(function(object) {
object.setCoords();
});
}
#canvasContainer {
width: 100%;
height: 100vh;
}
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.3/fabric.js"></script>
<style>
@font-face {
font-family: 'CurlzMT';
src: url("https://futushigame.firebaseapp.com/CurlzMT.ttf") format("ttf");
font-weight: 'normal';
font-style: 'normal';
}
</style>
<div id="canvasContainer">
<canvas id="editorCanvas"></canvas>
</div>
这是我的资源:
1. 字体文件:CurlzMT
2. SVG 文件:group_test.svg
谢谢!
解决方案
您需要将字体嵌入到 svg 文件中。svg 的内容必须是这样的 https://files.fm/f/qhvbe8jj
推荐阅读
- google-maps - Jasper 报告 - 将 Google 地图导出为 PDF 时的标记限制
- ios - iOS 13.5.1 和 UIButton 渐变
- windows - Bash 脚本无法运行 - Word 意外和意外标记
- java - 在 JAVA 中使用 Regex 进行子序列匹配
- three.js - 当前如何在three.js场景中获取相机的旋转?
- linux - 用于在 Web 应用程序上显示状态的 Docker 状态 API
- swiftui - SWIFTUI - 选择器视图触摸/可滚动区域即使在使用 clipped() 后仍然超出框架
- angular - 如何开发带有角度气泡的地图,其中气泡代表服务器位置
- flutter - Flutter SliverList 错误:TabbarView 和 Sliverlist 不起作用
- android - FileInputStream 无法在 Android R 中读取文件