D3 curved path text

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<svg width="99%" height="99%">
    <g class="circular"></g>
    <g class="labels">
        <defs></defs>
    </g>
</svg>

CSS

.axis path, .axis line {
    fill: none;
    stroke: #000;
    shape-rendering: crispEdges;
  }

  .bar {
    fill: steelblue;
  }

JavaScript

var labels = ["Unknown","Oracle Corporation","ASUSTeK COMPUTER INC.","NVIDIA Corporation","Conduit","Google","Conduit Ltd.","Adobe Systems Incorporated","Citrix Systems, Inc.","Elaborate Bytes AG", "Test", "RealNetworks, Inc."];
var data = [168.58627289999998, 369.1733422499999, 11.629962644232126, 0,6.693271,0,0, 137.65407624538355, 0,4.1210934976853135,25.88816131828518, 0,0, 161.8076961547985,0,0,64.30386096666666,0,0, 34.71585812382221,0,7.301610919743407,0,0,13.226308424131263,0,0,0, 11.4285714,0,0,5.094964976938216,0,0,7.121814964097166,0];

var margin = { top: 40, right: 20, bottom: 20, left: 20 };
var innerRadius = 20;

$(window).resize(draw);

function draw() {
    
	var	height = Math.min($('svg').height(), $('svg').width()),
		usableHeight = (((height - (margin.top + margin.bottom)) / 2) - innerRadius),
        numSegments = 3,
        segmentHeight,
        offset,
        labelStart = 0.01,
		svg,
		mainGroup,
		wedges,
        labelGroup,
		ir = function (d, i) {
				    return innerRadius + Math.floor(i / numSegments) * segmentHeight;
				},
        or = function (d, i) {
                    return innerRadius + segmentHeight + Math.floor(i / numSegments) * segmentHeight;
                },
        sa = function (d, i) {
                    return (i * 2 * Math.PI) / numSegments;
                },
        ea = function (d, i) {
                    return ((i + 1) * 2 * Math.PI) / numSegments;
                };
    
    svg = d3.select('svg');
	segmentHeight = Math.floor(Math.max(usableHeight, 100) / labels.length)
	offset = innerRadius + labels.length * segmentHeight;
    
    mainGroup = svg.select("g.circular");
    mainGroup.attr("transform", "translate(" + parseInt(margin.left + offset, 10) + "," + parseInt(margin.top + offset, 10) + ")");
    
    var wedges = mainGroup.selectAll("path").data(data);
    
    wedges.attr("d", d3.svg.arc().innerRadius(ir).outerRadius(or).startAngle(sa).endAngle(ea));
    
    wedges.enter().append("path")
   ...