SVG: использование getComputedTextLength для обтекания текста

Я пытаюсь обернуть текст, создав текстовую строку и используя getComputedTextLength , чтобы узнать, когда текст выходит за рамки допустимая ширина. Однако я не могу найти простого способа постепенного наращивания текста, который будет работать с getComputedTextLength .

Общая идея такова:

  str = svgDocument.createTextNode(myText[word]); // first word on new line
  word++;
  obj = text.cloneNode(true);                     // new text element for this line
  obj.appendChild(str);
  svgDocument.documentElement.appendChild(obj);   // reqd for getComputedTextLength?
  for( ; word < myText.length; word++) {
     next_width = obj.getComputedTextLength();    // get current line width
     if(next_width >= extent)
        break;
     str += " ";                                  // add next word to the line
     str += myText[word];
     ...
  }

Кто-нибудь может сказать мне, как заставить это работать? Предположительно str скопирован, а не указан в obj , но я также попытался поместить obj.removeChild (str) и obj.appendChild (str ) в цикле, но appendChild дает сбой. Я также пробовал различные комбинации перемещения по documentElement.appendChild , удаления obj и повторного добавления его и т. Д.

12
задан Drew Gaynor 25 January 2019 в 15:04
поделиться