【发布时间】:2013-10-17 04:57:39
【问题描述】:
我创建了一个 D3 饼图,并将文本标签旋转为径向向外流动。这在 IE 上看起来不错,但不幸的是在 Chrome 中,文本看起来很糟糕。 CSS webkit 字体平滑技巧似乎不起作用。我猜这需要在 SVG/D3 领域完成......? Chrome 就是不想合作。
完整的代码在这个小提琴: http://jsfiddle.net/mn5bT/2/
我以这种方式附加文本标签:
g.append("text")
.attr("transform", function(d) {
var c = arc.centroid(d),
x = c[0],
y = c[1],
h = Math.sqrt(x*x + y*y); // pythagorean theorem
flipAngle = d.endAngle > Math.PI;
angleOffset = flipAngle? 90:-90;
return "translate(" + (x/h * radius) + ',' + (y/h * radius) + ")" +
"rotate(" + (angleOffset + 180*(d.endAngle + d.startAngle)/2/Math.PI) + ")";
})
.attr("dy", ".35em")
.attr("text-anchor", function(d) {
// are we past the center?
return (d.endAngle + d.startAngle)/2 > Math.PI ? "end" : "start";
})
.text(function(d) { return d.data.value.campus; });
【问题讨论】:
-
这是在 Windows 上吗?在 linux Chrome v31.0.1650.8-dev 上,jsfiddle.net/mn5bT/2 中的文本标签被平滑地绘制(使用抗锯齿)。不过,基线对齐有些不稳定(单独的问题)。
-
是的,我看到的文本锯齿是在 Win8 上运行的 Chrome 30.0.1599.69m。还尝试了 32.0.1664.3 dev-m Aura,锯齿仍然存在。看起来像 Chrome/Win 特定的错误。
-
我认为crbug.com/25541 可能适合你。
-
哇,这是一个长期运行的线程!看起来修复程序已作为“运行时启用功能”放入,但我还没有弄清楚是什么标志启用它。 chrome://flags/#enable-experimental-webkit-feaures
标签: javascript css google-chrome svg d3.js