0.1.0 • Published 7 years ago

rapidwrap v0.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

Imagine you have a canvas, and want to draw wrapped text. You can use canvas.getContext('2d').measureText(line), continuously adding words to line until you get to the desired length. But this solution is ~O(n^2) to find each line. Instead, thanks to the help of the incredible opentype.js combined with some custom code, you can use rapidwrap to wrap lines in linear time.

STILL UNDER CONSTRUCTION

Using the rapidwrap command line tool (npm install -g rapidwrap), preprocess your font file with:

rapidwrap /path/to/font/file.otf > output.js

Then, in your Javascript (using Webpack if in the browser):

const Font = require('rapidwrap')
const data = require('./output.js')
let myFont = new Font(data)
let fontSize = 16

myFont.measureText("text", fontSize)
// -> 27.8828125

let wrapWidth = 200
myFont.wrapText("blah blah very long string that will be wrapped here", fontSize, wrapWidth)
// -> ['blah blah very long string that ', 'will be wrapped here']

let x = 22
myFont.positionAt("some text here", fontSize, x)
// -> TODO cursor character index at click position x
0.1.0

7 years ago

1.0.0

7 years ago