找回密码
 立即注册

QQ登录

只需一步,快速开始

Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-5-28 14:51:53
地板
您好,
如果使用非法字体。会利用浏览器的回退字体策略,进行文字测量。
至于web下文字测量。
https://stackoverflow.com/questions/118241/calculate-text-width-with-javascript

关于 SpreadJS 底层的绘制逻辑,不在SpreadJS技术支持范围内。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-5-28 10:07:59
板凳
Ellia.Duan 发表于 2024-5-27 18:30
您好,具体的规则可以参考浏览器自定义字体,关于fallback字体,是浏览器内部规则。

以及想了解下,此非 ...

你好,产品设计的初衷是为了确保spreadjs 渲染的报表和系统内其他图表的字体保持一致。至于为什么选择sans-serif这个通用字体族名已不可考

所以按照您的解释,SpreadJS 在无法识别字体时,就会按照浏览器中的设置来找对应的字体来绘制?
这里我又有额外的两个问题:
* SpreadJS 所能识别的字体,是之前这个帖子里提到的共 425种字体吗?这些字体对应的字体包SpreadJS 是已经打包到对应的基础库里了,还是如何使用呢?因为我本机是 MacOS, 实际字体册里并没有找到 Calibri 这个字体
* 由于浏览器设置中,只是指定了一些通用字体族名对应的字体是什么,那么如果选择了一个非 SpreadJS 支持的字体,且该字体又没有以某个通用字体族名结尾,那么SpreadJS 会如何选择字体来绘制报表呢?


因为我们现在遇到了这个问题,同样都是将单元格设置为 sans-serif 字体
* 在 Mac 的 Chrome 中,看起来展示效果和 Calibri 字体的效果是一致的
* 而在Windows 的 Chrome 中,就出现了 sans-serif 字体展示比 Calibri 字体大很多的情况

请问这个是什么原因呢?



Windows 下表现
image.png939182434.png
Mac 下表现
image.png533792418.png



回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-5-27 18:30:21
沙发
本帖最后由 Ellia.Duan 于 2024-5-27 19:13 编辑

您好,具体的规则可以参考浏览器自定义字体,关于fallback字体,是浏览器内部规则。
image.png769177245.png
以及想了解下,此非法字体的重要性,看到您也发了很多帖子在咨询列宽问题,是否有可能替换掉此非法字体。

关于其他问题,我深入调研下此问题。




回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部