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 然后沒找到字體。注釋掉這一行之后功能就正常了。

 

真是,找問題一天半,改問題只需要兩個字符: //

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM