Canvas renders fonts differently than span so have to use  span to measure

Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/82682482
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/82682482
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/82682482

Branch: refs/heads/tlf
Commit: 82682482e6a592e551d06dcd8ab239937614ca67
Parents: 3172982
Author: Alex Harui <[email protected]>
Authored: Thu Jun 15 22:09:56 2017 -0700
Committer: Alex Harui <[email protected]>
Committed: Fri Jun 16 22:08:44 2017 -0700

----------------------------------------------------------------------
 .../flex/org/apache/flex/text/html/TextLine.as  | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/82682482/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
index ba74a85..1bbdf65 100644
--- 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
+++ 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextLine.as
@@ -366,15 +366,17 @@ package org.apache.flex.text.html
                                else
                                {
                                        var s:String = 
element.firstChild.textContent;
-                               var canvas:HTMLCanvasElement = 
document.createElement("canvas") as HTMLCanvasElement;
-                               canvas.style.height = "100%";
-                               canvas.style.width = "100%";
-                               element.appendChild(canvas);
-                    var ctx:CanvasRenderingContext2D = canvas.getContext("2d") 
as CanvasRenderingContext2D;
-
-                                       var w1:Number = (atomIndex == 0) ? 0 : 
ctx.measureText(s.substring(0, atomIndex - 1)).width;
-                                       w = ctx.measureText(s.substring(0, 
atomIndex)).width;
-                                       element.removeChild(canvas);
+                               var span:HTMLSpanElement = 
document.createElement("span") as HTMLSpanElement;
+                               element.appendChild(span);
+                    var w1:Number = 0;
+                    if (atomIndex > 0)
+                    {
+                        span.innerHTML = s.substring(0, atomIndex);
+                                       w1 = span.getClientRects()[0].width;
+                    }
+                    span.innerHTML = s.substring(0, atomIndex + 1);
+                    w = span.getClientRects()[0].width;
+                                       element.removeChild(span);
                                        return new Rectangle(w1, 1.2 - 
_textBlock.content.elementFormat.fontSize, w - w1, 1.2);
                                }
                        }

Reply via email to