我正在编写一个库,它可以获取用户提交的文本并将其呈现在浏览器中。
用户可以提交混合 RTL 和 LTR 文本行的文本,并且每行应以适当的对齐方式和方向呈现。
为此,我在段落 html 元素中使用
unicode-bidi: plaintext
呈现文本,这是为了实现此行为。
我看到一种奇怪的行为,即单个 RTL 文本范围内的换行会导致第二行呈现为 LTR。这只发生在 Firefox 中。我希望找到解决方法或修复方法。切换段落元素上的 unicode-bidi 属性可以解决该问题,就像为我打开开发人员控制台一样。看起来很不稳定。
我正在提交这样的文本:
זוהי פסקה של טקסט. הנה קישור ראשון, זהו טקסט מילוי. הנה קישור שני, זהו טקסט מילוי. והנה קישור שלישי, זהו טקסט מילוי.
这是包裹,包裹的部分是左对齐而不是右对齐。
这是一个演示链接:https://musical-arithmetic-54267c.netlify.app/Style_examples#Links_in_right-to-left_text
图片:
我正在发布解决方法,但仍然希望有人能够弄清楚为什么会发生这种情况。
我的解决方案是获取文本容器的父元素,将其设置为
unicode-bidi: unset
,然后将 unicode-bidi: plaintext
放在文本容器本身上。所以看来 Firefox 可能有不同的默认值 - Chrome 似乎默认为 unicode-bidi: normal
,而 Firefox 似乎默认为 unicode-bidi: isolate
,并且隔离容器中可能有 plaintext
元素会导致 Firefox 中的行为,但甚至不会在 Chrome 中当我使用 Firefox 的默认样式时。
因此,CSS 默认值的差异似乎与 Firefox 如何处理嵌套在不同
unicode-bidi
值的其他元素中的微妙错误相结合,但手动取消设置应该可以解决问题。