You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在混合RTL的<pre>标签中实现英文文本从右到左渲染?

解决RTL文本中嵌入英文的反向排版需求

我有如下代码:

<html>
<head>
  <style>
    .rtl {
      direction: rtl;
      font-size: 16px;
      font-family: Arial, Helvetica;
    }
  </style>
</head>
<body>
<pre class="rtl">
שלום עולם <b>Right Text</b> ..... <b>Left Text</b> חמש
</pre>
</body>
</html>

当前渲染时,“Left Text”显示在“שלום עולם”左侧,“Right Text”显示在“חמש”右侧。但制作目录时需要主题在右侧、作者在左侧,因此需要实现相反效果——让“Right Text”显示在“שלום עולם”左侧,“Left Text”显示在“חמש”右侧,同时保留<pre>标签。

当前渲染状态:
当前渲染效果

预期渲染效果:
预期渲染效果

解决方案

方案1:使用Unicode双向控制字符

通过添加Unicode控制字符强制英文文本反向排版:

  • \u202E:强制文本从右到左显示
  • \u202C:恢复默认排版方向

修改后的代码:

<html>
<head>
  <style>
    .rtl {
      direction: rtl;
      font-size: 16px;
      font-family: Arial, Helvetica;
    }
  </style>
</head>
<body>
<pre class="rtl">
שלום עולם <b>‏Right Text‏</b> ..... <b>‏Left Text‏</b> חמש
</pre>
</body>
</html>

注:代码中<b>标签内的英文前后已添加不可见的\u202E和\u202C控制字符

方案2:使用CSS强制方向

给包含英文的元素添加CSS样式,覆盖默认双向文本规则:

<html>
<head>
  <style>
    .rtl {
      direction: rtl;
      font-size: 16px;
      font-family: Arial, Helvetica;
    }
    .rtl b {
      direction: ltr;
      unicode-bidi: bidi-override;
    }
  </style>
</head>
<body>
<pre class="rtl">
שלום עולם <b>Right Text</b> ..... <b>Left Text</b> חמש
</pre>
</body>
</html>

unicode-bidi: bidi-override会强制文本按指定的ltr方向排版,忽略RTL容器的默认规则。

内容的提问来源于stack exchange,提问作者Kinetic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:15:26