|
@@ -420,36 +420,31 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv
|
|
|
inner_build_text(textValue, area);
|
|
|
} else {
|
|
|
while (true) {
|
|
|
- if (dftFontHeight > 6) {
|
|
|
- let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + 4));
|
|
|
- lines = (lines === 0 || (control.Shrink === 'T' && control.ShrinkFirst === 'T'))?1:lines;
|
|
|
- actLines = private_splitString(textValue, (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_RIGHT]), ctx);
|
|
|
- if (lines >= actLines.length) {
|
|
|
- let aH = dftFontHeight + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + 4;
|
|
|
- if ((aH * actLines.length) < (area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) && (control && control.Vertical !== 'top')) {
|
|
|
- if (control.Vertical === 'bottom') {
|
|
|
- area[JV.IDX_TOP] = area[JV.IDX_BOTTOM] - (aH * actLines.length);
|
|
|
- } else {
|
|
|
- area[JV.IDX_TOP] = (area[JV.IDX_TOP] + area[JV.IDX_BOTTOM]) / 2 - (aH * actLines.length) / 2
|
|
|
- area[JV.IDX_BOTTOM] = area[JV.IDX_TOP] + (aH * actLines.length);
|
|
|
- }
|
|
|
- }
|
|
|
- let newArea = [], baseTop = area[JV.IDX_TOP];
|
|
|
- for (let ai = 0; ai < area.length; ai++) {
|
|
|
- newArea[ai] = area[ai];
|
|
|
- }
|
|
|
- for (let lIdx = 0; lIdx < actLines.length; lIdx++) {
|
|
|
- newArea[JV.IDX_TOP] = Math.round(aH * lIdx + baseTop);
|
|
|
- newArea[JV.IDX_BOTTOM] = Math.round(aH * (lIdx + 1) + baseTop);
|
|
|
- inner_build_text(actLines[lIdx], newArea);
|
|
|
+ let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + 4));
|
|
|
+ lines = (lines === 0 || (control.Shrink === 'T' && control.ShrinkFirst === 'T'))?1:lines;
|
|
|
+ actLines = private_splitString(textValue, (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_RIGHT]), ctx);
|
|
|
+ if (actLines.length > lines && dftFontHeight >= 6) {
|
|
|
+ dftFontHeight--;
|
|
|
+ ctx.font = ((font[JV.FONT_PROPS[JV.FONT_PROP_IDX_BOLD]] === 'T')?"bold ":"") + ((font[JV.FONT_PROPS[JV.FONT_PROP_IDX_ITALIC]] === 'T')?"italic":"") + dftFontHeight + "px " + font[JV.PROP_NAME];
|
|
|
+ } else {
|
|
|
+ let aH = dftFontHeight + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + 4;
|
|
|
+ if ((aH * actLines.length) < (area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) && (control && control.Vertical !== 'top')) {
|
|
|
+ if (control.Vertical === 'bottom') {
|
|
|
+ area[JV.IDX_TOP] = area[JV.IDX_BOTTOM] - (aH * actLines.length);
|
|
|
+ } else {
|
|
|
+ area[JV.IDX_TOP] = (area[JV.IDX_TOP] + area[JV.IDX_BOTTOM]) / 2 - (aH * actLines.length) / 2
|
|
|
+ area[JV.IDX_BOTTOM] = area[JV.IDX_TOP] + (aH * actLines.length);
|
|
|
}
|
|
|
- break;
|
|
|
- } else {
|
|
|
- dftFontHeight--;
|
|
|
- ctx.font = ((font[JV.FONT_PROPS[JV.FONT_PROP_IDX_BOLD]] === 'T')?"bold ":"") + ((font[JV.FONT_PROPS[JV.FONT_PROP_IDX_ITALIC]] === 'T')?"italic":"") + dftFontHeight + "px " + font[JV.PROP_NAME];
|
|
|
}
|
|
|
- } else {
|
|
|
- inner_build_text(textValue, area);
|
|
|
+ let newArea = [], baseTop = area[JV.IDX_TOP];
|
|
|
+ for (let ai = 0; ai < area.length; ai++) {
|
|
|
+ newArea[ai] = area[ai];
|
|
|
+ }
|
|
|
+ for (let lIdx = 0; lIdx < actLines.length; lIdx++) {
|
|
|
+ newArea[JV.IDX_TOP] = Math.round(aH * lIdx + baseTop);
|
|
|
+ newArea[JV.IDX_BOTTOM] = Math.round(aH * (lIdx + 1) + baseTop);
|
|
|
+ inner_build_text(actLines[lIdx], newArea);
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
}
|