javascript - Fabric JS 解析器的 SVG 文本对齐问题

标签 javascript svg fabricjs

我正在使用以下内容加载 SVG

fabric.loadSVGFromURL

但是,当加载到 Canvas 中时,SVG 中的文本会向上推,而不是按照生成 SVG 时设置的方式垂直对齐。

svg代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  <svg version="1.1"
 id="Layer_1" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="62.8 -28.2 502.6 480"
 enable-background="new 62.8 -28.2 502.6 480" xml:space="preserve">
    <g id="Layer-border">
        <path id="border" fill="#363F5B" d="M62.8-28.2v480h502.6v-480H62.8L62.8-28.2z"/>
    </g>
    <g id="Layer-main">
        <rect id="main" x="72" y="-19.2" fill="#BF4D9C" width="484.9" height="463.1"/>
    </g>
    <g id="Layer-text">
        <text transform="matrix(1 0 0 1 79.5781 339.4394)" fill="#FFFFFF" font-family="'ApexLake-Regular'" font-size="427.7094">K</text>
    </g>
 </svg>

链接到浏览器中的结果:https://db.tt/A2VCCfhm

加载到 Canvas 时链接到结果:https://db.tt/RqNeO3Ku

最佳答案

我不知道你是否是 github 上的@rocknpivot。 根据最新版本 FabricJs 的记录,这个对齐问题已经解决。 2014 年 11 月 5 日修正了 1/4 字体大小的错位。 无论如何,在您发布的问题中,用户可以看到用特定字体呈现的美丽的“K”字母。 您发布的 SVG 中不存在该字体,因此该 svg 永远不会像您的屏幕截图中那样呈现。

链接: http://jsfiddle.net/asturur/vwq7h766/4/

无论如何,这里有一个更有效的示例。 您会看到稍微向左的偏移错误,但我认为自创建 fiddle 以来字体发生了一些变化,我没有更多的原始文件,无法重现它。

这是工作 fiddle 的屏幕截图

https://cloud.githubusercontent.com/assets/1194048/4953012/586b3af8-667b-11e4-93ff-9542f5d61b3d.png

关于javascript - Fabric JS 解析器的 SVG 文本对齐问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778879/

相关文章:

javascript - 为什么此站点在注册点击事件时遇到问题?

svg - 在 SVG 路径中对 SVG 进行动画处理

javascript - 单击鼠标更改 SVG 字体大小

javascript - Fabric.js "reverse"和 "layered"剪裁/剪裁

javascript - 在 fabricJS 中将 JSON 加载到 Canvas 上后,文本位置发生了变化

Javascript forEach 仅循环数组的最后一个值

javascript - 如何获取Web浏览器的公钥(用于HTTPS)

javascript - 如何关闭捕捉到网格fabricjs

javascript - 在 JavaScript 中的数组中搜索

javascript - 使用 Backbone 在 Handlebars 中进行迭代