<?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>297455</bug_id>
          
          <creation_ts>2025-08-15 07:17:12 -0700</creation_ts>
          <short_desc>CSS dominant-baseline property should be inherited per SVG2 / CSS Inline 3</short_desc>
          <delta_ts>2026-04-06 19:21:15 -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>SVG</component>
          <version>Safari 18</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 15</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>311553</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephen Thomas">stephen</reporter>
          <assigned_to name="Karl Dubost">karlcow</assigned_to>
          <cc>karlcow</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2136773</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen Thomas">stephen</who>
    <bug_when>2025-08-15 07:17:12 -0700</bug_when>
    <thetext>If a &lt;text&gt; element is given a y-position and the dominant baseline is set to middle, the y-attribute value is used to place the bottom of the text rather than its middle.

Reproduction: https://codepen.io/sathomas/pen/EaVowqb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2138247</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-08-22 07:18:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/158944151&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197172</commentid>
    <comment_count>2</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-05 23:44:16 -0700</bug_when>
    <thetext>all the tests in SVG mentioning dominant-baseline are passing.
https://wpt.fyi/results/svg?label=master&amp;label=experimental&amp;aligned&amp;q=dominant-baseline


But this is working.
&lt;text x=&quot;50&quot; y=&quot;100&quot; dominant-baseline=&quot;middle&quot;&gt;Hello&lt;/text&gt;

So the issue is elsewhere.

in SVG2
https://w3c.github.io/svgwg/svg2-draft/text.html#DominantBaselineProperty

==========
This property is defined in the CSS Line Layout Module 3 specification. See &apos;dominant-baseline&apos;. [css-inline-3]

SVG 2 introduces some changes to the definition of this property. In particular:

* The &apos;reset-size&apos; value is no longer supported. Any change in font-size resets the dominant baseline table.
* The &apos;use-script&apos; and &apos;no-change&apos; values are no longer supported.
* The property is now inherited. (Behavior is effectively unchanged.)

SVG uses the value of the dominant-baseline property to align glyphs relative to the ‘x’ and ‘y’ attributes. For the text-orientation value sideways, the auto value for dominant-baseline is alphabetic; however, for backwards compatibility, the glyphs should be aligned to the ‘x’ and ‘y’ attributes using the value central.
====

The issue is that tspan is not inheriting from text. That&apos;s the issue, but the spec says it should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197173</commentid>
    <comment_count>3</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-05 23:46:28 -0700</bug_when>
    <thetext>I also open Bug 311552
remove use-script, no-change, reset-size from dominant-baseline per spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197185</commentid>
    <comment_count>4</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-06 01:14:04 -0700</bug_when>
    <thetext>Fixing this test, create a regression that needs to be addressed first which has a kind of baseline baked-in for get*PositionOfChar

--- /Users/karlcow/code/OpenSource/WebKitBuild/Debug/layout-test-results/imported/w3c/web-platform-tests/svg/text/scripted/getstartpositionofchar-dominant-baseline-expected.txt
+++ /Users/karlcow/code/OpenSource/WebKitBuild/Debug/layout-test-results/imported/w3c/web-platform-tests/svg/text/scripted/getstartpositionofchar-dominant-baseline-actual.txt
@@ -1,6 +1,6 @@
 Test Test
 Test Test
 
-PASS textPath: get*PositionOfChar().y should not depend on dominant-baseline
-PASS tspan: get*PositionOfChar().y should not depend on dominant-baseline
+FAIL textPath: get*PositionOfChar().y should not depend on dominant-baseline assert_equals: expected 95.556640625 but got 80
+FAIL tspan: get*PositionOfChar().y should not depend on dominant-baseline assert_equals: expected 115.556640625 but got 100
 
I need to fix it first. in Bug 311553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197199</commentid>
    <comment_count>5</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-06 02:26:29 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/62107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197203</commentid>
    <comment_count>6</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-06 02:31:27 -0700</bug_when>
    <thetext>This PR needs to be merged first https://github.com/WebKit/WebKit/pull/62106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197205</commentid>
    <comment_count>7</comment_count>
      <attachid>478934</attachid>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-06 02:32:11 -0700</bug_when>
    <thetext>Created attachment 478934
testcase

The testcase 7 illustrates the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197462</commentid>
    <comment_count>8</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-06 19:21:15 -0700</bug_when>
    <thetext>*** Bug 139258 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>478934</attachid>
            <date>2026-04-06 02:32:11 -0700</date>
            <delta_ts>2026-04-06 02:32:11 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>test-dominant-baseline.html</filename>
            <type>text/html</type>
            <size>5113</size>
            <attacher name="Karl Dubost">karlcow</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0
bGU+QnVnIDI5NzQ1NSAtIFNWRyBkb21pbmFudC1iYXNlbGluZSBtaWRkbGUgd2l0aCB5IGF0dHJp
YnV0ZTwvdGl0bGU+CjxzdHlsZT4KYm9keSB7IGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7IG1hcmdp
bjogMmVtOyB9CnN2ZyB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IGRpc3BsYXk6IGJsb2NrOyBt
YXJnaW46IDAuNWVtIDA7IH0KLnBhc3MgeyBjb2xvcjogZ3JlZW47IGZvbnQtd2VpZ2h0OiBib2xk
OyB9Ci5mYWlsIHsgY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KPC9zdHlsZT4KPC9o
ZWFkPgo8Ym9keT4KPGgxPkJ1ZyAyOTc0NTUg4oCUIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUi
IGlnbm9yZWQgd2l0aCB5IGF0dHJpYnV0ZTwvaDE+CjxwPkVhY2ggdGVzdCBzaG93cyBhIGhvcml6
b250YWwgZ3JlZW4gbGluZSBhdCB0aGUgdGFyZ2V0IHkgcG9zaXRpb24uIFRoZSB0ZXh0CnNob3Vs
ZCBiZSB2ZXJ0aWNhbGx5IGNlbnRlcmVkIG9uIHRoYXQgbGluZSB3aGVuIDxjb2RlPmRvbWluYW50
LWJhc2VsaW5lPSJtaWRkbGUiPC9jb2RlPgppcyBzZXQuPC9wPgoKPGgyPjEuIGRvbWluYW50LWJh
c2VsaW5lPSJhdXRvIiAoZGVmYXVsdCkg4oCUIHRleHQgc2l0cyBvbiB0aGUgbGluZTwvaDI+Cjxz
dmcgd2lkdGg9IjQwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCA0MDAgMTAwIj4KICA8cmVj
dCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iI2Y4ZjhmOCIvPgogIDxsaW5lIHgxPSIw
IiB5MT0iNTAiIHgyPSI0MDAiIHkyPSI1MCIgc3Ryb2tlPSIjMjdhZTYwIiBzdHJva2Utd2lkdGg9
IjEiLz4KICA8dGV4dCB4PSIxMCIgeT0iNTAiIGZvbnQtc2l6ZT0iMjQiIGRvbWluYW50LWJhc2Vs
aW5lPSJhdXRvIj5hdXRvIOKAlCBiYXNlbGluZSBvbiBsaW5lPC90ZXh0Pgo8L3N2Zz4KCjxoMj4y
LiBkb21pbmFudC1iYXNlbGluZT0ibWlkZGxlIiDigJQgdGV4dCBzaG91bGQgYmUgY2VudGVyZWQg
b24gdGhlIGxpbmU8L2gyPgo8cD48c3BhbiBjbGFzcz0icGFzcyI+UEFTUzwvc3Bhbj4gaWYgdGhl
IHRleHQgaXMgdmVydGljYWxseSBjZW50ZXJlZCBvbiB0aGUgZ3JlZW4gbGluZS4KPHNwYW4gY2xh
c3M9ImZhaWwiPkZBSUw8L3NwYW4+IGlmIHRoZSB0ZXh0IHNpdHMgb24gdGhlIGxpbmUgKHNhbWUg
YXMgYXV0bykuPC9wPgo8c3ZnIHdpZHRoPSI0MDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAg
NDAwIDEwMCI+CiAgPHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9IiNmOGY4Zjgi
Lz4KICA8bGluZSB4MT0iMCIgeTE9IjUwIiB4Mj0iNDAwIiB5Mj0iNTAiIHN0cm9rZT0iIzI3YWU2
MCIgc3Ryb2tlLXdpZHRoPSIxIi8+CiAgPHRleHQgeD0iMTAiIHk9IjUwIiBmb250LXNpemU9IjI0
IiBkb21pbmFudC1iYXNlbGluZT0ibWlkZGxlIj5taWRkbGUg4oCUIGNlbnRlcmVkIG9uIGxpbmU8
L3RleHQ+Cjwvc3ZnPgoKPGgyPjMuIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiDigJQgc2lt
aWxhciB0byBtaWRkbGU8L2gyPgo8cD48c3BhbiBjbGFzcz0icGFzcyI+UEFTUzwvc3Bhbj4gaWYg
Y2VudGVyZWQgb24gdGhlIGdyZWVuIGxpbmUuCjxzcGFuIGNsYXNzPSJmYWlsIj5GQUlMPC9zcGFu
PiBpZiBzYW1lIGFzIGF1dG8uPC9wPgo8c3ZnIHdpZHRoPSI0MDAiIGhlaWdodD0iMTAwIiB2aWV3
Qm94PSIwIDAgNDAwIDEwMCI+CiAgPHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9
IiNmOGY4ZjgiLz4KICA8bGluZSB4MT0iMCIgeTE9IjUwIiB4Mj0iNDAwIiB5Mj0iNTAiIHN0cm9r
ZT0iIzI3YWU2MCIgc3Ryb2tlLXdpZHRoPSIxIi8+CiAgPHRleHQgeD0iMTAiIHk9IjUwIiBmb250
LXNpemU9IjI0IiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCI+Y2VudHJhbCDigJQgY2VudGVy
ZWQgb24gbGluZTwvdGV4dD4KPC9zdmc+Cgo8aDI+NC4gZG9taW5hbnQtYmFzZWxpbmU9Imhhbmdp
bmciIOKAlCB0b3Agb2YgdGV4dCBvbiB0aGUgbGluZTwvaDI+CjxwPjxzcGFuIGNsYXNzPSJwYXNz
Ij5QQVNTPC9zcGFuPiBpZiB0ZXh0IGhhbmdzIGJlbG93IHRoZSBncmVlbiBsaW5lLgo8c3BhbiBj
bGFzcz0iZmFpbCI+RkFJTDwvc3Bhbj4gaWYgc2FtZSBhcyBhdXRvLjwvcD4KPHN2ZyB3aWR0aD0i
NDAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDQwMCAxMDAiPgogIDxyZWN0IHdpZHRoPSI0
MDAiIGhlaWdodD0iMTAwIiBmaWxsPSIjZjhmOGY4Ii8+CiAgPGxpbmUgeDE9IjAiIHkxPSIzMCIg
eDI9IjQwMCIgeTI9IjMwIiBzdHJva2U9IiMyN2FlNjAiIHN0cm9rZS13aWR0aD0iMSIvPgogIDx0
ZXh0IHg9IjEwIiB5PSIzMCIgZm9udC1zaXplPSIyNCIgZG9taW5hbnQtYmFzZWxpbmU9Imhhbmdp
bmciPmhhbmdpbmcg4oCUIHRvcCBhdCBsaW5lPC90ZXh0Pgo8L3N2Zz4KCjxoMj41LiBkb21pbmFu
dC1iYXNlbGluZT0idGV4dC10b3AiIOKAlCB0b3Agb2YgZW0gYm94IGF0IHRoZSBsaW5lPC9oMj4K
PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDQwMCAxMDAiPgogIDxy
ZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMTAwIiBmaWxsPSIjZjhmOGY4Ii8+CiAgPGxpbmUgeDE9
IjAiIHkxPSIzMCIgeDI9IjQwMCIgeTI9IjMwIiBzdHJva2U9IiMyN2FlNjAiIHN0cm9rZS13aWR0
aD0iMSIvPgogIDx0ZXh0IHg9IjEwIiB5PSIzMCIgZm9udC1zaXplPSIyNCIgZG9taW5hbnQtYmFz
ZWxpbmU9InRleHQtdG9wIj50ZXh0LXRvcCDigJQgZW0gdG9wIGF0IGxpbmU8L3RleHQ+Cjwvc3Zn
PgoKPGgyPjYuIFNpZGUtYnktc2lkZSBjb21wYXJpc29uIGF0IHNhbWUgeTwvaDI+CjxwPkFsbCB0
aHJlZSB0ZXh0cyBoYXZlIDxjb2RlPnk9IjUwIjwvY29kZT4uIFRoZXkgc2hvdWxkIGFwcGVhciBh
dApkaWZmZXJlbnQgdmVydGljYWwgcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZSBncmVlbiBsaW5l
LjwvcD4KPHA+PHNwYW4gY2xhc3M9InBhc3MiPlBBU1M8L3NwYW4+IGlmIGFsbCB0aHJlZSBhcmUg
YXQgdmlzaWJseSBkaWZmZXJlbnQgaGVpZ2h0cy4KPHNwYW4gY2xhc3M9ImZhaWwiPkZBSUw8L3Nw
YW4+IGlmIHRoZXkgYWxsIHNpdCBhdCB0aGUgc2FtZSBwb3NpdGlvbi48L3A+Cjxzdmcgd2lkdGg9
IjYwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCA2MDAgMTAwIj4KICA8cmVjdCB3aWR0aD0i
NjAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iI2Y4ZjhmOCIvPgogIDxsaW5lIHgxPSIwIiB5MT0iNTAi
IHgyPSI2MDAiIHkyPSI1MCIgc3Ryb2tlPSIjMjdhZTYwIiBzdHJva2Utd2lkdGg9IjEiLz4KICA8
dGV4dCB4PSIxMCIgIHk9IjUwIiBmb250LXNpemU9IjIwIiBmaWxsPSIjMmMzZTUwIiBkb21pbmFu
dC1iYXNlbGluZT0iYXV0byI+YXV0bzwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjUwIiBmb250
LXNpemU9IjIwIiBmaWxsPSIjZTc0YzNjIiBkb21pbmFudC1iYXNlbGluZT0ibWlkZGxlIj5taWRk
bGU8L3RleHQ+CiAgPHRleHQgeD0iNDAwIiB5PSI1MCIgZm9udC1zaXplPSIyMCIgZmlsbD0iIzI5
ODBiOSIgZG9taW5hbnQtYmFzZWxpbmU9ImhhbmdpbmciPmhhbmdpbmc8L3RleHQ+Cjwvc3ZnPgoK
PGgyPjcuIE9yaWdpbmFsIGJ1ZyByZXByb2R1Y3Rpb246IHRzcGFuIGluc2lkZSB0ZXh0IHdpdGgg
Y2xpcFBhdGg8L2gyPgo8cD5UaGUgdGV4dCBpcyBpbnNpZGUgYSA8Y29kZT4mbHQ7dHNwYW4mZ3Q7
PC9jb2RlPiB3aXRoaW4gPGNvZGU+Jmx0O3RleHQgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSIg
eT0iMzgiJmd0OzwvY29kZT4uClRoZSBjbGlwUGF0aCBjbGlwcyB0byB5PTIwLi44MC4gV2l0aCAz
NnB4IGZvbnQgYW5kIG1pZGRsZSBiYXNlbGluZSBhdCB5PTM4LAp0aGUgdGV4dCBzaG91bGQgYmUg
ZnVsbHkgdmlzaWJsZSAoMThweCBhYm92ZSArIDE4cHggYmVsb3cgPSB5PTIwIHRvIHk9NTYpLjwv
cD4KPHA+PHNwYW4gY2xhc3M9InBhc3MiPlBBU1M8L3NwYW4+IGlmICJURVhUIiBpcyBmdWxseSB2
aXNpYmxlIHdpdGhpbiB0aGUgYm94Lgo8c3BhbiBjbGFzcz0iZmFpbCI+RkFJTDwvc3Bhbj4gaWYg
dGhlIHRvcCBvZiAiVEVYVCIgaXMgY2xpcHBlZCAodGV4dCBwb3NpdGlvbmVkIHRvbyBoaWdoKS48
L3A+Cjxzdmcgd2lkdGg9IjEwMHB4IiBoZWlnaHQ9IjEwMHB4IiBzdHlsZT0iYm9yZGVyOiAxcHgg
c29saWQgYmxhY2siPgogIDxkZWZzPgogICAgPGNsaXBQYXRoIGlkPSJjbGlwLWFyZWEiPgogICAg
ICA8cmVjdCB4PSIwIiB5PSIyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI2MCI+PC9yZWN0PgogICAg
PC9jbGlwUGF0aD4KICA8L2RlZnM+CiAgPGcgc3R5bGU9ImNsaXAtcGF0aDogdXJsKCNjbGlwLWFy
ZWEpIj4KICAgIDx0ZXh0IHg9IjAiIHk9IjM4cHgiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUi
IHN0eWxlPSJmb250LXNpemU6IDM2cHgiPgogICAgICA8dHNwYW4+VEVYVDwvdHNwYW4+CiAgICA8
L3RleHQ+CiAgPC9nPgo8L3N2Zz4KCjxoMj44LiBTYW1lIGFzIDcgYnV0IHdpdGhvdXQgdHNwYW4g
KGNvbnRyb2wpPC9oMj4KPHA+U2FtZSBzZXR1cCBidXQgdGV4dCBkaXJlY3RseSBpbnNpZGUgPGNv
ZGU+Jmx0O3RleHQmZ3Q7PC9jb2RlPiwgbm8gPGNvZGU+Jmx0O3RzcGFuJmd0OzwvY29kZT4uCklm
IHRoaXMgcGFzc2VzIGJ1dCB0ZXN0IDcgZmFpbHMsIHRoZSBidWcgaXMgaW4gaG93IDxjb2RlPmRv
bWluYW50LWJhc2VsaW5lPC9jb2RlPgppbmhlcml0cyB0byBvciBpcyBhcHBsaWVkIHdpdGhpbiA8
Y29kZT4mbHQ7dHNwYW4mZ3Q7PC9jb2RlPi48L3A+Cjxzdmcgd2lkdGg9IjEwMHB4IiBoZWlnaHQ9
IjEwMHB4IiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2siPgogIDxkZWZzPgogICAgPGNs
aXBQYXRoIGlkPSJjbGlwLWFyZWEyIj4KICAgICAgPHJlY3QgeD0iMCIgeT0iMjAiIHdpZHRoPSIx
MDAiIGhlaWdodD0iNjAiPjwvcmVjdD4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgogIDxnIHN0
eWxlPSJjbGlwLXBhdGg6IHVybCgjY2xpcC1hcmVhMikiPgogICAgPHRleHQgeD0iMCIgeT0iMzhw
eCIgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSIgc3R5bGU9ImZvbnQtc2l6ZTogMzZweCI+VEVY
VDwvdGV4dD4KICA8L2c+Cjwvc3ZnPgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>