zoukankan      html  css  js  c++  java
  • 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 然后没找到字体。注释掉这一行之后功能就正常了。

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

    人不写代码,和咸鱼有什么区别?
  • 相关阅读:
    c# CLR无法从 COM 上下文 0x51cd20 转换为 COM 上下文 0x51ce90
    sql语法
    学籍管理系统
    【Android进阶】Android调用WebService的实现
    【Android进阶】自定义控件实现底部扇形展开菜单效果
    华为上机题汇总----java
    卡片游戏(栈和队列)
    18岁生日
    循环多少次?
    Flappy bird源代码(略吊)
  • 原文地址:https://www.cnblogs.com/kischn/p/14338058.html
Copyright © 2011-2022 走看看