ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

onlyoffice 宋体显示问题排查

2021-01-28 09:35:02  阅读:607  来源: 互联网

标签:字符 编译 ASCII 宋体 排查 字体 日志 onlyoffice


已知: 

onlyoffice 6.1.0 | master | 6.2.0 的 all_fontsgen 生成的字体不支持中文字体(其实是所有非 ASCII 字符的字体,比如 阿拉伯文、日文、韩文)。

github 上已经有相关的 issue (https://github.com/ONLYOFFICE/DocumentServer/issues/1099) 了但是我这里拉下来编译发现并不好使。。我自己根据那个 fix 又稍微调整了一下,不贴了,代码很烂,毕竟 C++ 不熟悉。。

最终通过查看 fonts_thumbnail.png 发现生效了。(图就不放了,别引起版权问题。。。)

 

 

之后便遇到了本贴的问题,我明明选择了 宋体,但是最终换成的是 “等线”。猜想肯定是使用了 fallback 字体,至于为啥没找到宋体就不从而知了,大型的 js 项目简直就是灾难啊。。

硬着头皮上,毕竟这东西是在 sdkjs 项目里面,最终需要编译打包,然后 web-apps 引用使用,所以整个加日志的过程也很痛苦,添加日志》编译(3+分钟)》操作看日志生成。(添加了 debugger 但是好像被打包的程序忽略了)。

最终在 sdkjs/common/libfont/map.js:728行的 this.CorrectParamsFromDictionary(oSelect); 这行前后加日志打印发现前后出现差别,调用前还是宋体,调用后就成了等线。

简单看了一下这个方法的逻辑,就是把 非 ASCII 字符进行一波处理,显然,宋体给处理成了 simsun 然后没找到字体。注释掉这一行之后功能就正常了。

 

真是,找问题一天半,改问题只需要两个字符: //

 

标签:字符,编译,ASCII,宋体,排查,字体,日志,onlyoffice
来源: https://www.cnblogs.com/kischn/p/14338058.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有