首先我们来配置项目环境
1.1 初步构想
我们的富文本编辑器项目包含两大部分:
编辑器本体
可以单独打包发布到npm上
暂定使用TypeScript开发
demo
若干纯静态网页, 用于展示编辑器的功能...:
修改src/demo/App.tsx, 初始化CanvasTextEditor:
添加SASS依赖, 并重置浏览器重置样式
添加文件 src/demo/main.scss...但是现在在canvas中, 因为整个canvas对于浏览器来说, 就是一个栅格图像, 所以我们需要自己计算, 实现这个功能.
当我们在文字上方点击的时候, 需要在对应位置插入闪烁的光标....我们用红色画出actualBoundingBox, 用绿色画出fontBoundingBox:
注意, 为了方便计算, 我们将textBaseLine设置为top....所以, 为了一致性, 我们使用后者.
2.2 缓存(记录)文字包围盒
既然找到了计算文字包围盒的方法, 接下来, 我们需要在每次绘制文字的时候, 将其缓存起来, 方便我们后续使用.