Лучший ответ, который я мог придумать, это использовать javascript для обнаружения браузера, а затем вычислить letter-spacing
для использования вместо textLength
.
Кажется, это решает проблему в Edge. IE немного из-за того, что он не получает ширину точно.
if (/MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /MSIE 10/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) {
var textCircle = document.querySelectorAll('svg');
for(i=0; i < textCircle.length; i++) {
circleText(i);
};
}
function circleText(i) {
var str = textCircle[i].querySelector('textPath').textContent;
var test = textCircle[i].querySelector('text').cloneNode(false);
textCircle[i].appendChild(test);
test.appendChild(document.createTextNode(str));
test.removeAttribute('textLength');
var w = test.getBBox().width;
textCircle[i].removeChild(test);
var dif = textCircle[i].querySelector('text').getAttribute('textLength') - w;
textCircle[i].querySelector('text').style.letterSpacing = (dif / str.length) / 21 + 'em';
textCircle[i].querySelector('text').removeAttribute('textLength');
};