Brooooooklyn / canvas

High performance skia binding to Node.js. Zero system dependencies and pure npm packages without any postinstall scripts nor node-gyp.
https://vercel.skia.rs
MIT License
1.66k stars 71 forks source link

Emoji modifiers are not combined #827

Open aquaductape opened 1 month ago

aquaductape commented 1 month ago

Emoji modifiers are not combined.

const { writeFileSync } = require("fs");
const { join } = require("path");

const { createCanvas, GlobalFonts } = require("@napi-rs/canvas");

console.log(__dirname);
GlobalFonts.registerFromPath(
  join(__dirname, "./public/fonts/Apple/AppleColorEmoji@2x.ttf"),
  "Apple Emoji"
);
const canvas = createCanvas(760, 360);
const ctx = canvas.getContext("2d");

ctx.font = "50px Apple Emoji";
ctx.strokeText("💃🏿", 50, 100);
ctx.strokeText("👩🏿‍🦳", 50, 180);
ctx.strokeText("🫱🏻‍🫲🏾", 50, 260);

const b = canvas.toBuffer("image/png");

writeFileSync(join(__dirname, "draw-emoji.png"), b);

Expecting this outcome where the emoji combines with modifiers

Screenshot 2024-05-07 at 1 00 53 PM

Ended up with emojis and modifiers symbols

Screenshot 2024-05-07 at 12 59 09 PM