19 lines
1.1 KiB
JavaScript
19 lines
1.1 KiB
JavaScript
import CanvasKitInit from 'canvaskit-wasm/full';
|
|
import fs from 'node:fs';
|
|
const CK = await CanvasKitInit();
|
|
const load = (p) => { const b = fs.readFileSync(p); return CK.Typeface.MakeFreeTypeFaceFromData(b.buffer.slice(b.byteOffset, b.byteOffset+b.byteLength)); };
|
|
const tf = load('../assets/Cousine-Regular.ttf');
|
|
const etf = load('../assets/NotoEmoji-GPS.ttf');
|
|
const s = '📍📷';
|
|
console.log('cousine glyphs', JSON.stringify(tf.getGlyphIDs(s)));
|
|
console.log('emoji glyphs ', JSON.stringify(etf.getGlyphIDs(s)));
|
|
console.log('textWidth', tf.getTextWidth?.('RECIPESCAM', 24), etf.getTextWidth?.('📍', 24));
|
|
const surf = CK.MakeSurface(200, 100); const c = surf.getCanvas();
|
|
c.clear(CK.Color(0,0,0,255));
|
|
const p = new CK.Paint(); p.setColor(CK.Color(255,255,255,255));
|
|
const f = new CK.Font(etf, 48);
|
|
c.drawText(s, 10, 60, p, f);
|
|
const px = surf.makeImageSnapshot().readPixels(0, 0, {width:200,height:100,colorType:CK.ColorType.RGBA_8888,alphaType:CK.AlphaType.Unpremul,colorSpace:CK.ColorSpace.SRGB});
|
|
let lit = 0; for (let i=0;i<px.length;i+=4) if (px[i]>128) lit++;
|
|
console.log('lit pixels in emoji draw:', lit);
|