Word wrap
npm install word-wrap-canvas- Import
word-wrap-canvas.
For ES Modules:
import { wordWrap } from "word-wrap-canvas";For CommonJS:
const { wordWrap } = require("word-wrap-canvas");- Example of use.
Import
import { wordWrap } from "word-wrap-canvas";Example config
// Default config
const text =
"Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
const maxWidth = 200;
const fontSize = 14;
const fontFamily = "Roboto";
const lineHeight = fontSize * 1.2; // Line spacing (1.2 of font size)Using the wordWrap
const lineList = wordWrap({
text,
maxWidth,
fontConfig: { fontSize, fontFamily },
isAdaptiveWidth: false // option
});without canvas
<div>
{lineList.map((line, index) => (
<span key={index}>{line}</span>
))}
</div>for canvas
const setCanvasTextStyle = (ctx: CanvasRenderingContext2D) => {
ctx.fillStyle = "#000";
ctx.font = `normal ${fontSize}px ${fontFamily}`;
ctx.textBaseline = "top"; // Align top
};
const setCanvasSettings = (canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D) => {
// Calculate canvas height based on number of lines
canvas.height = lineList.length * lineHeight;
setCanvasTextStyle(ctx);
};
const ctx = canvas.getContext("2d");
if (!ctx) return;
setCanvasSettings(canvas, ctx);
// Draw each line of text
lineList.forEach((line, index) => {
const yPosition = index * lineHeight;
ctx.fillText(line, 0, yPosition);
});<canvas id="canvas" width={maxWidth} />wordWrap({ text, maxWidth, fontConfig })
- text : string - Text for word wrapping ex: "Hello world"
- maxWidth : number - Maximum line width in pixels ex: 400
- fontConfig : TWordWrapCanvasFontConfig - Font configuration for text width calculation.
- isAdaptiveWidth : boolean - Responsive Width Flag. Default: false
fontConfig
- fontFamily : string - Font Family ex: "Roboto"
- fontSize : number - Font size ex: 16
Return
- string[]
MIT


