使用预加载字体可以加快文档首次打开速度

即提前下载或缓存字体文件,在编辑器启动时可以省略字体下载过程,大大提高编辑器启动速度

应用登陆系统后,开始后台下载默认使用到的字体文件

预加载字体数据示例代码如下,应用可灵活实现自已的预加载字体代码。

  • 应用代码实现目的:在打开病历前,提前取得几种默认字体的数据
    async LoadPreData()  
    {
        global.pre_data_map = {};
        var fontFileNameStr = "FZSSJW.TTF";
        var url = "/system/user_font/" + fontFileNameStr; 
        let response = await fetch(url,  {credentials:'same-origin'});
        if(response.ok)
        {
            let data =await response.arrayBuffer();   
            global.pre_data_map[fontFileNameStr] = data;

        }

        fontFileNameStr = "FZFSJW.TTF";
        url = "/system/user_font/" + fontFileNameStr; 
        response = await fetch(url,  {credentials:'same-origin'});
        if(response.ok)
        {
            let data =await response.arrayBuffer();   
            global.pre_data_map[fontFileNameStr] = data;

        }
    }

监听”preFontData”事件

  ThinkEditor.addEventListener("preFontData", this.OnPreFontData);

使用预下载字体数据

  • 使用接口LoadFont()加载字体数据

注意:

  • 返回false表示使用预加载字体数据,中断内置字体获取
  • 注意: 返回true表示尝试内置字体获取
    OnPreFontData(e){
        console.log(e);
        var data = e.data;
        var fontFileNameStr = data.name;//示例: FZSSJW.TTF
        var fontArrayBuffer = null;
        try{

            fontArrayBuffer = global.pre_data_map[fontFileNameStr];   
            console.log('存在预加载字体数据:' + fontFileNameStr );
            ThinkEditor.LoadFont(fontFileNameStr,fontArrayBuffer);
            return false;//注意:返回false表示中断编辑器字体获取           
        }
        catch(e)
        {
            console.log('未找到预加载字体数据:' + fontFileNameStr );
            return true;//注意:返回true表示继续编辑器字体获取
        }  
    },
文档更新时间: 2024-11-25 15:32   作者:admin