87,907
社区成员
发帖
与我相关
我的任务
分享
function getLines(text, maxWidth) {
var returns = text.split("\n");
var lines = [];
var lastPhrase = "";
function splitWord() {
var width = measureText(lastPhrase).width;
var posA = 0;
var posZ = 0;
if (width > maxWidth) {
for (var n = 0, length = lastPhrase.length; n < length; n ++) {
var width = measureText(lastPhrase.substr(posA, posZ ++)).width;
if (width > maxWidth) {
lines.push(lastPhrase.substr(posA, posZ - 2));
posA = n - 1;
posZ = 2;
}
}
return lastPhrase.substr(posA, posZ + 2);
}
};
for (var n = 0; n < returns.length; n++) {
if (lastPhrase) lines.push(lastPhrase);
var phrase = returns[n];
var spaces = phrase.split(" ");
var lastPhrase = "";
for (var i = 0; i < spaces.length; i++) {
var measure = measureText(lastPhrase + " " + spaces[i]).width;
if (measure < maxWidth) {
lastPhrase += ((lastPhrase ? " " : "") + spaces[i]);
} else {
if (measure > maxWidth) {
var split = splitWord();
if (split) {
lastPhrase = split + " " + spaces[i];
} else {
lines.push(lastPhrase);
lastPhrase = spaces[i];
}
}
}
if (i == spaces.length - 1) {
lines.push(lastPhrase);
lastPhrase = "";
break;
}
}
}
return lines;
};