gpt4 book ai didi

javascript - 用于单个文本的 HTML5 Canvas RTL

转载 作者:行者123 更新时间:2023-11-29 17:47:44 30 4
gpt4 key购买 nike

我有一个 <canvas>我想在其上呈现从右到左的字符串(例如,希伯来语句子中间某处有一些英语单词)。

对于整个 Canvas ,一个 dir可以指定属性。因此,在我的示例中,我将使用 <canvas dir="rtl /> .

不幸的是,这个解决方案远未完成。我在同一个应用程序中有一些句子是 LTR(例如,只有英语,或者英语中间有一些希伯来语,但不是相反)。

  • 有没有办法指定dir每个字符串基础,不使用两个或更多 <canvas>是吗?

这里有一个简单的例子来说明 dir属性以这种方式改变 canvas处理双向字符串:

var text = 'קצת text בעברית'

var rtlCanvas = document.getElementById('rtl-canvas')
var rtlCtx = rtlCanvas.getContext('2d')
rtlCtx.font = '24px Arial'
rtlCtx.fillText(text, 250, 50)

var ltrCanvas = document.getElementById('ltr-canvas')
var ltrCtx = ltrCanvas.getContext('2d')
ltrCtx.font = '24px Arial'
ltrCtx.fillText(text, 0, 50)
<div>
<p>Looking good with dir=rtl:</p>
<canvas id="rtl-canvas" dir="rtl" width=300 height=100/>
</div>

<div>
<p>With dir=ltr, first and last words are swapped</p>
<canvas id="ltr-canvas" dir="ltr" width=300 height=100/>
</div>

最佳答案

您可以根据需要以编程方式更改 dir 属性来控制每个字符串的方向:

var text = 'קצת text בעברית'
var canvas = document.getElementById('canvas')
var ctx = canvas.getContext('2d')

ctx.font = '24px Arial'
ctx.fillText(text, 165, 50)

canvas.setAttribute('dir','ltr');
ctx.fillText(text, 0, 100)
   
<div>
<canvas id="canvas" dir="rtl" width=300 height=300/>
</div>

关于javascript - 用于单个文本的 HTML5 Canvas RTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47500907/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com