Open Ashung opened 7 years ago
第一个问题我看一下,有同事也遇到 sketch 上的图标导出不能用的问题。
第二个问题能更详细描述下么?咱们在 HTML 上是怎么写字体的呢。
sketch 上的图标导出不能用,可能跟设计有关吧。我目前只发现被 SVGO 压缩过的 SVG,用原始的svgicons2svgfont 和 svg2ttf 是转的字体是完整的,而 iconfont-builder 却出问题,这个比较奇怪。
我参考 Google material-design-icons 使用 16 进值,我在 Unicode 完整下载的码表也是 16 进值。
改成这样就可以显示。
<i class="icon iconfont"></i>
<div class="name">check</div>
<div class="code">&#xF050;</div>
原来是这样的。
<i class="icon iconfont">�xf050;</i>
<div class="name">check</div>
<div class="code">&#x0xf050;</div>
@Ashung 是这样,&#
是 html 转义的起始字符,后面一般跟的是十进制,如果要使用十六进制,需要以 &#x
最为起始字符。也就是说,咱们之前的写法 �xf050
冗余了。
对,问题是生产的HTML好像没区分用户使用十进制或十六进制。可是你为什么要用十进制?
@Ashung 这里是生成字体的输入,而且也支持 16 进制,我看你传的就是 16 进制嘛,这个会进行转换的。采用十进制是考虑到我们的 code 可能会从数据库里取,库里是十进制的。
@Ashung 你说用 svgo 压过的样式有问题,这个后来我看了下:现在我们内部的解决方案还是规范 SVG 的设计,在设计时路径一定要闭合,形状必须合并。其实我这个也是依赖 svgicons2svgfont 和 svg2ttf,理论上生成的结果应该是一样的。
我使用 iconfont-builder 处理 SVGO 压缩过的 SVG 文件,最终 TTF 文件中有些图标会出问题 (使用未压缩的 SVG 不会出问题)。
我另外一种方式直接使用 svgicons2svgfont 和 svg2ttf 的,使用 SVGO 压缩过的 SVG 文件生成的 TTF,并没有问题。
代码如下:
使用 iconfont-builder 的代码
codepoints.yaml
出错的图标是 svgo 压缩后的 info.svg
原始的 info.svg, 从 Sketch 导出的。
另外一个问题是,设计从 Unicode 网站查找到的或者 macOS Fontbook 是编码都是 16 进值的。我使用 16 进值码之后,HTML 文件显示图标就有问题。