【发布时间】:2013-06-19 11:30:33
【问题描述】:
我正在寻找一种不使用 HTML/DOM 直接在画布元素上绘制多行文本的方法。最好的情况是找到一个 JavaScript 库,但我的谷歌搜索没有找到任何结果。
理想情况下,它应该具有以下功能:
- 能够设置段落样式:首行缩进、行距等。
- 具有对齐/对齐选项的文本换行算法的快速而稳健的实现
- 通过 HTML 或 Markdown 等的一些简化子集进行富文本格式设置。
我希望找到一个比 this tutorial 和 this answer 更先进的解决方案,它们只处理基本的字/行换行。
有人知道任何可能的解决方案吗?这似乎是一件疯狂的事情,但我认为我有一个相当好的理由!我正在评估 Ejecta 作为一个可能的 iOS 环境,以制作一个依赖具有漂亮排版的文本的跨平台游戏,因此 HTML 和 DOM 不可用。 (We 主要制作基于文本的游戏)
【问题讨论】:
-
This: github.com/bramstein/typeset 包含一个很好的换行算法,包括各种文本对齐选项、连字符,并利用了画布的
measureText函数,尽管输出为spans。不过可以结合基本的线条渲染器使用。 -
我们支持fabric.js 中的多行文本渲染以及字体系列、文本对齐、文本装饰、文本笔划等。没有内置自动换行但您应该可以扩展
fabric.Text上课和工作。 -
谢谢@kangax,看起来很强大!
标签: javascript ios canvas word-wrap typography