This wonderful answer details how to include icons from FontAwesome in a HTML canvas. Adapting the code for icon font from Material Design doesn't work, however. All the code is the same except for replacing FontAwesome values for Material Design values.
Code below.
Codepen: https://codepen.io/Crashalot/pen/dyyEPWV
1) How do you incorporate icons from Material Design in HTML canvas?
2) How do you incorporate icons from any icon font (e.g., https://github.com/framework7io/framework7-icons)?
var FontAwesome = function () {
return new Promise(function (done, failed) {
var me = {},
FACache = {};
function find (name) {
var elm = document.createElement('i');
elm.className = 'fa fa-' + name;
elm.style.display = 'none';
document.body.appendChild(elm);
var content = window.getComputedStyle(
elm, ':before'
).getPropertyValue('content')
document.body.removeChild(elm);
return content;
};
me.get = function (name) {
if (!!FACache[name]) return FACache[name];
var c = find(name)[1];
FACache[name] = c;
return c;
};
(function() {
var l = document.createElement('link'); l.rel = 'stylesheet';
l.onload = function () {
document.fonts.load('10px Material Icons')
.then(function (e) { done(me); })
.catch(failed);
}
l.href = '//fonts.googleapis.com/icon?family=Material+Icons';
var h = document.getElementsByTagName('head')[0]; h.parentNode.insertBefore(l, h);
}());
});
};
FontAwesome()
.then(function (fa) {
var canvas = document.getElementById('mycanvas');
const x = canvas.width / 2;
const y = canvas.height / 2;
// All set, and ready to render!
var ctx = canvas.getContext('2d');
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.font = '400px Material Icons';
ctx.fillText(fa.get("airplanemode_active"), x, y);
});
from How to render icon fonts on HTML canvas and Material Design icon fonts in particular?
No comments:
Post a Comment