Можно ли в CreateJS добавить неразрывный пробел?
Я пытаюсь добавить неразрывный пробел при использовании CreateJS (или EaselJS). Но это не работает. Например: мне не нужен перенос строки между "текстом" и "!" Пример:
this.copy_01 = new cjs.Text("This is a text\u00A0!", "bold 60px 'Times New Roman'", "#FFFFFF");
\u00A0
обычно работает в JavaScript. Но теперь он только добавляет пробел, но не неразрывный.
Кто-нибудь знает, можно ли добавить неразрывный пробел в CreateJS?
2 ответа
Перенос строк в EaselJS вручную реализован в Canvas, поэтому он не соответствует набору правил JavaScript. Вам придется вручную добавить для него поддержку. Сожалею!
В настоящее время я пробую обходной путь. Кажется, у меня работает, но я не очень доволен этим.
function nonBreak(textObj) {
var origString = textObj.text;
var compStr = origString.replace(/(.|[\r\n])*?<nbr>.*?($|\s)/, "");
compStr = origString.replace(compStr, "");
compStr1 = compStr.replace(/<nbr>/, " ");
compStr2 = compStr.replace(/<nbr>/, "\n");
textObj.text = compStr1;
var sizeStr1 = textObj.getMetrics().height;
textObj.text = compStr2;
sizeStr2 = textObj.getMetrics().height;
textObj.text = origString;
if (sizeStr1 == sizeStr2) {
newString1 = origString.replace(/\s?[^ ]*<nbr>.*/, "");
newString2 = origString.replace(newString1 + " ", "");
newString1 = newString1 + "\n";
newString2 = newString2.replace(/<nbr>/, " ");
newString = newString1 + newString2;
textObj.text = newString;
} else {
newString = origString.replace(/<nbr>/, " ");
textObj.text = newString;
}
}
var origString = this.copy_01.text;
var textCopy = this.copy_01;
var countBR = origString.match(/<nbr>/g);
if (countBR !== null) {
for (i = 0; i < countBR.length; i++) {
if (countBR[i] == "<nbr>") {
nonBreak(textCopy);
}
}
}