Title: [216440] trunk
Revision
216440
Author
za...@apple.com
Date
2017-05-08 11:38:20 -0700 (Mon, 08 May 2017)

Log Message

Text overlaps on http://www.duden.de/rechtschreibung/Acre
https://bugs.webkit.org/show_bug.cgi?id=171796
<rdar://problem/31036028>

Reviewed by Simon Fraser.

Source/WebCore:

Simple line layout pre-measures space using the primary font,
even if the space glyph requires a fallback font (and even if the string does not have a space in it at all).
When this width gets cached (see WidthCache) we might end up using it later during normal line layout and
it could produce incorrect layout.
This patch removes the space width caching from Simple line layout, since Font already caches it.

Test: fast/text/simple-line-layout-fallback-space-glyph.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::createLineRuns):
* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
(WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):
* rendering/SimpleLineLayoutTextFragmentIterator.h:

LayoutTests:

* fast/text/simple-line-layout-fallback-space-glyph-expected.html: Added.
* fast/text/simple-line-layout-fallback-space-glyph.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (216439 => 216440)


--- trunk/LayoutTests/ChangeLog	2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/LayoutTests/ChangeLog	2017-05-08 18:38:20 UTC (rev 216440)
@@ -1,3 +1,14 @@
+2017-05-08  Zalan Bujtas  <za...@apple.com>
+
+        Text overlaps on http://www.duden.de/rechtschreibung/Acre
+        https://bugs.webkit.org/show_bug.cgi?id=171796
+        <rdar://problem/31036028>
+
+        Reviewed by Simon Fraser.
+
+        * fast/text/simple-line-layout-fallback-space-glyph-expected.html: Added.
+        * fast/text/simple-line-layout-fallback-space-glyph.html: Added.
+
 2017-05-08  Michael Catanzaro  <mcatanz...@igalia.com>
 
         Unreviewed, rolling out r216419.

Added: trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph-expected.html (0 => 216440)


--- trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph-expected.html	                        (rev 0)
+++ trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph-expected.html	2017-05-08 18:38:20 UTC (rev 216440)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>This tests simple line layout when space glyph needs a fallback font.</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style>
+@font-face{
+  font-family: Icons;
+  src: url("data:application/font-woff;base64,d09GRgABAAAAACMIAAsAAAAANjgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIwleU9TLzIAAAFEAAAAQwAAAFZ31mFeY21hcAAAAYgAAAHRAAAEtCqjz5ZnbHlmAAADXAAAG3wAACmcLoh/CWhlYWQAAB7YAAAAMwAAADYMlCVQaGhlYQAAHwwAAAAgAAAAJAi8A41obXR4AAAfLAAAAH0AAADYtO7/6mxvY2EAAB+sAAAAbgAAAG7wjuYKbWF4cAAAIBwAAAAfAAAAIAFQASNuYW1lAAAgPAAAAXwAAAKptA53+HBvc3QAACG4AAABTwAAAg6HyA5QeJxjYGRgYOBiMGCwY2DKSSzJY+BzcfMJYZBiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCAClZBUgAeJxjYGSOYpzAwMrAwFTFtIeBgaEHQjM+YDBkZAKKMrAyM2AFAWmuKQwOipb//zMH/c9iiGI+wSgMFGYEyQEA5SEMAwB4nN3Uu24TQRTG8f849hKbxCQshPtlDLtDuJpLQJT0kXiDVLwHr5CQKhQBS0ikQEmXJm0UISEKBEKiSe02wkSCJnxzDmWK1Ozo5293NZZn95wx0ALG5LY0oTFF0Bmho7vB7o/RsftNdnVdc1VnRXwal+MgblUb1Wa1Uxd1v15J7dRNZeql+bQwWw7DwQFo3mJc1bx1m9c6ZB553hGOoN+utZ4HGo9sPD5k5HkNrbmpJys4xjhtrf+4xgSTdDVOMMU0Jyk5xWlmOMNZzulrxZFW8X8fE/mj8e7f1ZNcP5d7IS46vV/iksu9E1+53D9x2eW+iqtOdSC+caoI8a1TbYgDpyoRt1zut2rdqW5UG87ON11eabXjVFfqllN9qQtn532nqlOvONWf1HbqBFLXqSdIpSNnz6lPSPNOHUNacO
 odZkunLmKIUz8xDE6dFb6+MHCesDdn4ALh53MDF5XvDVwijGoDl5XPDFxRvjRoB4bRwOiFKT8Y6Cm3DVxTfjRwXfnJ6IUpv5m8l8Pou9EDKX8YuKHcNXo45Z6Bm8p9A7eUf0z+jwi/2gbuKDsG7ionDdxTJgN95ZqB+8ovBu3rsP/awEPlZ4N2evg9Y2DuLylUmKAAAAB4nKV6CZhcxX3nq6p39+t3dL+ju6en72M0M+rp6VNz9Uij0Wh0DDpGCB0IkNAxGilCkpEQljgssTYYRxA5ISB/MRhDCMbExtiOl29jEsdOHLK7Bu9GIRHr7Gfn4xNfNsZrfASYfrP/et0zyAR/WZyZ7npV/6r6V72q//H7VzWDGWb+bbSf+JgYU2CYrGXyQjKVy1crtXq5ml7IlWzHgITQaiCOoEptCJVstM/U3R9pJrLVdNp7XII0rdmTtvqAakOimXtXexU0vdR62Kr7oo1PHPKyh6AZwzCIockNeBNjwdPUkGNDwqfyKFepo1opjmx0A3/5Ms9HOZV353gesZzORnmcErjXLvMq0DnEQR1iaRtmgSfehv4n5Zn12PUhgSYtng6y8TaP32uXPV6Up8fgTwUOSgujUY7uHNee4/qFOQqoxWoU5Wni8UPrOfdd6LLYW2dhUmhQoGTgqfKXX2tVU4ZXzfH193jmUYtdHNW994Y5QmOdpS9NpwMc6GTRn7SYei+9OJ7Hzksq3jx7Ft78qoX0Vtf5QCqs8fvWl/K95M28RWyt9GuvcZuF9y25zsI+CB9IXZjTNnzz1XN6/25UP8wefSDxpDf85cuttQYqB7P+ntCecptIF59fXKfUwjp98I46H2KfL9HR1PfN4NdsvvjBIrGwTieuntP7JaL6YeTkg4XnqPD+/YSpfI8SYfc8YvvNWns3/xzZCTYiw6ymc7JURC0DbNOiJeA1FEP1Uq0O/7QcBEvRg1K52ijKpVO8AP+0WK82EDUmMGObrMv80yObHh6
 e9EXBUryj2lia6tpbX3s2z4dY5ZAoq6beom4+ug6IDqfcIigo8/ojmy7STiHEEfTQC42BSZ/X3Y76pjLdaG1DXuZX0DfalKlWmWfbLVs6Nz+Lz+CXGMIwwaSR3ImTzX/EL8091qp7jBwjKSbAMBIqIEFFlmHGYNY1kMcKWeneFp3ORBKJSme4oKHf60J/gcpR3VBKseZ0rBQKaKjRdQvl4/6M/VvyXTqGIWE8iw81fw8M3GzzoeZDrXE+S/6JbGYkhnGC+WwH4oRg9ptDb6NtFy+ibW8Puf91D7rurRJa5n639Jb79OMM5QSb8R18D+NjHCYNTEq2yafBXFdqZZRM8aZdTpZqlRy5Ko8f1W1bbz5BU3z9wvNqGqT4Hjthw6f5f1pPJLeeC3u/A/ZeZGZhxEoupSK7VKOOApRVsMFOwxLlQUMWN7ma92QDUtDhBqrn+mAdqR8Baa23iWWQ2EVhAeGlEuG0mQlAiCE8tPnUZrz11q0oKgozsi/YxXPaRr8gTIUjksDqZ0RF73A28Do/YbOc2CVr4n5BRDI3I6pOttVWnApFJJEYZ0ButKizgdOESZNlpVZjGd0wtGXLyS1bTtF6PWZ1lEDwrY2IG/aL66O6LByQlGGOXx4DxVFKWrRDQ4rgtQ1HEksFRTA3XtXUN8RxK6PtphEdKXS7YM/mv82+gf+VERiZqYDlSxqwfnWUl1C20ocLCExLH86lc+mkkKIraqbpEvBVwWhtYdVgT7/7FvobLefHzDF3s3sbayHEI4Qw5kVZJIi8e9bHcSJPMGEx0BMOe9pJlHCn+zuKjG6rud9BQ8OY5fwYagkL7RAhHEswL7FEQEJz0EkkHPyXdL6st99TeJ7hGZMJg8YzTj0vWGULVdIpMDuWWYbZ1/IOSlepn863jM/flM6VJ9GNCse6r7B+jkV9JHbFLV4hU+auK7vMIfucKZTPlYdXY15h3e+zkKICe+yK2/cGuthp7Xrjess6Z7f9IXkY
 P8kYoDdm3FsrEGMYOp9L8aFfhCZD6O1waSLsrvzP4YkSmk6H3wyH0ZuhiWLYnfpaqNjSLSqzCpNt6wgYnko9z6c9TSk59Vy10gAR4/OpvAAi59TwU2tnZn53FqG/Lk+sm5lZN1H+azTz0H48u2Y15ICKnNkLs7NrBGVvETLFvYqwdgYffvAwgqwKxPd8eQGfoqsWXLTL74GZRc+24Er6eOHyZZAjMLY/+AEYW8j+ahmf8lxJJ6tTgsZ1tlxLJ6fRss52UoeP5+fn3yafAx1NMithGoapYqqH1DYDdKvBM5dPU+PbgnLcv9cAPVtYPzuYoQAuM7QlYd/Ruxw1ll5a2kA//zUV+FH31ODs+kIL4G0ZMpxYu8fy3l9b08Yq8+/gh/G3WhYta5dGve3WkAEpbxl0102Hu9rSfd2Xlj+rOEllh5N0dvqSjg9tMxzHcL+tO47+hM/3WSVp+3ai0x7xP+302UnlX51kyEk5sFYurNUV/BeMxlBRqeSzORjFdGwQ62wta6rIU79EHkxWAdVyYL/gU0vAtOFj4pd094dGLiiJPhHFdBTDvCwNLjntyqe7hiVBxiyPFUpAv6AEUUQ3WNLzPtNyL1oyyz0vWbXh6zNLlrGqyi5bkrl++PCvFuma8LCf+7kY+QNGZSIwy2XMCuYMw3CAxW1vnmATwBnBF7QRpmXkwPJmBCi336PmgNZQdwVVVGlbKgB7m4KGOWiqok6wNJ5nA471GmeDGYYelmmPgrCWGmgETLJdoyM1ULVSQOzv7N3XKBLBL2uW7XI7dpgjM6NfX7dzo3vZ1Ts0URPId99iA+zWyebTX/rbg3tu2Elm4j09Iz09sfLS3vSdD7jvvqpo8WG/Jgpa8F1U4kWAQBvXGsJklRdE7sQtYkDQ4umxo7JDxkQNCf4Aup6X3O/g3UGytDT6WytZ97WuL8vBVUP4LMc1fxBUBDQ4gJDJ48/09jYftUy8m4430vOMaabZ5Mgoa/oboCOmv
 1mUDM7HrZ0kJCCNSzJf7GNZkV3HJjDhfCYeSW7tGzs2Rtdep/EQuQK6RMBi+0BKgiCZHUwcpDMPiKyPKTN1ZogZBbuYNsrB/8A3DX+GUTWM6wxjWzo9YRiZQCAdCFyXTtNiOr06k6mk0wcrFaBDRiCBuR//5t+2XcQOYA4TChbAsk5UFtIG/FfLVWoZsXNdMfWEff6Z8+dv3b2ZrPt0V9fsk+429EdPfnTmeBsLSNA/QXUnC+4+naL6mU5hrzvIHjWvtgM1IErE9CCBAPoTA4EziWT1TU52lIsTOzqvffLOm7puDYaPdo1VOzt7zcz6R5OZWMzM4ek9CH9xYtWRQCCH0p+46/FULmNmsp2V0VVH8cdSW9IxWSDTpxwsYh6cFUexHBsg04zCbGB2MgeYW+HdqOEwbeo7KzkOBNkyF7GJ4eFVp1qh8ITqAyyCB0KgB23RQi01MIUUnSQoJrE4CmBNUP8hZCCKcStgGnqQQVq9WlzRlBEKpcJh/MkOiefkaHp8FAjGqCrUqtt3Xdq1vVoT1IYRDhuN8XRU5jgpOjZ6+Chijx4eHZv7QjTMwV84auG/hyzL0uxT0DoVCqFKyHDvoz3RbUYoHxtIj69ODcSyrTJafojypoMcWo5aLbOxgdRvJwdi+89S5nSYsxfseOfdnXEbZdzX7Hj0bDRuu6+h267m3PZh878k94J97IMCL1imSsBLUqsCBrH1oLahgCqwqU6OeoySA5ZIqJF7s9Xuraf+aPfv3xEM3bln6PpAUAuFRjfnerO94fE/O8rNrt1QHalZQxV8BPDDmgc/vnc53oSn0ESN8P49Y9jC4Wtu6p7ey1nmuhk0oCSWZ/gFTPIEd4SEAINaTJUZpzsM5oyatTrAUbCBYLHASHG2t8/UeucW9rG2uI0Q3VIbB/SE4AFXfCwYjeY7OkoDuwcGdh+nCT6uKN0DJ+74Y/fLz955YnCJomScifWHDn0CkY8fnp1aZTc/+vmvHNuz59
 hX3BeeO3rzzUefQycoi3z0v7Q5QPKsscSoDZ1cs2/fmpNDNSj0RtY3tvaPjPRvbawPu0fPbDx2bOOZMxuOH99whr4fN//u/AHyL6BXNzPfZv6e+b8IgFCwGwlpaqOFAcJreABRuE1fIo7K/dRo9xdr8K2U+0e5AeRB60q5gfL9gLbT+QGcA0hO0gMALmGnqjUgQi5HCcmUMIAo1ISPxcfB2Qlp0GRe6E/1WzSjobTQD0TedkoWBedxtjgAe94PnqI+QLyx4B+GAqQP2DWfBtGANJdGQj9EB56i0KWmwKIPZVtKZtLJlwcw6E8D5fLloId26RvmLTo1UCkVtfbJscD1NHAldwuGYNTnxxzWAVmKEqvwXJCTdfAOPpkg5CNYITjWq8s88vE8lii+1REmBgs2AAoAdVmZxVggSOQxZiWPCPA5BegZcTIiGCtQCdYEcbwP8bLelcJEMRCRfX4B4gqZDfK8ggkP3luhrIkusog0dyNH0xxjaRjlOyOaHwno5pcwi/xapDMf6TUcXXeQaWvY9Klm36Fl4yvNSl7rSWKtOub3b9mx5lPDZikWJ5sRkRCH9IAgqI5eqPZ1ywFHxFiCSWqEqJgkO2WewNb7eA5hJGDkY6N5VWaRJks+aAnviEUfi4msaWquE14S3hHDyyKe8zk8gpl3pAlWbYIgDBVZQQnI3X3VAo9F0xCEgA6zljFyz+D49Oa4E+lwujIZ5OPYG2/EmPOhTKbL6Yg4tNL9lEZMye+PxyDoiMmxbh3HeoxBkJ48EPJdSk+qJ9GKeb6MG4C/dfCZO+mJgYfAAYvkaOQHdqNSwCkVC2Yc20655iGsOoR+WKCmuv3l0yqVYgrdwcx43wLOU+hOYhh9RlFUPNwpKFiUorXebbnG+vXrGzmUM4xJ4S5xNW/zudUD4VSCRPz+sJgJ+wqlohTJICGsqhGcSoQHSxtnZmauqWFDlGUxHJV1OdDd2TVeCIUK410DvYHgtZs2XctHuN6
 B60Y7usc6tLipaVan7vdHouEoTjhRYK13WppmxrXo8t7I6HX1mxoZ3DW417NZs+RO0OkKc4S5wHwNViGdAi0AzaiCZoyiMnVKoAItGmhKmpqsEVT2NMAsO2VKzKeqQAX16EGW6Wm/DR3AT0HdKKLrNgJ8tcXgG8gQNEKTNGnH0y0v7dWn+z33VgNVa7m3oKel77lCbwjHhoyn4dSX4wvPEyITCC9F2Q/qEiTkACFBUCy/DDSQSZl8jbCaKmm8zHM8K+mEfAa0RBI5wMa8JisaKCDIMvITUrz94L6hkZGhfQdv3zoVSGd1x1KVACF+ttA3Mrxv5vaZ7deVK5XyddtfppklXT7QS1bXM8GQLUoT6CVSJdivgO4/wGFQW1BTOjuQfsSdh4LiB/2uEgH7QyZEwpd4GcMfIjC8BhqF4D3YV+FJNZNsIPBBH6Pj/pROK6729qqWpGZjXzCH7l93+8y+4ZG5by1OhmZmVpwqq8nImlIuEOw1LNLp4XVvr7fDXgcBr6cBIa5kpmG/YxRft47TAR/UkyXbgUCabmbQ8E7Wk0YQYBPQYb+86KbKvZenwVn5/WVS1u2Y0wyAiU3Y6Gd2TVv7fU74Ev+XV4DiTj8gi+g+Ks3ubaKMPrOQu5oqi/hOvRJq3umxIGfgYeu57xv8l4S5L+PhhPXG3B+iHwmyLGRo4+2y6D0heeC9bPtciL0NcDIH2JjhrKRRNkBE+T7UCnTz3skk+AUPXLG3vXvfanLFlMfdR3mVP3vlEFrNwRORlZLof0uQhUmyY+7H+Bs/VWSJtuHPvnEYTfC0xbhoy55NmSUGrLEGaHzGi+vp6nqrBqtbBjSeNNKeDuSdEvVBGgLhL4B2gGQDNrVonQUZUJYe5AVSIOK25djUB1Egm1+82agu5hoIv0HDyOaoHgrp33wIH/9UXpD/TuY/78QMFmSaI0pCifl9wm6OE7F4804WUiyu5VUjbMR9xOdHLPGDbUgn5ATL82w4TNOk
 uppsdoy5GcqWPGw4G+e+QSZHJfGr4MZ4tggSzfGqHBC4btGkie1TBA6zbJFAvS+ZKPFsN8ubXlodojjY/Rey1ztPtJgw00kjlCy9s6HoN11vI1YaHNLYgySNpJOugklOtrByObkQ+1GLUm5BZ9RxTXHKcp77ZSp+bNW9955YPvbf4/FdzRP4/jONgL9Z9wcCfvSmIRbSrIzl56F4Ee3uznfVvvLV1bXyMrdrpOF+jzhzb5DDTo02ntvqDxySRS4RYxEnHQr4ybX+AD0Bnd8H+G4zsxz0Zh9zG3Mf8wfMl5g/Z/4H3WfPHrZ0qQXrvB2l+ARCD0Adi9ZL4D1R8LwJNV30AAZiYairCwbfOio38nY+B6YxBmCjxangoZn/D0q2xagmUO7/IU5k/vjtfdEw8evxILHTqcMfueVIImdysOk8gT02c/Hf+uGRVMbkgnHdT8rF2z9y9HQxEgxEiqePzZzs1xKh3uTtr99eTgSqJw9ObdVNNmKs2TC1Wo+wpr5+s0fp0DdOrpgGStCYXrdps9emTTH16eafenxO7U2cPnZri9GB34gR2WxLAo9Yyz93IRjiMCdxlgUJPYhE75W4UJAc8VsAkCQbOrCsINkbLAkLcz/iZN62ZRIViGw1f+LDkYSJZRkFkxGQKR/ugKJPxrToe17xaheKX2gxiDq/KQPAKvNvQ0z7NNixTcxu5hjImy0QAN3UaOc8UJ2r1lqONrfwrLcyFQAzoxi+qIEdy7Pj7a6A0+nJbT1Yy9scoGjIA6tcHmrA+CyWaUuBfNpWLsrLs81mz0ZNBfcFcIwN+ENU1wVZAdQG3lP2yxFwciIvSxzP+zjT1C0BPb2k4H/E7Kq4HZrCqSsx0WPcUyyymi9gXkTToooVzEvus4CrBokooGlBJT7IUArBq+NLXCFTRMO92ZTmFzgVzFLEGrZ42yf5zYbJhWB8vzpmsaakCD5DNuWAKMPsuOVdLj+WQ4aWDwBC8wdFQ5CRwme89
 Pl2XkGySGO3eRdim5+TrYCDDjLnmItglfpQAcNCeIqbrwLQz7Up1BA7ZjsG6IdFwlCX13Bb7z3sUvfCD4qDTC94oHcH3j/VtAYYsDiOoWABQ1UMNotaDoFfsPY5QpvRUONXq4mlFv253iX6UDa+ocyzQ0aQqNrN/nzPEm2pX4wlUH7tgzMfX3VNtGJ1R8Hva9pQR68VHal/9MZ7xhMI67oVsUTFL9wsy4mcJoosLw5uX7pMiyuFkKLwRCr2C+je4tkLE7pf6dSmn15W64jzCrRUglxX6h0tLkSCPT2fWKEpakxbMh3p8OuC8qAxGKCDle3Y5C6fQspqrqdLP2lYWNPyPiG0Krd7+wv3H1yexmYwF1LpG+wM5U1EOgZvvPuZNRvNrF8PGRAV+U4IYTHWqWQMQ9dmNy/tFDhfV0BiWSwPDgoWfnFghS/Mx2Iq31lc2Xh8vRYTWL9v98vui4JPG7q7WM9EhFhMEbRQOr4ppyU8f3wrHieT4I9DTPTf+uMgvXyi11B18Mvof3cPDna793QND3d9M9bVNdjd/WP3ejI52D33M0ojSvfg3JZYdzTWFXsI/27zsMf/bYCZ9N4pwQwwTL11hFmyOds7yGmdz4KTpldIMdKm1gukRQWizdqBS40dDfjAXpvGOtVEytfvVgOKpJHtj9+1HmWRpW9UbSTs/ew/nFRNS0OfRvIrp/YupX0axzUnoN79dQWZ6jod8ND6O5/Yodmm/9Srj+0RgbhRN8WTr7g/87DQX7GfwD8H7JeDlWiLaqLlk+jJUVtEEwvnERVkcOwdUtjpSY2fdbNnx9M9TkiSZSnk9KTHz6F/ODue6nHCktxcg2q4vK4rq/k5SeL8WrZr3VZ36/sJ7j+ilY+3747P4ecAhxa8ewCeHgYs/IaD3rkGTS8cgJiqQQpsvVJzqHNCz9pR3wsXvN9jXHhBjpl/V8xzEiyMYus6K4ZUkzU1icsX8fnmY/RG9oXWDz1ekE33z7vXQl
 CoK7qiRDNRRVVUzQa8vbZ9bvMK+Rz+Z28+65jDH2ZOziLV0+uKt6TeKeNVlXl6iQK13vkDTVrHUR/ijR64aUoQYMZWwrekUFjiS1imJgrX3PDg+ZNAh+7hsDV+DV47YYXZALFtVRBOnv8Qy9B97YUEsVXbp0uxHTM7YpLugxJJPrj17ldLUGH6FVUtP/yFh8uaH5y/3wR+pHzJu9OZJZ8jfpD/JL2nKCDQpQY97qZXrelUATfYGHZMAUK0cxdevgAfFOsdNF/ce3rjhZnlePjw+SfOHx5Gq1600NkDF/BDLz3Mf8q92NltvbiqMfvg4+ePDLJj+x+aOr33Rat9T3mSPObpm0mlB9ybCpa0lkULP8aIoWzrqpfeJFBcaWrIcqg5LtmXzJiJQ5EQ2u+eswbtIctCZ+wt6BF/x9kNMxcuzCQmwpL0+cO4e11Skzth7QKJABv5hXvONEfMIRudqW/5X3Z23Q3owssPYlPnA8INdwzj8FJTXoyvngR86POQbY7ZyuyBmKNMTQxoPSxMdgHLdiKIAyi6RRTQDiFrCUpXQS5y+WI/fOipGPIgb7qFe4doWE2d9Xug9yq2aMdPVdNUaYLN/ZbafFs1D5KOZ9wG+hZ8a5Z6wF2OH/gkRJjsJ1keI8k9q5r3q5al3m+q4IOseyHffGmRi2JGLStqjl2mhMvoercTIET8gGp98RUJAe7/JIQU2FTdpyzVvUm19tFm+ywVPaZa7j3QEbq31uM5EiD0diLO9DFDEG8eaOnWVUfctvPvlINgmOkPG5IlEKsyDX94gfN+ttG243ljMQyimLpML+rp7WDsA2PC8+2IEWDApKuIIkYvY1F073ung+We41n0z7JYq2TdYraCqrTdF/NSr/0Vp1vKPwux6p+4L3px6govTv3gvLsXG803FVOWTbxvBYcQNw0jNt8sjI8VcNCbxC4rimLmLpnh55vzL3Ea/imjMgHGZsaYa5gdDDOKFnbcSkLEl6WCkq6
 XCT2xbB0jV8sLTyoTLZFoCxZFa7ydpYIB6wdCks5flZ+yEb7V1nFHc5uh+PAvmq/jSPORwx2bvmksDa+MVxqV+EkvndId7+cXD+v2cdVBK1iV/JJeXD6ymLxOk6/9PoKW16jKx9DH3Lf+zFWCVrwSX/w4+q2Ojv4bbZkLqu5wuPiOnXCchH2x9Wjb34PsftAbxdObOmCvxeNy0BeqB4tn51nQmjq8qRcntl4r6AkHhbE5sjVajEaLy4rRYbfSOxLtX0aL6Ck3egt+9Sa/Pfe9YdZS76A3CTf+FeRwDLD+Uywe9PpA397hkZ4FFk+hqRXBr/q1cCrUfMavqQr6nGS19fwgyDW1eQYTY5YxU8x2iixqBaRi26HLTGEbB0DbMts/PuI8qbZMFdxuNe09W/7FyELMmARTlQfAHqc/2wK4JwQXOjaQjYKSimVbZPW3JEUBLCu7E04KJYqpFD6QCXcnSgk0lehPILQkkkLorqHJ5tzESB6gHdtVPVntYlX2R6m+FHzwKq+7LeL282DK+UkolQr9xEn53N+OZO4KJXDGvgseKOXclYmgj/wwdmRs7EhsjcgSYW0otFYQRPepVh/aCJbj/wEYIvlneJxjYGRgYADibutXPPH8Nl8ZuJlfAEUYrrB9uA2j///895Y1j/kEkMvBwAQSBQCAVQ7JAHicY2BkYGAO+p/FwMCa9//nvzrWPAagCAowAwCW/wZReJxjfsHAwJgKwUxNCJrJGpVmjgTS14H0EgYGlqtA+gmQ/wgizvISQjPPgKrTA9IL/v8HqWV+8f8fy20g+wXELGZBoHohkDwDA2seWP43WLwOalYZkOYD4hSo/IL/P0FmMLlA9bZD3bMAascCiJtAcsy9//+ypELYAMxXK2QAAAAAAAAAAEQAbgCWAMAA6gE0AX4ByAISAnoCiAKsArwC1gMQA7AECARIBGoEpgTiBUAFeAXKBogG9gcWB2AICAhSCMIKKgqsC6IMHAxUDOQN
 Qg6ADzAQHBBMEKIQ5hEuEcwSBBJSEtoTbBPuFEYUzgAAeJxjYGRgYDBjFGcQYAABJiDmAkIGhv9gPgMAEcUBdQB4nHWSy07CQBiFz3AzQnShiRs3s9FATMolkQUrDBEWLkxYsHFVSmlLSodMBxJewHfwAXwtn8XT6UR0YZuZfuf8l/knKYArfEGgfB65ShaoU5VcwRlGjqv0nxzXyFPHdbTw4rhBtXDcxAPeHLdwjXd2ELVzqg0+HAs0RdVxBZfiwnGV/q3jGvnOcR03ouu4Qf/ZcRML8eq4hXvxOVG7o06i2Mj2pCMHvf5QLo9S0UoyP5X+3sRK53Is1yozYZoqL1DbJFBZPg+jfepry3ZbhDpPVCb7Xs/qWZiF2jfhquiYH6KBMWu51morp66X3Gm1CQPjxcbsRt3u7zMwgcIOR2gkiBDDQKJNt8PvAD30MSQtmSGZWWYlyOAjpeNjz4rYRnLqMdeaKqMbMiMlewi4b1kV2EiOOWMRK1PW61/+iRbM0NYptOQUHmc5xWeMZzbHtyetfmbMcWDvAV3DSYpptD1d8gf5O5fkvYvYhk5A37O3N3RH6PL95x7fXxJ45XicbU9rU4MwEGRbSiloa+v7/X4blar15zABUmAaCIZQ9N8Lln7ojHeZyeYuu7entbRFWNr/MUELbejowEAXJnqwYGMN6+hjgA0MMcImtrCNHexiD/s4wCGOcIwTnOIM57jAJa5wjRvc4g73eMAjnkDwjBe8wsEYb3jHByb41PQ4nQqLpiFnhLOpMhewyOwFkHEYqaYfiDIdLmHhNYzBSqXIRivvP/4qqZbpUSlFmRO/hLvMti9CuEbGUj/mupgRp5NHVDK49lchVKMFt+XWp+tR6YuAmVPqM0+IWYdmGWd1R5WxUkxWsMcSQQI2j3mP12Sv4F5VNgPhE8W+leVXAxThcVoTddclTnUbtRxx+nkmqR95TFJVpKGZCC+u7Dttmef117E9F7xImoUaXGRGz
 ipnkVHKapGokrOVpHlEWJKpn8Y7TQMp4kDTfgE2yIhGAA==");
+}
+body {
+  font-family: Icons, sans-serif;
+}
+</style>
+<script>
+if (internal.settings)
+    internals.settings.setSimpleLineLayoutEnabled(false);
+</script>
+</head>
+<body>0
+<div style="display: inline-block;">
+1<b> </b>
+<span>2</span>
+3 <div> 4 5 6 7 8 9 0 1 2 </div></div>
+<div>❞<div>3 4<span>5</span></div></div>
+</body>
+</html>

Added: trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph.html (0 => 216440)


--- trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph.html	                        (rev 0)
+++ trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph.html	2017-05-08 18:38:20 UTC (rev 216440)
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>This tests simple line layout when space glyph needs a fallback font.</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style>
+@font-face{
+  font-family: Icons;
+  src: url("data:application/font-woff;base64,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");
+}
+body {
+  font-family: Icons, sans-serif;
+}
+</style>
+</head>
+<body>0
+<div style="display: inline-block;">
+1<b> </b>
+<span>2</span>
+3 <div> 4 5 6 7 8 9 0 1 2 </div></div>
+<div>❞<div>3 4<span>5</span></div></div>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (216439 => 216440)


--- trunk/Source/WebCore/ChangeLog	2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/ChangeLog	2017-05-08 18:38:20 UTC (rev 216440)
@@ -1,3 +1,27 @@
+2017-05-08  Zalan Bujtas  <za...@apple.com>
+
+        Text overlaps on http://www.duden.de/rechtschreibung/Acre
+        https://bugs.webkit.org/show_bug.cgi?id=171796
+        <rdar://problem/31036028>
+
+        Reviewed by Simon Fraser.
+
+        Simple line layout pre-measures space using the primary font,
+        even if the space glyph requires a fallback font (and even if the string does not have a space in it at all).
+        When this width gets cached (see WidthCache) we might end up using it later during normal line layout and
+        it could produce incorrect layout.
+        This patch removes the space width caching from Simple line layout, since Font already caches it.
+
+        Test: fast/text/simple-line-layout-fallback-space-glyph.html
+
+        * rendering/SimpleLineLayout.cpp:
+        (WebCore::SimpleLineLayout::createLineRuns):
+        * rendering/SimpleLineLayoutTextFragmentIterator.cpp:
+        (WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
+        (WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):
+        (WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):
+        * rendering/SimpleLineLayoutTextFragmentIterator.h:
+
 2017-05-08  Chris Dumez  <cdu...@apple.com>
 
         Refactor ImageInputType::width() / height() for clarity

Modified: trunk/Source/WebCore/rendering/SimpleLineLayout.cpp (216439 => 216440)


--- trunk/Source/WebCore/rendering/SimpleLineLayout.cpp	2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/rendering/SimpleLineLayout.cpp	2017-05-08 18:38:20 UTC (rev 216440)
@@ -626,7 +626,7 @@
     // It does not work properly with non-collapsed leading tabs when font is enlarged.
     auto adjustedAvailableWidth = availableWidth - style.hyphenStringWidth;
     if (!line.isEmpty())
-        adjustedAvailableWidth += style.spaceWidth;
+        adjustedAvailableWidth += style.font.spaceWidth();
     if (!enoughWidthForHyphenation(adjustedAvailableWidth, style.font.pixelSize()))
         return std::nullopt;
 
@@ -769,7 +769,7 @@
 static bool createLineRuns(LineState& line, const LineState& previousLine, Layout::RunVector& runs, TextFragmentIterator& textFragmentIterator)
 {
     const auto& style = textFragmentIterator.style();
-    line.setCollapedWhitespaceWidth(style.spaceWidth + style.wordSpacing);
+    line.setCollapedWhitespaceWidth(style.font.spaceWidth() + style.wordSpacing);
     bool lineCanBeWrapped = style.wrapLines || style.breakFirstWordOnOverflow || style.breakAnyWordOnOverflow;
     auto fragment = firstFragment(textFragmentIterator, line, previousLine, runs);
     while (fragment.type() != TextFragmentIterator::TextFragment::ContentEnd) {

Modified: trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp (216439 => 216440)


--- trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp	2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp	2017-05-08 18:38:20 UTC (rev 216440)
@@ -45,7 +45,6 @@
     , breakFirstWordOnOverflow(breakAnyWordOnOverflow || (style.breakWords() && (wrapLines || preserveNewline)))
     , breakNBSP(wrapLines && style.nbspMode() == SPACE)
     , keepAllWordsForCJK(style.wordBreak() == KeepAllWordBreak)
-    , spaceWidth(useSimplifiedTextMeasuring ? font.widthForSimpleText(StringView(&space, 1)) : font.width(TextRun(StringView(&space, 1))))
     , wordSpacing(font.wordSpacing())
     , tabWidth(collapseWhitespace ? 0 : style.tabSize())
     , shouldHyphenate(style.hyphens() == HyphensAuto && canHyphenate(style.locale()))
@@ -228,7 +227,7 @@
     if (measureText)
         width = this->textWidth(currentPosition, nextPosition, xPosition);
     else if (startPosition < nextPosition)
-        width = m_style.spaceWidth + m_style.wordSpacing;
+        width = m_style.font.spaceWidth() + m_style.wordSpacing;
     return nextPosition;
 }
 
@@ -259,7 +258,7 @@
         width = m_style.font.width(run);
     }
     if (measureWithEndSpace)
-        width -= (m_style.spaceWidth + m_style.wordSpacing);
+        width -= (m_style.font.spaceWidth() + m_style.wordSpacing);
     return std::max<float>(0, width);
 }
 

Modified: trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h (216439 => 216440)


--- trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h	2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h	2017-05-08 18:38:20 UTC (rev 216440)
@@ -115,7 +115,6 @@
         bool breakFirstWordOnOverflow;
         bool breakNBSP;
         bool keepAllWordsForCJK;
-        float spaceWidth;
         float wordSpacing;
         unsigned tabWidth;
         bool shouldHyphenate;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to