Socket
Socket
Sign inDemoInstall

canvas-txt

Package Overview
Dependencies
0
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    canvas-txt

Render multiline textboxes in HTML5 canvas with auto line breaks and better alignment system


Version published
Weekly downloads
3.4K
decreased by-21.87%
Maintainers
1
Install size
15.2 kB
Created
Weekly downloads
 

Readme

Source
canvas-txt multiline text on html canvas

Canvas Txt 📐

Transforming Your Canvas with Multiline Magic ✨

NPM NPM NPM

A Miniscule library to render text on HTML5 Canvas with ZERO dependencies

Features

  • Multiline text
  • Auto line breaks
  • Horizontal Align
  • Vertical Align
  • Justify Align
  • Easy Debugging
  • Improved Performance

Demo

See Demo: Here

Install

yarn add canvas-txt

or

npm i canvas-txt

Usage

<canvas id="myCanvas" width="500" height="500"></canvas>

Bundler

import { drawText } from 'canvas-txt'

const c = document.getElementById('myCanvas')
const ctx = c.getContext('2d')

ctx.clearRect(0, 0, 500, 500)

const txt = 'Lorem ipsum dolor sit amet'

const { height } = drawText(ctx, txt, {
  x: 100,
  y: 200,
  width: 200,
  height: 200,
  fontSize: 24,
})

console.log(`Total height = ${height}`)

Node canvas

See Node js demo in ./src/node-test.ts

const { createCanvas } = require('canvas')
const { drawText } = require('canvas-txt')
const fs = require('fs')

// Or
// import { createCanvas } from 'canvas'
// import { drawText } from 'canvas-txt'
// import * as fs from 'fs'

function main() {
  const canvas = createCanvas(400, 400)
  const ctx = canvas.getContext('2d')
  const txt = 'Hello World!'

  const { height } = drawText(ctx, txt, {
    x: 100,
    y: 200,
    width: 200,
    height: 200,
    fontSize: 24,
  })

  // Convert the canvas to a buffer in PNG format
  const buffer = canvas.toBuffer('image/png')
  fs.writeFileSync('output.png', buffer)
  console.log(`Total height = ${height}`)
}

main()

CDN

See fiddle : https://jsfiddle.net/geongeorgek/n5xw3ufj/2/

<script src="//unpkg.com/canvas-txt"></script>
const { drawText, getTextHeight, splitText } = window.canvasTxt
/// ...remaining same

Properties

PropertiesDefaultDescription
widthRequiredWidth of the text box
heightRequiredHeight of the text box
xRequiredX position of the text box
yRequiredY position of the text box
debugfalseShows the border and align gravity for debugging purposes
aligncenterText align. Other possible values: left, right
vAlignmiddleText vertical align. Other possible values: top, bottom
fontArialFont family of the text
fontSize14Font size of the text in px
fontStyle''Font style, same as css font-style. Examples: italic, oblique 40deg
fontVariant''Font variant, same as css font-variant. Examples: small-caps, slashed-zero
fontWeight''Font weight, same as css font-weight. Examples: bold, 100
lineHeightnullLine height of the text, if set to null it tries to auto-detect the value
justifyfalseJustify text if true, it will insert spaces between words when necessary.

Methods

import { drawText, splitText, getTextHeight } from 'canvas-txt'
MethodDescription
drawText(ctx,text, config)To draw the text to the canvas
splitText({ ctx, text, justify, width }To split the text { ctx: CanvasRenderingContext2D, text: string, justify: boolean, width: number }
getTextHeight({ ctx, text, style })To get the height of the text { ctx: CanvasRenderingContext2D, text: string, style: string (font style we pass to ctx.font) } ctx.font docs

Keywords

FAQs

Last updated on 21 Sep 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc