「 使用 rust
构建自己的网络渲染引擎 robinson-罗宾逊 」
欢迎 Issue
和 Pull
❤️, 最好 Pull
👏
If help, buy me coffee —— 营养跟不上了,给我来瓶营养快线吧! 💰
-
⏰ 2018 7.13 开始
-
⏰ 2018 7.21 结束
由Rust语言编写的玩具 - 网络渲染引擎,由 Matt Brubeck (mbrubeck@limpet.net) 撰写.
我写的这段代码纯粹是出于教育目的. 我的目标是创建一个不完整但非常简单的引擎,作为了解更多基本实现技术的方法,无需担心的并发症如:
现实世界的可用性符合标准性能和效率互通性
这些都是重要的目标,但还有其他项目在研究它们. 通过完全忽略它们,该项目可以专注于尽可能简单易懂.
为什么要创建一个简单但无用的玩具渲染引擎? 主要是因为我个人想学习如何做到这一点. 如果我成功了,我也希望其他人可以通过 阅读或修改代码 来学习我的代码,或者在他们开始构建自己的玩具浏览器引擎时 学习我的经验.
有关详细信息,请参阅 Let's build a browser engine!, en
,基于这个项目的一系列how-to
文章.
或者 让我们构建一个浏览器引擎! 中文 - ./0.zh.md
目前实现:
- 解析一小部分HTML,并构建DOM树.
- 解析一小部分CSS.
- 执行 选择器-selector匹配 将样式应用于元素.
- 基本块布局.
很快,我希望:
- 内联布局.
- 绘制文本和框.
- 从网络或文件系统加载资源.
-
克隆robinson源代码https://github.com/mbrubeck/robinson
-
用
cargo build
建立鲁宾逊,和cargo run
运行它.
要在启用优化的情况下构建和运行,请使用cargo build --release
和cargo run --release
.
默认情况下,robinson将从examples
目录中加载test.html和test.css. 你可以使用--html
和--css
robinson可执行文件的参数 更改输入文件:
./target/debug/robinson --html examples/test.html --css examples/test.css
渲染的页面将保存到名为output.png
的文件中. 要更改输出文件名,请使用-o
选项. 要切换到PDF输出,请使用--format pdf
.