2013-06-22 58 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 ... –