
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
canvas-multiline-emoji
Advanced tools
Reduces font-size and auto create new lines based on rect-size with emoji support.
Draws text in a rectangle on a canvas, on multiple lines.
To install use:
npm i canvas-multiline-emoji
Exports a single function that draws text on a canvas, breaking it into multiple lines if needed.
Also shrinks the font size to make in fit in the defined rectangle.
Returns the font size used
const fontSize = await drawText(canvas2Dcontext, text, options);
import fs from 'node:fs';
import { Canvas } from 'canvas';
import { drawText } from 'canvas-multiline-emoji';
const canvas = new Canvas(500, 500);
const ctx = canvas.getContext('2d');
const text = 'The old rusted farm equipment 🤪 surrounded the house predicting its demise. He uses onomatopoeia as a weapon of mental destruction. 👍';
const options = {
font: 'OpenSans',
verbose: true,
rect: {
x: 50,
y: 50,
width: canvas.width - (50 * 2),
height: canvas.height - (50 * 2),
},
minFontSize: 10,
maxFontSize: 40,
lineHeight: 1.2
};
const test = async () => {
/* --- background --- */
ctx.fillStyle = '#4a4aad';
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
/* --- font color --- */
ctx.fillStyle = '#ceceec';
const fontSizeUsed = await drawText(ctx, text, options);
console.log('Font size used: ', fontSizeUsed);
const buffer = canvas.toBuffer();
fs.writeFileSync('test.png', buffer);
};
test();
The options
type is defined as MultilineOptions
and (almost) all its keys are optional.
Parameter | Description | Default |
---|---|---|
font | Font name / family to use | sans-serif |
rect | Rectangle object with x, y, width, height. Text will be drawn inside this. | Canvas Size |
minFontSize | Minimum font size to use. | 8 |
maxFontSize | Maximum font size to use. | 100 |
lineHeight | Multiplicator for line height | 1 |
stroke | Defines whether strokeText will be used instead of fillText | false |
verbose | Defines whether if should print debug info | false |
logFunction | Custome function for logging. | console.log |
This module requires some kind of Canvas object.
Inspired on: https://gitlab.com/davideblasutto/canvas-multiline-text
FAQs
Reduces font-size and auto create new lines based on rect-size with emoji support.
The npm package canvas-multiline-emoji receives a total of 0 weekly downloads. As such, canvas-multiline-emoji popularity was classified as not popular.
We found that canvas-multiline-emoji demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
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.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.