2013-06-22 42 views
0

我正在寻找一种方法来直接在canvas元素上绘制多行文本而不使用HTML/DOM。最好的情况是找到一个JavaScript库,但是我的谷歌搜索尝试没有提供任何东西。如何在canvas元素中对文本进行丰富排版?

理想的情况下,将具有以下功能:

  • 能够设置段落样式:首行缩进,行间距等
  • 快速可靠地实现了与校准/对齐文字环绕算法通过HTML或降价等

,我希望能找到一个解决方案,就是多一点先进的T一些简化的子集选择

  • 富文本格式韩this tutorialthis answer这只是处理基本的字/线环绕。

    有谁知道任何可能的解决方案?看起来这是一件疯狂的事情,但我认为我有一个相当好的理由!我正在评估Ejecta作为一个可能的iOS环境来制作一个跨平台的游戏,它依赖于文本和美丽的排版,所以HTML和DOM不可用。 (We主要制作基于文本的游戏)

  • +0

    此:https://github.com/bramstein/typeset包含了一个很好的换行算法,包括各种文本对齐选项,一个连字符,并利用帆布的'measureText'的函数,尽管输出为“span”。可以使用,但与基本线渲染器结合使用。 –

    +1

    我们支持[fabric.js](http://fabricjs.com)中的多行文本渲染以及字体系列,文本对齐,文本修饰,文本描边等。没有内置自动换行,但您应该能够扩展'fabric.Text'类并从那里开始工作。 – kangax

    +0

    谢谢@ kangax,看起来很强大! –

    回答

    0

    画布对您发现的文本支持最少。

    要获得富文本功能,请查看TinyMCE的源代码。

    TinyMCE是一个开源,广泛使用的基于JavaScript的文本编辑器,正在积极开发中。它具有出色的功能,它的广泛使用和积极的开发使大量调试和功能丰富的代码成为可能。

    您可以从此框架开始,并拉出您需要在画布中使用的部分。

    该项目可以在这里找到:https://github.com/tinymce/tinymce

    +0

    看起来很有希望,谢谢!我会看看... –

    +0

    看起来不像它使用画布,因此不需要任何特殊的代码来实现文字包装/格式等?似乎使用嵌入式iframe ... –