UNPKG

mojibaka

Version:

✨ Browser emoji support detection toolkit

41 lines (33 loc) 4.11 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareCanvasContext = prepareCanvasContext; exports.canDrawCharacter = canDrawCharacter; exports.getCharacterWidth = getCharacterWidth; var DRAW_SIZE = 32; function newContext() { var canvas = document.createElement('canvas'); canvas.width = canvas.height = DRAW_SIZE * 2; return canvas.getContext('2d'); } function prepareCanvasContext(context) { if (!context) { context = newContext(); context.fillStyle = "#000"; context.font = DRAW_SIZE + 'px "Apple Color Emoji","Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Arial'; } else { context.clearRect(0, 0, DRAW_SIZE * 2, DRAW_SIZE * 2); } return context; } function canDrawCharacter(character, context) { context = prepareCanvasContext(context); context.fillText(character, 0, DRAW_SIZE); return context.getImageData(DRAW_SIZE / 2 + 2, DRAW_SIZE / 2, 1, 1).data[0] !== 0; } function getCharacterWidth(character, context) { context = prepareCanvasContext(context); return context.measureText(character).width; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9jYW52YXMuanMiXSwibmFtZXMiOlsicHJlcGFyZUNhbnZhc0NvbnRleHQiLCJjYW5EcmF3Q2hhcmFjdGVyIiwiZ2V0Q2hhcmFjdGVyV2lkdGgiLCJEUkFXX1NJWkUiLCJuZXdDb250ZXh0IiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJnZXRDb250ZXh0IiwiY29udGV4dCIsImZpbGxTdHlsZSIsImZvbnQiLCJjbGVhclJlY3QiLCJjaGFyYWN0ZXIiLCJmaWxsVGV4dCIsImdldEltYWdlRGF0YSIsImRhdGEiLCJtZWFzdXJlVGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFRZ0JBLG9CLEdBQUFBLG9CO1FBWUFDLGdCLEdBQUFBLGdCO1FBT0FDLGlCLEdBQUFBLGlCO0FBM0JoQixJQUFNQyxZQUFZLEVBQWxCOztBQUVBLFNBQVNDLFVBQVQsR0FBc0I7QUFDcEIsTUFBTUMsU0FBU0MsU0FBU0MsYUFBVCxDQUF1QixRQUF2QixDQUFmO0FBQ0FGLFNBQU9HLEtBQVAsR0FBZUgsT0FBT0ksTUFBUCxHQUFnQk4sWUFBWSxDQUEzQztBQUNBLFNBQU9FLE9BQU9LLFVBQVAsQ0FBa0IsSUFBbEIsQ0FBUDtBQUNEOztBQUVNLFNBQVNWLG9CQUFULENBQThCVyxPQUE5QixFQUF1QztBQUM1QyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxjQUFVUCxZQUFWO0FBQ0FPLFlBQVFDLFNBQVIsR0FBb0IsTUFBcEI7QUFDQUQsWUFBUUUsSUFBUixHQUFrQlYsU0FBbEI7QUFDRCxHQUpELE1BSU87QUFDTFEsWUFBUUcsU0FBUixDQUFrQixDQUFsQixFQUFxQixDQUFyQixFQUF3QlgsWUFBWSxDQUFwQyxFQUF1Q0EsWUFBWSxDQUFuRDtBQUNEOztBQUVELFNBQU9RLE9BQVA7QUFDRDs7QUFFTSxTQUFTVixnQkFBVCxDQUEwQmMsU0FBMUIsRUFBcUNKLE9BQXJDLEVBQThDO0FBQ25EQSxZQUFVWCxxQkFBcUJXLE9BQXJCLENBQVY7QUFDQUEsVUFBUUssUUFBUixDQUFpQkQsU0FBakIsRUFBNEIsQ0FBNUIsRUFBK0JaLFNBQS9COztBQUVBLFNBQU9RLFFBQVFNLFlBQVIsQ0FBcUJkLFlBQVksQ0FBWixHQUFnQixDQUFyQyxFQUF3Q0EsWUFBWSxDQUFwRCxFQUF1RCxDQUF2RCxFQUEwRCxDQUExRCxFQUE2RGUsSUFBN0QsQ0FBa0UsQ0FBbEUsTUFBeUUsQ0FBaEY7QUFDRDs7QUFFTSxTQUFTaEIsaUJBQVQsQ0FBMkJhLFNBQTNCLEVBQXNDSixPQUF0QyxFQUErQztBQUNwREEsWUFBVVgscUJBQXFCVyxPQUFyQixDQUFWOztBQUVBLFNBQU9BLFFBQVFRLFdBQVIsQ0FBb0JKLFNBQXBCLEVBQStCUCxLQUF0QztBQUNEIiwiZmlsZSI6ImNhbnZhcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERSQVdfU0laRSA9IDMyO1xuXG5mdW5jdGlvbiBuZXdDb250ZXh0KCkge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgY2FudmFzLndpZHRoID0gY2FudmFzLmhlaWdodCA9IERSQVdfU0laRSAqIDI7XG4gIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVDYW52YXNDb250ZXh0KGNvbnRleHQpIHtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgY29udGV4dCA9IG5ld0NvbnRleHQoKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IFwiIzAwMFwiO1xuICAgIGNvbnRleHQuZm9udCA9IGAke0RSQVdfU0laRX1weCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsXCJTZWdvZSBVSVwiLFwiU2Vnb2UgVUkgRW1vamlcIixcIlNlZ29lIFVJIFN5bWJvbFwiLEFyaWFsYDtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBEUkFXX1NJWkUgKiAyLCBEUkFXX1NJWkUgKiAyKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuRHJhd0NoYXJhY3RlcihjaGFyYWN0ZXIsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IHByZXBhcmVDYW52YXNDb250ZXh0KGNvbnRleHQpO1xuICBjb250ZXh0LmZpbGxUZXh0KGNoYXJhY3RlciwgMCwgRFJBV19TSVpFKTtcblxuICByZXR1cm4gY29udGV4dC5nZXRJbWFnZURhdGEoRFJBV19TSVpFIC8gMiArIDIsIERSQVdfU0laRSAvIDIsIDEsIDEpLmRhdGFbMF0gIT09IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFyYWN0ZXJXaWR0aChjaGFyYWN0ZXIsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IHByZXBhcmVDYW52YXNDb250ZXh0KGNvbnRleHQpO1xuXG4gIHJldHVybiBjb250ZXh0Lm1lYXN1cmVUZXh0KGNoYXJhY3Rlcikud2lkdGg7XG59XG4iXX0=