我正在使用D3并希望添加希腊字母delta。
这是我的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, initial-scale=1">
这就是问题所在: 'bars'是一个变量,它存储选择的类'.bar'并将'g'附加到它们。
var text = bars.append('text')
.attr('class', 'delta')
.text(function(d) {
// Rounding to one decimal place
var delta = Math.abs(d.benchmark - d.completes);
return Math.round(delta * 10) / 10 + "%";
})
.attr('x', 0)
.attr('dy', '-0.25em')
.attr('style', 'text-anchor: left; vertical-align: center')
;
在这一特定行中,我遇到了问题:
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 Δ
不确定如何继续。如果重要,字体是sans-serif
我对SVG文本不太熟悉,但我想做的就是写希腊字母delta。
答案 0 :(得分:3)
有两种解决方案可行(因为HTML显然没有):
return Math.round(delta * 10) / 10 + "% \u0394";
这非常可靠,但不太可读。
return Math.round(delta * 10) / 10 + "% Δ";
这取决于文件编码的正确处理(在源代码管理中,在部署中,在Web服务器中),因此它可读但很脆弱。
妥协可能是
var DeltaLetter = '\u0394';
...
return Math.round(delta * 10) / 10 + "% " + DeltaLetter;
答案 1 :(得分:2)
为什么不使用unicode? strong>
Δ
编码为unicode 0394 hex 可以使用INCSKAPE
<强> [EDIT2] 强>
<?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>
ΑΒΓΔ
在十六进制视图中编码为CE,91,CE,92,CE,93,CE,94
ΑΒΓΔ
在十六进制视图中编码为91,03,92,03,93,03,94,03
答案 2 :(得分:1)
这有效:
return Math.round(delta * 10) / 10 + "% \u0394";