LibCSS 的源码解析
· 阅读需 33 分钟
LibCSS 是一个 CSS 解析器和选择引擎,由 C 语言编写,是 NetSurf 网页浏览器项目的一部分且可供其它基于 MIT 许可协议的软件使用。它的主要特性如下:
- 解析 CSS,无论好的还是坏的
- 简单的 C API
- 低内存占用
- 快速的选择引擎
- 可移植
- 共享库
笔者之所以选择研究 LibCSS 源码,是因为在改造 CSS 库 lcui/css 时遇到了瓶颈。虽然参考 MDN 上的 CSS 值定义语法文档设计并实现了 CSS 值定义语法的解析器和匹配器,但在解决取值的问题时一直找不到最优的方案,其难点在于 CSS 属性的值的数量和类型不是固定的,且由于 background
这类简写属性的存在,还得考虑如何复用取值逻辑。因此 LibCSS 作为一个 C 语言编写的且已经历过浏览器考验的项目,很适合作为笔者的研究对象。