我想在HTML画布中用指数显示数字。由于context.fillText(...)不支持HTML标记,我以为我会尝试使用unicode。结果并不完全符合我的预期,因为数字1-3的行为与其他上标数字的行为不同。我的代码如下:
// Only supports integers and will round any non-integers
function superscriptNumber(intNumber) {
var text = '';
var number = Math.round(intNumber);
var supers = '⁰¹²³⁴⁵⁶⁷⁸⁹'.split('');
if (intNumber === 0) {
text = supers[0] ;
} else {
while (Math.floor(number) > 0) {
digit = number % 10;
number = Math.floor(number / 10);
text = supers[digit] + text;
}
}
return text;
}
然后,如果我做
var text = '10 '+ superscriptNumber(1265);
ctx.fillText(text, x, y);
然后我看到1& 2在同一级别和6& 5略微上标给他们。我怀疑他可能是字体,这对他们的处理方式略有不同(1,2,3由于某种原因不在同一个unicode范围内)?有没有办法改进我的代码,以确保字体的一致性?