We are using Fabric JS (4.1.0) and noticed that special characters like ! or @ are not pulling through to the text object in the canvas. They are simply showing as space characters but normal alphabet characters come through as expected.
I've collated the below script to grab the unicode of a string and return it back as a unicode string. Running the function below returns the exact unicode data we expect however, when passing the variable of the unicode string to it, the u2702 text simply shows, however if I pass the same value in "hardcoded" like the commented out part it renders as expected.
Why is this happening and how can we fix it?
function unicodeEscape(str) {
return str.replace(/[sS]/g, function(character) {
var escape = character.charCodeAt().toString(16),
longhand = escape.length > 2;
longhand = true;
return '\' + (longhand ? 'u' : 'x') + ('0000' + escape).slice(longhand ? -4 : -2);
});
}
canvas.clear();
var encodedVal = unicodeEscape('?');
console.log(encodedVal);
text = new fabric.Text(encodedVal);
canvas.add(text);
// Function call that works perfectly and renders the element:
// text = new fabric.Text("u2702");
// canvas.add(text);
question from:
https://stackoverflow.com/questions/65945453/fabric-js-unicode-issue 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…