将希伯来语文本放在 SVG textPath 上时,仅在 Safari 中会反转(macOS ventura 13.2 Safari 16.3)。在 Firefox 和 Chrome 中都可以。不在路径上的文本总是可以的。此外,我可以使用 bidi-override 来反转 Firefox/Chrome 中的文本,但在 Safari 中并没有像我预期的那样取消反转反转的文本(即使它这样做了,也不会是跨浏览器解决方案) 。我还尝试使用各种 rtl/ltr css/html/svg dir/direction 设置以及 lang/xml:lang he。我当然可以提前为 Safari 反转文本字符串,但我正在寻找跨浏览器解决方案。
这是一个类似的问题,但作者没有解决特定于浏览器的问题(我认为当时它在 Chrome 中也被破坏了,所以他可以提前反转字符串),并且接受的答案没有提供具体解释也没有实际帮助:RTL 文本(希伯来语)在 SVG 路径上时显示反转 https://stackoverflow.com/questions/51085826/rtl-text-hebrew-shows-reversed-when-is-on-svg-path
Chrome:
Safari:
<html dir="rtl" lang="he">
<svg viewBox="0 0 1000 1000" width=500" xmlns="http://www.w3.org/2000/svg">
<path
id="MyPath1"
fill="none"
stroke="red"
d="M 500, 120 m 0, -110 a 110,110 0 0,1 0,320 a 110,110 0 0,1 0,-320" />
<path
id="MyPath2"
fill="none"
stroke="green"
d="M 200, 120 m 0, -110 a 110,110 0 0,1 0,320 a 110,110 0 0,1 0,-320" />
<text x='600' y='200'>
text not on path is ok טקסט רגיל
</text>
<text>
<textPath href="#MyPath1" text-anchor="end">hebrew textpath reversed only on safari טקסט על מסלול הפוך רק בספארי</x>
</text>
<text unicode-bidi="bidi-override" direction="ltr">
<textPath href="#MyPath2">טקסט על מסלול הפוך תמיד hebrew textpath always reversed</textPath>
</text>
</svg>
</html>
代码笔:https://codepen.io/eyaler/pen/VwBBOXz?editors=1011 https://codepen.io/eyaler/pen/VwBBOXz?editors=1011
知道了!由于 Safari 只是忽略 textPath 上的所有 bidi 内容,即逻辑方向和 bidi-override,所以我可以提前反转字符串并执行 unicode-bidi="bidi-override" Direction="ltr"!双重否定来拯救!这是一个跨浏览器的解决方案。
<html dir="rtl" lang="he">
<svg viewBox="0 0 1000 1000" width=500" xmlns="http://www.w3.org/2000/svg">
<path
id="MyPath1"
fill="none"
stroke="red"
d="M 500, 120 m 0, -110 a 110,110 0 0,1 0,320 a 110,110 0 0,1 0,-320" />
<path
id="MyPath2"
fill="none"
stroke="green"
d="M 200, 120 m 0, -110 a 110,110 0 0,1 0,320 a 110,110 0 0,1 0,-320" />
<text x='600' y='200'>
text not on path is ok טקסט רגיל
</text>
<text>
<textPath href="#MyPath1" text-anchor="end">hebrew textpath reversed only on safari טקסט על מסלול הפוך רק בספארי</x>
</text>
<text unicode-bidi="bidi-override" direction="ltr">
<textPath href="#MyPath2">רדסב גצומו רוקמב יתכפהש לולסמ לע טסקט hebrew textpath hardcoded reversed to display ok on all browsers</textPath>
</text>
</svg>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)