<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>311246</bug_id>
          
          <creation_ts>2026-04-01 00:20:28 -0700</creation_ts>
          <short_desc>Ligatures affect layout for 0 font-size</short_desc>
          <delta_ts>2026-04-01 16:53:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Safari 26</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/58928</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BrowserCompat, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex">alexander</reporter>
          <assigned_to name="Ahmad Saleem">ahmad.saleem792</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>karlcow</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2195804</commentid>
    <comment_count>0</comment_count>
    <who name="Alex">alexander</who>
    <bug_when>2026-04-01 00:20:28 -0700</bug_when>
    <thetext>Here&apos;s an example of the issue:

1. I have an icon-only button.
2. I have text inside that button for accessibility tools.
3. I hide text visually using font-size: 0.
4. I use Google Manrope font that has ligatures, for this example, for double t – &quot;tt&quot;
5. The ligatures affect layout even though font size is 0, see the Codepen below:

https://codepen.io/waterplea/pen/OPRZyex

A button with &quot;User&quot; inside is displayed correctly, a button with &quot;Settings&quot; inside is off-center in Safari due to double t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195812</commentid>
    <comment_count>1</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2026-04-01 00:54:36 -0700</bug_when>
    <thetext>I am able to reproduce this bug on Safari Technology Preview 240, where in second button `gear` icon is not centered like first one and is bit shifted on left side. I am not able to reproduce this bug on Chrome Canary 148.0.7766.0 (Official Build) canary (arm64) .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195813</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-04-01 00:54:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/173840866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195815</commentid>
    <comment_count>3</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2026-04-01 01:04:37 -0700</bug_when>
    <thetext>First bit in:

void ComplexTextController::collectComplexTextRuns()

We have the early return where if computedSize of font is `0`, we early return.

if (!m_end || !m_fontCascade-&gt;size())
        return;

So it might fallback to Simple Text Run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195816</commentid>
    <comment_count>4</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2026-04-01 01:05:56 -0700</bug_when>
    <thetext>We might be missing same guard in SimpleTextRun and need to skip this bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195830</commentid>
    <comment_count>5</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2026-04-01 01:51:33 -0700</bug_when>
    <thetext>This fixes it:

Source/WebCore/platform/graphics/coretext/FontCoreText.cpp

Font::applyTransforms

if (!platformData().size())
        return makeGlyphBufferAdvance();

Before  auto handler = ^(CFRange range, CGGl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195831</commentid>
    <comment_count>6</comment_count>
      <attachid>478873</attachid>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-01 01:59:47 -0700</bug_when>
    <thetext>Created attachment 478873
wpt-testcase

Working locally with https://wpt.live/
To be removed before uploading with the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195833</commentid>
    <comment_count>7</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2026-04-01 02:17:29 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/61819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196033</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-01 15:23:11 -0700</bug_when>
    <thetext>Committed 310394@main (36d29c6355ca): &lt;https://commits.webkit.org/310394@main&gt;

Reviewed commits have been landed. Closing PR #61819 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196076</commentid>
    <comment_count>9</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2026-04-01 16:53:24 -0700</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/58928</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>478873</attachid>
            <date>2026-04-01 01:59:47 -0700</date>
            <delta_ts>2026-04-01 01:59:47 -0700</delta_ts>
            <desc>wpt-testcase</desc>
            <filename>font-size-zero-ligature-001.html</filename>
            <type>text/html</type>
            <size>2481</size>
            <attacher name="Karl Dubost">karlcow</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPHRpdGxlPmZvbnQtc2l6ZTog
MCB3aXRoIGxpZ2F0dXJlcyBzaG91bGQgbm90IGFmZmVjdCBsYXlvdXQ8L3RpdGxlPgo8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMtNC8jZm9u
dC1zaXplLXByb3AiPgo8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTEyNDYiPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly93cHQubGl2
ZS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6
Ly93cHQubGl2ZS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgo8c3R5
bGU+CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAiTGF0b0xpZ2EiOwogIHNyYzogdXJsKCJo
dHRwczovL3dwdC5saXZlL2ZvbnRzL0xhdG8tTWVkaXVtLUxpZ2EudHRmIik7Cn0KCi5jb250YWlu
ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LWZhbWlseTogIkxhdG9MaWdhIiwg
c2VyaWY7Cn0KCi56ZXJvIHsKICBmb250LXNpemU6IDA7Cn0KPC9zdHlsZT4KPGJvZHk+CjxkaXYg
aWQ9ImxvZyI+PC9kaXY+Cgo8IS0tIFJlZmVyZW5jZTogZW1wdHkgY29udGFpbmVyIC0tPgo8ZGl2
IGNsYXNzPSJjb250YWluZXIiIGlkPSJlbXB0eSI+PC9kaXY+Cgo8IS0tIFRleHQgd2l0aG91dCBs
aWdhdHVyZSwgZm9udC1zaXplOiAwIC0tPgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPjxzcGFuIGNs
YXNzPSJ6ZXJvIiBpZD0ibm8tbGlnYSI+YWI8L3NwYW4+PC9kaXY+Cgo8IS0tIFRleHQgd2l0aCBm
aSBsaWdhdHVyZSwgZm9udC1zaXplOiAwIC0tPgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPjxzcGFu
IGNsYXNzPSJ6ZXJvIiBpZD0id2l0aC1saWdhIj5maTwvc3Bhbj48L2Rpdj4KCjwhLS0gVGV4dCB3
aXRoIG11bHRpcGxlIGxpZ2F0dXJlIHBhaXJzLCBmb250LXNpemU6IDAgLS0+CjxkaXYgY2xhc3M9
ImNvbnRhaW5lciI+PHNwYW4gY2xhc3M9Inplcm8iIGlkPSJtdWx0aS1saWdhIj5mZmkgZmZsPC9z
cGFuPjwvZGl2PgoKPHNjcmlwdD4Kc2V0dXAoeyBleHBsaWNpdF9kb25lOiB0cnVlIH0pOwoKZG9j
dW1lbnQuZm9udHMucmVhZHkudGhlbigoKSA9PiB7CiAgY29uc3QgZW1wdHkgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZW1wdHkiKTsKICBjb25zdCBub0xpZ2EgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibm8tbGlnYSIpOwogIGNvbnN0IHdpdGhMaWdhID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIndpdGgtbGlnYSIpOwogIGNvbnN0IG11bHRpTGlnYSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJtdWx0aS1saWdhIik7CgogIHRlc3QoKCkgPT4gewogICAgYXNzZXJ0X2VxdWFscyhu
b0xpZ2Eub2Zmc2V0V2lkdGgsIDAsCiAgICAgICJUZXh0IHdpdGhvdXQgbGlnYXR1cmUgYXQgZm9u
dC1zaXplOiAwIHNob3VsZCBoYXZlIHplcm8gd2lkdGgiKTsKICB9LCAiZm9udC1zaXplOiAwIHdp
dGhvdXQgbGlnYXR1cmUgcHJvZHVjZXMgemVybyB3aWR0aCIpOwoKICB0ZXN0KCgpID0+IHsKICAg
IGFzc2VydF9lcXVhbHMod2l0aExpZ2Eub2Zmc2V0V2lkdGgsIDAsCiAgICAgICJUZXh0IHdpdGgg
ZmkgbGlnYXR1cmUgYXQgZm9udC1zaXplOiAwIHNob3VsZCBoYXZlIHplcm8gd2lkdGgiKTsKICB9
LCAiZm9udC1zaXplOiAwIHdpdGggZmkgbGlnYXR1cmUgcHJvZHVjZXMgemVybyB3aWR0aCIpOwoK
ICB0ZXN0KCgpID0+IHsKICAgIGFzc2VydF9lcXVhbHMobXVsdGlMaWdhLm9mZnNldFdpZHRoLCAw
LAogICAgICAiVGV4dCB3aXRoIG11bHRpcGxlIGxpZ2F0dXJlcyBhdCBmb250LXNpemU6IDAgc2hv
dWxkIGhhdmUgemVybyB3aWR0aCIpOwogIH0sICJmb250LXNpemU6IDAgd2l0aCBtdWx0aXBsZSBs
aWdhdHVyZXMgcHJvZHVjZXMgemVybyB3aWR0aCIpOwoKICB0ZXN0KCgpID0+IHsKICAgIGNvbnN0
IGVtcHR5V2lkdGggPSBlbXB0eS5wYXJlbnRFbGVtZW50ID8gZW1wdHkub2Zmc2V0V2lkdGggOiAw
OwogICAgY29uc3Qgbm9MaWdhUGFyZW50V2lkdGggPSBub0xpZ2EuY2xvc2VzdCgiLmNvbnRhaW5l
ciIpLm9mZnNldFdpZHRoOwogICAgY29uc3Qgd2l0aExpZ2FQYXJlbnRXaWR0aCA9IHdpdGhMaWdh
LmNsb3Nlc3QoIi5jb250YWluZXIiKS5vZmZzZXRXaWR0aDsKICAgIGFzc2VydF9lcXVhbHMobm9M
aWdhUGFyZW50V2lkdGgsIHdpdGhMaWdhUGFyZW50V2lkdGgsCiAgICAgICJDb250YWluZXJzIHdp
dGggZm9udC1zaXplOiAwIHRleHQgc2hvdWxkIGJlIHRoZSBzYW1lIHdpZHRoIHJlZ2FyZGxlc3Mg
b2YgbGlnYXR1cmVzIik7CiAgfSwgIkxpZ2F0dXJlIHRleHQgYW5kIG5vbi1saWdhdHVyZSB0ZXh0
IGF0IGZvbnQtc2l6ZTogMCBwcm9kdWNlIGlkZW50aWNhbCBjb250YWluZXIgd2lkdGgiKTsKCiAg
ZG9uZSgpOwp9KTsKPC9zY3JpcHQ+CjwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>