同类型对比:
-
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平台。
-
参考博客: