标签: bidi

CK编辑器中的文字方向

如何在加载编辑器上设置文本方向[rtl].

在这方面,任何人都可以帮助我.

bidi ckeditor right-to-left

5
推荐指数
2
解决办法
5493
查看次数

如何对双向文本处理进行单元测试

我正在尝试为一些字符串格式代码编写单元测试。在某些情况下,格式化输出可能包含双向文本,即从左到右和从右到左的混合。

我已经凭经验验证了在 Android 设备或模拟器上运行时,对于 LTR 和 RTL 输入和输出的所有组合,输出看起来都是正确的。不过,我正在努力在单元测试中捕捉到这一点;我不确定如何在测试用例中正确指定预期输出。

例如,我想断言返回的字符串将像这样呈现:

-?.?.123,456.78

也就是说,字形应该按照从左到右的顺序出现:

-

1

2

3

,

4

5

6

.

7

8

.

?

.

?

(您不知道在 SO 编辑框中将其编辑成正确的序列是多么困难!)

我在测试用例中尝试使用标准字符串比较方法,如下所示:

assertEquals("-?.?.123,456.78", formattedOutput);
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为测试代码中的预期输出字符串对其文本进行了重新排序。事实上,根据我用来查看源代码的工具(Android Studio 与 Github-with-Chrome),它在源代码中的外观甚至有所不同,所以我不相信它正在测试正确的东西。

我还尝试逐步构建预期输出值,以避免在编辑器中出现混淆,尽管它会导致在引擎盖下构造相同的字符串文字:

assertEquals("-123,456.78" + SYMBOL, formattedOutput);
Run Code Online (Sandbox Code Playgroud)

如何比较字形的视觉顺序,而不是逻辑顺序?Android 会BidiFormatter在这里帮助我吗?

java unicode junit android bidi

5
推荐指数
1
解决办法
368
查看次数

Angular 2+、rtlcss 集成

我有一个任务,通过使用某种库来修改 css,向网站添加 rtl 支持,该库将从左到右交换,反之亦然,并将 [dir=rlt] [dir=ltr] 相应地附加到所有选择器。

到目前为止我所做的:

  • 称为 ng 弹出
  • 添加了 rtlcss 处理器作为 postcss 插件,但它不符合我的要求。我需要它将 [dir=*] 附加到选择器。
  • 尝试了其他插件,但它们不起作用。

可能的解决方案:

  • 制作两个css文件并动态加载它们。(但是你需要将 ViewEncapsulation.None 添加到所有组件)不好,没有那么多工作,但可以破坏布局
  • 制作两个 css 文件并作为两个不同的应用程序运行。一种用于 RTL,一种用于 LTR。不好,没有资源
  • 手工制作rtl。不好,工作太多
    • 忘记 RTL 处理器并制作 sass mixins。不好,工作太多
  • 制作一个带有正确生成前缀的 css 文件,[dir=ltr] 和 [dir=rtl] 这将导致 css 大小加倍,但最终会起作用。很好,但不知道该怎么做
    • 创建自定义库来执行此操作,或分叉现有库进行修改
    • 找到工作处理器

目前,我正在尝试寻找工作处理器,但没有运气。

对于如何实现这一目标有什么想法吗?

css bidi webpack postcss angular

5
推荐指数
0
解决办法
511
查看次数

换行与双向重新排序

换行和 Unicode 双向算法的要求造成了先有鸡还是先有蛋的问题:

1) UBA 要求在将文本分割成行后重新排序。

2)为了使用任何换行算法将文本分割成行,需要知道不包括第一个单词之前和最后一个单词之后的空白的行的宽度。但为此,需要知道单词的视觉顺序,以便知道要删除哪个空白。但根据 UBA,必须在换行之后单独计算每行的 RTL/LTR 段的视觉顺序。

这个问题在概念上和实践中是如何解决的(例如在 chrome、openoffice 等中)?

unicode bidi word-wrap

5
推荐指数
0
解决办法
178
查看次数

如何将RTL文本(阿拉伯语)绘制到位图并正确排序?

我正在尝试将阿拉伯文字绘制到位图上以供显示:

Bitmap img = Bitmap.createBitmap( (int) f+100, 300, Config.RGB_565);
Canvas c = new Canvas();
c.setBitmap(  img );
mFace = Typeface.createFromAsset(getAssets(),"DejaVuSansCondensed.ttf");
mPaint.setTypeface(mFace);
content = "????";
content = ArabicUtilities.reshape( content );
System.out.println("Drawing text: " + content);
c.drawText(content, 30, 30, mPaint);
Run Code Online (Sandbox Code Playgroud)

ArabicUtilities类是一个重塑unicode文本的工具,因此字母是连接的.请参阅:http://github.com/agawish/Better-Arabic-Reshaper/

但是,生成的位图如下所示:

alt text http://imagebin.ca/img/J1EB8DWc.jpg

它应该看起来像يجري

我相信这个问题是因为,与TextView不同,Bitmap类不支持BiDi,所以它从左边开始绘制字母.

尽我所能,我无法弄清楚如何以正确的顺序绘制文本.

android bidi right-to-left

4
推荐指数
1
解决办法
1万
查看次数

如何识别C++中的RTL字符串

我需要在打印前知道文本的方向.

我正在使用Unicode字符.

我怎么能用C++做到这一点?

c++ unicode bidi right-to-left

3
推荐指数
2
解决办法
3332
查看次数

单个文本的 HTML5 Canvas RTL

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

对于整个画布,dir可以指定一个属性。所以,在我的例子中,我会使用<canvas dir="rtl />.

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

  • 有没有办法在dir不使用两个或多个<canvas>es 的情况下指定每个字符串的基础?

这是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)
Run Code Online (Sandbox Code Playgroud)
<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> …
Run Code Online (Sandbox Code Playgroud)

html javascript canvas bidi

3
推荐指数
1
解决办法
1539
查看次数

Bidi、Ring 和 Lein 的简单 Web 应用程序给出 500 错误

我正在学习用于网络的 Clojure。我正在尝试在 Lein 应用程序中实现 Bidi 和 Ring。当我打开该网站时,出现 500 错误:

HTTP 错误:500

访问 / 时出现问题。原因:

响应图为零

由码头提供支持:://

我的文件如下:

./project.clj

(defproject bidi-ring "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
            :url "https://www.eclipse.org/legal/epl-2.0/"}
  :dependencies [[org.clojure/clojure "1.10.0"]
                 [bidi "2.1.6"]
                 [ring/ring-core "1.6.3"]
                 [ring/ring-jetty-adapter "1.6.3"]]
  :repl-options {:init-ns my.app}
  :main my.app)
Run Code Online (Sandbox Code Playgroud)

./src/my/handler.clj

(ns my.handler (:gen-class)
    (:require [bidi.ring :refer (make-handler)]
              [ring.util.response :as res]))
(defn index-handler
  [request]
  (res/response "Homepage"))
(defn article-handler
  [{:keys [route-params]}]
  (res/response (str "You are viewing article: " (:id route-params))))
(def …
Run Code Online (Sandbox Code Playgroud)

clojure bidi ring web server

2
推荐指数
1
解决办法
211
查看次数

在 HTML 中混合 RTL 和 LTR 文本

.red {
  color: red;
  direction: rtl;
}

.green {
  color: green;
  direction: rtl;
}

p {
  direction: ltr;
}
Run Code Online (Sandbox Code Playgroud)
<p>Example: 
1. <span class="red">????????? ????????</span> 
2. <span class="green">???????? ?? ???? ?????</span> 
</p>
Run Code Online (Sandbox Code Playgroud)

上面的 HTML 和 CSS 呈现如下:

电流输出样本

请注意,在 HTML 中,从左到右的顺序中,“红色”在“绿色”之前,而渲染已将它们交换。

如果我替换“2”。对于任何拉丁字母,跨度会交换到正确的位置。

如何让两个跨度(以及 的所有直接子项<p>)以从左到右的顺序出现?

首选仅使用 CSS 的解决方案。

html css bidi arabic

2
推荐指数
1
解决办法
828
查看次数

使用RightToLeft BidiMode的Delphi Canvas Textout

我想在Canvas上打印从右到左的Unicode字符串.我找不到BidiMode属性或类似的东西来完成它.

当前位于字符串末尾的符号出现在"画布"上打印的文本的第一个字符之前.

delphi canvas bidi

0
推荐指数
1
解决办法
1095
查看次数

使用VCL样式时的TListView滚动错误 - Delphi XE8

我试图通过以下功能设置TListView控制方向RTL:

procedure RTL_LV(lv:TListView);
const
  LVM_FIRST = $1000;
  LVM_GETHEADER = LVM_FIRST + 31;
var
  header: THandle;
begin
  header:= SendMessage (lv.Handle, LVM_GETHEADER, 0, 0);
  SetWindowLong (header, GWL_EXSTYLE,
                 GetWindowLong (header, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);

  SetWindowLong (lv.Handle, GWL_EXSTYLE,
                 GetWindowLong (lv.Handle, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
  lv.invalidate;
end;
Run Code Online (Sandbox Code Playgroud)

但是当项目使用时,我有两个问题如下VCL Styles:

1:Vertical scrollbar没有点击它就不会出现.

在此输入图像描述

2:当我更改ListView列的大小并horizontal scrollbar单击时,将显示以下错误消息:

在此输入图像描述

例外来源: Vcl.ComCtrls.TListViewStyleHook.WMMouseMove

在此输入图像描述

procedure TListViewStyleHook.WMMouseMove(var Message: TWMMouse);
var
  SF: TScrollInfo;
  SPos: Integer;
  R: TRect;
begin
  if VertSliderState = tsThumbBtnVertPressed then
  begin …
Run Code Online (Sandbox Code Playgroud)

delphi listview bidi right-to-left vcl-styles

0
推荐指数
1
解决办法
682
查看次数