Skip to main content

LibCSS 的源码解析

· 33 min read

LibCSS 是一个 CSS 解析器和选择引擎,由 C 语言编写,是 NetSurf 网页浏览器项目的一部分且可供其它基于 MIT 许可协议的软件使用。它的主要特性如下:

  • 解析 CSS,无论好的还是坏的
  • 简单的 C API
  • 低内存占用
  • 快速的选择引擎
  • 可移植
  • 共享库

笔者之所以选择研究 LibCSS 源码,是因为在改造 CSS 库 lcui/css 时遇到了瓶颈。虽然参考 MDN 上的 CSS 值定义语法文档设计并实现了 CSS 值定义语法的解析器和匹配器,但在解决取值的问题时一直找不到最优的方案,其难点在于 CSS 属性的值的数量和类型不是固定的,且由于 background 这类简写属性的存在,还得考虑如何复用取值逻辑。因此 LibCSS 作为一个 C 语言编写的且已经历过浏览器考验的项目,很适合作为笔者的研究对象。