如何将数字转换为unicode粗体版本?

psy*_*ave 0 javascript unicode

我想在javascript确认弹出窗口中加粗一些字符。由于您不能在那里使用html / css,并用专用的unicode字符扩展了下划线的解决方案,因此我认为我可以简单地用加粗的unicode对应字符替换每个数字,并且它们的长度为5位数(范围从1D7CE到,1D7D7),则​​附带以下代码:

function bold(number) {
  return number.
    replace(/0/, String.fromCharCode(0x1D7CE)).
    replace(/1/, String.fromCharCode(0x1D7CF)).
    replace(/2/, String.fromCharCode(0x1D7D0)).
    replace(/3/, String.fromCharCode(0x1D7D1)).
    replace(/4/, String.fromCharCode(0x1D7D2)).
    replace(/5/, String.fromCharCode(0x1D7D3)).
    replace(/6/, String.fromCharCode(0x1D7D4)).
    replace(/7/, String.fromCharCode(0x1D7D5)).
    replace(/8/, String.fromCharCode(0x1D7D6)).
    replace(/9/, String.fromCharCode(0x1D7D7));
}
Run Code Online (Sandbox Code Playgroud)

但是我必须误会一些东西,例如1?(D7CE)代替。

什么是可行的解决方案?

Pat*_*rts 5

试试这个简化的实现:

function bold(number) {
  return number.replace(/\d/g, (c) => String.fromCodePoint(0x1D79E + c.charCodeAt(0)));
}

console.log(bold('abc 0123456789 def'));
Run Code Online (Sandbox Code Playgroud)

不同于String.fromCodePoint(),它使用支持全部unicode 。String.fromCharCode()

这种简化利用了以下事实:数字和粗体数字都占据了10个unicode点的连续运行,相隔距离为0x1D79E