借助openType在字体本身实现高亮

159 阅读1分钟

同类型对比:

  • Hightlight.js:

    • 原理:扫描代码将其分割为特定于语言的小模式,将每个部分包装在具有特殊样式的tag中,以创建高亮显示的效果,然后将生成的HTML注入回页面。

    • 缺点:

      • 1.每个页面更加臃肿和复杂;
      • 2.非实时高亮:通常需要等待DOM加载完成之后才开始高亮,因此用户可能会看到未高亮的代码瞬间。
    • 优点:

      • 1.可以通过插件系统扩展其功能;
      • 2.支持多种编程语言和标记语言;
      • 3.即使包含了多种语言的支持,整体文件大小仍然相对较小;
  • 使用opentype在字体中构建语法高亮:

    • 原理:修改了一个开源的Monaspace Krypton字体,利用了OpenType字体中的COLR表来创建多色字体,为其添加彩色版本的字符,使用OpenType的上下文替换功能识别并替换基于HTML、CSS 和 JS 语法的特定字符串,最终实现一个内置语法高亮功能的字体

    • 优点:

      • 1.像使用任何自定义字体一样简单;
      • 2.无需JavaScript即可工作;
    • 缺点:

      • 1.如添加更多语言支持或更改字体外观,需要修改字体文件。
      • 2.只适用于支持OpenType的地方;
      • 3.通常需要专业的字体编辑软件,比如Glyphs,并且仅适用于Mac平台。

参考博客: