Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Draw text along the bezier curve in paper.js

Is it possible to easily draw text along the bezier curve using paper.js?

I know it is possible to attach text to a line path and then rotate it, but I am interested specifically in drawing text along the curve. Something like http://www.w3.org/TR/SVG11/images/text/toap02.svg

I understand this may be achieved by printing text a letter by letter with corresponding rotation applied to every item, but I am interested in easier way to achieve this in paper.js

like image 314
Volodymyr Tsukur Avatar asked May 14 '13 03:05

Volodymyr Tsukur


2 Answers

As mentioned in the previous answer, PaperJS does not offer this functionality out of the box. But You can achieve the effect with very little effort.

Here is how to proceed:

  1. Get the offset to the x-center of each glyph in the text. This can be done by using the width of a PointText for the substring until the glyph.
  2. Find the point for the offset on the path that you want your text to align to.
  3. Place the single centered glyph at the just found point. Rotate the glph by the path's tangent angle.

Here is the Paper Sketch: Align Text to Path Sketch

And here is the result of a simple test:

enter image description here

You can move the PointText objects of the glyphs along the y-axis before applying the rotation to achieve the offset from the path (like the red text in your example).

like image 76
Waruyama Avatar answered Oct 30 '22 10:10

Waruyama


We haven't implement text along path in Paper.js yet. At the moment, text support is rather rudimentary, but this will hopefully change soon once we have rolled out version 1.0 of the library.

like image 5
Jürg Lehni Avatar answered Oct 30 '22 10:10

Jürg Lehni