問題タブ [bidi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
715 参照

javascript - 双方向テキスト - 視覚から論理へ

画面に一文字ずつ文字を描いています。

英語では、テキストが LTR であるため、文字は表示されている順序で文字列に保存されるため、非常に単純です。

RTL テキストを描画するときは、印刷の方向を切り替える必要があります。しかし、文字と数字と英語といくつかのRTL言語があると.. 混乱が始まります.

例の場合。

ex.1: שלום לכם

ש- は文字列の最初の文字ですが、最後に表示されていることがわかります。

例 2: שלום to all ש- は文字列の最初の文字ですが、英語が始まる前の真ん中に表示されていることがわかります。

数字や数学記号が登場し、反転が必要な「(」、「)」などの特殊文字が登場すると、さらに複雑になります...

文字列内の文字の論理的な順序を視覚的な順序に変更する Bidi アルゴリズムをオンラインで多数見つけました。したがって、変換された文字列を左から右に実行すると、文字列が正しく印刷されると確信しています。

しかし、それらは決して完璧ではありません。正常に動作しない場合があります。テキストの方向も考慮していません (つまり、キーボードで右の Ctrl+Shift を押すと、視覚化が再び変更されます)。

私の質問は

  1. 文字列をメモリに保存したものから視覚的な順序に変更するために使用できる防弾Bidiアルゴリズムを知っている人はいますか?
  2. 私の問題を解決する簡単な方法はありますか? 多分どういうわけかそれのためのブラウザアルゴリズムを手に入れます..
0 投票する
0 に答える
57 参照

html - bdo タグに縦書きのオプションがないのはなぜですか?

bdo タグで左から右のテキストと右から左のテキストしか指定できないのはなぜですか? 日本語が使用していたものやモンゴル文字が使用していたもののように、作成者が縦書きテキストを指定できないのはなぜですか?

0 投票する
1 に答える
1122 参照

arabic - アラビア語のテキストに対して括弧をどこに置くべきですか?

私たちのアプリケーションは、アラビア語のテキストの後に括弧が続くと、そのレイアウトを自動的に変更します。

アプリケーションは、次の形式でアイテムを表示します。

したがって、英語の構造体「stackoverflow」のバージョン 1.5 は次のように表示されます。

注:括弧を表示する必要があります。ID と最初のブラケットの間にスペースはありません。括弧は単にバージョンを囲んでいます。ブラケットはどのキャラクターでもかまいませんが、今すぐ別のキャラクターに切り替えるには遅すぎます!

これは左から右の言語では問題なく機能しますが、アラビア語の場合、構造は次の形式で表示されます。

私はアラビア語を話さないので、これが実際に正しいかどうかを知る必要があります. アラビア語の形式は英語の形式と同等ですか、それとも何かひどく間違っていますか?

0 投票する
1 に答える
621 参照

c# - RTL ワードと LTR ワードの両方をサポートするための Run/Paragraph のスタイリング

RTL ワードと LTR ワードの両方をサポートするためにRunand/orのスタイルを設定するにはどうすればよいですか?Paragraph

問題は、ペルシャ語と英語の両方の単語を含む複雑なテキストがあり、.docxOpenXML SDK を使用してドキュメントを作成しようとしていることです。しかし、英単語も RTL になります。次のテキストがあるとします。

Javad Amiry は、最初の 1 枚の写真と 2 枚の写真の 2 枚目の写真です。

次のようにドキュメントにテキストを配置することを期待しています。

ここに画像の説明を入力

しかし、私はこれを取得しています:

ここに画像の説明を入力

ご覧のとおり、英単語はその逆です。つまり、私が期待している間Javad Amiry、私は得ていdavaJ yrimAます! それを修正する考えはありますか?

私が使用しているスタイルを以下に示します。

前もって感謝します。

0 投票する
0 に答える
311 参照

c++ - Unicode、_stprintf()、および混合テキストの方向

Unicode をサポートするために一部のレガシー C++ コードのリファクタリングに取り組んでおり、_stprintf が _T("%s %s") のフォーマット文字列で使用され、引数が次の場合に問題が発生しています。 ) の後に、文字配列に格納されたいくつかの数字が続きます。コード スニペットを次に示します。

私が buf で取得するのは حبيبيحبيبيحبيب 12345678h90 ですが、取得したいのは Text 配列の内容とそれに続く Number 配列の内容です。(ここに貼り付けようとしましたが、_stprintfと同じ方法で自動的にフォーマットされました...)。

この理由は、アラビア語のテキストが強力な文字型であり、すべての数字が弱い型であるためであり、比較的単純な解決策があることを知っています- _stprintf をオーバーロードし、パラメーター文字列が数字で始まるかどうかを確認し、先頭に U+200E ( \u200E) 制御文字。しかし、グローバル設定か何かのように、私が知らないもっと簡単な解決策があるかもしれないと思わずにはいられませんか?そのようなものはありますか?

これらの文字列は SetWindowText に渡され、アラビア語のために間違った順序で表示されます。私の主な目標は、それらを UI で適切にレンダリングすることです。

0 投票する
1 に答える
925 参照

delphi - VCL スタイル使用時の TListView スクロール バグ - Delphi XE8

次の関数TListViewでコントロールの方向をに設定しようとしました:RTL

しかし、プロジェクトで を使用する場合、次の 2 つの問題がありますVCL Styles

1:Vertical scrollbarクリックしないと表示されません。

ここに画像の説明を入力

2: ListView 列のサイズを変更してhorizontal scrollbarクリックすると、次のエラー メッセージが表示されます。

ここに画像の説明を入力

例外ソース:Vcl.ComCtrls.TListViewStyleHook.WMMouseMove

ここに画像の説明を入力

この問題はどのように解決されるべきですか?

ありがとう。

0 投票する
1 に答える
475 参照

delphi - 左にマイナスを表示する方法 (Delphi, TListview)

TListview彼のプロパティを持つアイテムの左側に負の数のマイナス記号を表示しようとしていますBiDiMode = bdRightToLeft.

そこでコードを試しました:

DBGrid の千区切り記号

実際、ブレークポイントを使用して評価すると機能しますstrResult

しかしTListView、私のアイテムに表示されると:

次のように表示されます。14.2%-

表示している文字列などを変更しないように指示する方法はありTListviewますか?