Javascript 如何在D3 svg.text对象中显示希腊字母?
我用的是D3,想加上希腊字母delta 这在my HTML的标记中:Javascript 如何在D3 svg.text对象中显示希腊字母?,javascript,svg,d3.js,Javascript,Svg,D3.js,我用的是D3,想加上希腊字母delta 这在my HTML的标记中: <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initi
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
在这一行中,我遇到了一些问题:
return Math.round(delta * 10) / 10 + "%";
我尝试过的事情:
return Math.round(delta * 10) / 10 + "%Δ"; //Displays ? instead of Δ
return Math.round(delta * 10) / 10 + "%Δ" // Displays the string literal Δ
return Math.round(delta * 10) / 10 + "%Δ;" // Displays the string literal Δ
我真的不知道该怎么做。如果重要的话,字体是无衬线的
我不太熟悉SVG文本,但我只想写希腊字母delta
- UTF8或UTF16
- 并将
编码为unicode 0394十六进制Δ
- 如果您没有能够做到这一点的工具,可以使用十六进制编辑器
- 这是我在谷歌找到的第一个有效链接
<?xml version="1.0" encoding="UTF-16"?>
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" stroke="none" stroke-width="1px" transform="matrix(1,0,0,1,0,0" >
<text x="5" y="20" font-family="Verdana" font-size="16" fill="blue">
Greek alphabet test
<tspan x="5" dy="+20">
ΑΒΓΔ
</tspan>
</text>
</svg>
希腊字母测验
ΑΒΓΔ
- 在UTF-8中,
在十六进制视图中编码为ΒΓΔ
CE,91,CE,92,CE,93,CE,94
- 在UTF-16中,
在十六进制视图中编码为ΒΓΔ
91,03,92,03,93,03,94,03
- 不要忘记,在UTF-16中,每个字符是一个16位(2字节)李>
- 在UTF-8中,除希腊字母外,所有字母均为1字节/字符
- 希腊字符本身是2字节/字符
return Math.round(delta * 10) / 10 + "% \u0394";
有两种解决方案可行(因为HTML显然不可行):
- 用Javascript编码增量,如下所示:
return Math.round(delta*10)/10+“%\u0394”代码>
这是非常可靠的,但不太可读
- 对文件本身中的增量进行编码:
返回数学四舍五入(δ*10)/10+%Δ代码>
这取决于始终正确处理文件编码(在源代码管理、部署和web服务器中),因此它是可读的,但很脆弱
妥协可能是
const DeltaLetter = '\u0394';
...
return Math.round(delta * 10) / 10 + "% " + DeltaLetter;
你试过“\u0394”吗?@Malvolio谢谢!那很有效@Malvolio(+1)我忘了这个页面将文本转换为自己的unicode格式。因此,我修改了示例,添加了UTF-8和UTF-16的十六进制视图(最终在UTF-8中也可以使用它),并编写了一个
const DeltaLetter = '\u0394';
...
return Math.round(delta * 10) / 10 + "% " + DeltaLetter;