| 
					
				 | 
			
			
				@@ -56,14 +56,20 @@ let rptPrintHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let canvas = document.getElementById("chkCanvas"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let pixelSize = getPixelSize(pagesData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let isHtoV = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (pixelSize[0] > pixelSize[1]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // changeHtoV(pagesData, pixelSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // isHtoV = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let idx = 0; idx < pagesData.items.length; idx++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let page = pagesData.items[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let svgPageArr = [], pixelSize = getPixelSize(pagesData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let svgPageArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             svgPageArr.push("<svg width='" + pixelSize[0] + "' height='" + pixelSize[1] + "'>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // let adjustY = 0.5 * ((idx + 1) % 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let adjustY = 0.5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let cell of page.cells) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                svgPageArr.push(buildCellSvg(cell, fonts, styles, controls, page[JV.PROP_PAGE_MERGE_BORDER], pagesData[JV.BAND_PROP_MERGE_BAND], offsetX, offsetY, adjustY, canvas)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                svgPageArr.push(buildCellSvg(cell, fonts, styles, controls, page[JV.PROP_PAGE_MERGE_BORDER], pagesData[JV.BAND_PROP_MERGE_BAND], offsetX, offsetY, adjustY, canvas, isHtoV)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             svgPageArr.push("</svg>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rst.push(svgPageArr); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,6 +78,36 @@ let rptPrintHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function changeHtoV(pagesData, pixelSize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //坐标从横向变纵向 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (pixelSize[0] > pixelSize[1]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let tmpP = pixelSize[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pixelSize[0] = pixelSize[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pixelSize[1] = tmpP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let offsetX = pixelSize[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // let RotAngF = (90 * Math.PI / 180); //这里默认就是90度旋转 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let sinVal = 1; //sin 90度 = 1 不用算了 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let cosVal = 0; //cos 90度 = 0 不用算了 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let page of pagesData.items) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let cell of page.cells) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rotateCellArea(cell[JV.PROP_AREA], sinVal, cosVal, offsetX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function rotateCellArea(area, sinVal, cosVal, offsetX) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let Nx, Ny; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Nx = (area[JV.PROP_LEFT] * cosVal - area[JV.PROP_TOP] * sinVal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Ny = (area[JV.PROP_TOP] * cosVal + area[JV.PROP_LEFT] * sinVal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.PROP_LEFT] = Nx + offsetX; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.PROP_TOP] = Ny; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Nx = (area[JV.PROP_RIGHT] * cosVal - area[JV.PROP_BOTTOM] * sinVal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Ny = (area[JV.PROP_BOTTOM] * cosVal + area[JV.PROP_RIGHT] * sinVal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.PROP_RIGHT] = Nx + offsetX; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.PROP_BOTTOM] = Ny; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function getActualBorderStyle(cell, styles, mergeBorderStyle, pageBorderArea, borderStr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let rst = styles[cell[JV.PROP_STYLE]][borderStr]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (mergeBorderStyle) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -92,7 +128,7 @@ function getActualBorderStyle(cell, styles, mergeBorderStyle, pageBorderArea, bo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBorder, offsetX, offsetY, adjustY, canvas) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBorder, offsetX, offsetY, adjustY, canvas, isHtoV) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let style = styles[cell[JV.PROP_STYLE]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let mergeBandStyle = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -142,12 +178,129 @@ function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (typeof control === 'string') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         control = controls[cell[JV.PROP_CONTROL]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    buildText(rst, cell, font, control, offsetX, offsetY, adjustY, canvas); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buildText(rst, cell, font, control, offsetX, offsetY, adjustY, canvas, isHtoV); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return rst.join(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canvas) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function buildTextHtoV(destRst, cell, font, control, offsetX, offsetY, adjustY, canvas, isHtoV) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let orgFontHeight = parseInt(font[JV.FONT_PROPS[JV.FONT_PROP_IDX_HEIGHT]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let fontWeight = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_BOLD]] === 'T')?"bold":"normal"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let fontStyle = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_ITALIC]] === 'T')?"italic":"normal"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let fontUnderline = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_UNDERLINE]] === 'T')?"underline":"normal"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let left = parseInt(cell[JV.PROP_AREA][JV.PROP_LEFT]) + offsetX + 0.5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        right = parseInt(cell[JV.PROP_AREA][JV.PROP_RIGHT]) + offsetX + 0.5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        top = parseInt(cell[JV.PROP_AREA][JV.PROP_TOP]) + offsetY + adjustY, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bottom = parseInt(cell[JV.PROP_AREA][JV.PROP_BOTTOM]) + offsetY + adjustY, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        x = left, y = top, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        text_anchor = "start" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let value = cell[JV.PROP_VALUE]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!(value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        value = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let values = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (typeof value === "string") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        values = value.split("|"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        values = [value]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // let stepHeight = (parseInt(cell[JV.PROP_AREA][JV.PROP_BOTTOM]) - parseInt(cell[JV.PROP_AREA][JV.PROP_TOP])) / values.length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (control) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]] === "left") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text_anchor = "start"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            x = left + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]] === "right") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text_anchor = "end"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            x = right - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]] === "center") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text_anchor = "middle"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            x = Math.round((left + right) / 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let area = [0,0,0,0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.IDX_TOP] = top; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.IDX_BOTTOM] = bottom; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.IDX_LEFT] = left; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    area[JV.IDX_RIGHT] = right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let height = bottom - top; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let ctx = canvas.getContext("2d"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let inner_draw_text = function (textValue) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let dftFontHeight = orgFontHeight; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        function inner_build_text(innerTxt, innerArea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let innerDftFontHeight = (dftFontHeight * 3 / 4); //SVG的字体与canvas的字体大小的切换, 不用考虑取整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (control) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "top") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    y = innerArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "bottom") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    y = innerArea[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.IDX_BOTTOM]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "center") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    y = Math.round((innerArea[JV.IDX_TOP] + innerArea[JV.IDX_BOTTOM] + innerDftFontHeight) / 2 ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                y = innerArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (font[JV.PROP_NAME] === "宋体") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                y--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            destRst.push("<text style='fill:black;font-family:" + font[JV.PROP_NAME] + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ";font-weight:" + fontWeight + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ";font-style:" + fontStyle + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ";text-decoration:" + fontUnderline + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // ";text-decoration:normal" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ";font-size:" + innerDftFontHeight + "pt' x='" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                x +"' y='" + y + "' text-anchor='" + text_anchor + "' xml:space='preserve'>" + innerTxt + "</text>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let actLines = private_splitString(textValue, (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT]), ctx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (actLines.length === 1 || (control && control.Shrink !== 'T')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            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)?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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let vidx = 0; vidx < values.length; vidx++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        area[JV.IDX_TOP] = top + vidx * (height / values.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        area[JV.IDX_BOTTOM] = top + (vidx + 1) * (height / values.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        inner_draw_text(values[vidx]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canvas, isHtoV) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let orgFontHeight = parseInt(font[JV.FONT_PROPS[JV.FONT_PROP_IDX_HEIGHT]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let fontWeight = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_BOLD]] === 'T')?"bold":"normal"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let fontStyle = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_ITALIC]] === 'T')?"italic":"normal"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -169,7 +322,7 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         values = [value]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let stepHeight = (parseInt(cell[JV.PROP_AREA][JV.PROP_BOTTOM]) - parseInt(cell[JV.PROP_AREA][JV.PROP_TOP])) / values.length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // let stepHeight = (parseInt(cell[JV.PROP_AREA][JV.PROP_BOTTOM]) - parseInt(cell[JV.PROP_AREA][JV.PROP_TOP])) / values.length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (control) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]] === "left") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             text_anchor = "start"; 
			 |