2011-11-22 5 views
12

ウェブサイトにヘブライ文字が混在していて、途中にダッシュを含む数字がある場合、中央にダッシュが付いた数字がRTLで表示されます。たとえば、テキストが רמה 4–0の場合、0-4の代わりに4-0が表示されます。これは数字のシーケンスで、 '4'が '0'の前に表示されるためです。しかし、私がチェックしたブラウザでは、 '4'の前に '0'が表示されます。RTLがウェブページにある場合ダッシュで数字を逆にします

これが発生する可能性がありますので、システムデータ内の任意の場所が表示され、のようなものを必要としないCSSソリューション持つことが非常に望ましいだろう:テキストのための一般的な方向はRTL残るべき

<span style="direction:ltr">4-0</span> 

を、ダッシュ記号はLTRと表示されます。主要なブラウザ(IE、Firefox、Chrome)で正しく表示されるはずです。

+0

あなたのコンテンツを「」タグに入れてください。 – ako

答えて

9

あなたは、数値のシーケンスの前と後(それぞれ&lrm;&rlm;left-to-rightright-to-leftマーカー文字を埋め込むことができます - これは、余分なマークアップを必要としない何の区切り文字と、ソース文書内のテキストの順序が保持されますされません。

代替UnicodeのBIDIアルゴリズムはちょうど助けを借りずに非常によく、この特定のシナリオに対応していないとして、(あなたがやっていることに似ている)ダッシュと数字を区切る一部マークアップ(LRMとRLM)を持つことです。

CSS:

.numdash 
{ 
    direction: ltr; 
} 

HTML:

<span class="numdash">4-0</span> 

Aがあり、あなたが行ったようにCSSをインラインであるためには必要はありませんが、あなたはまだのようなものが必要になります

3番目のオプションは、数字を逆転させ、マークアップで0-4を使用し、それをbidiアルゴリズムで逆にすることです。

+1

@Downvoter - コメントしますか? – Oded

+0

は、問題を解決していない、ちょうどテキストを左に揃える! –

+0

数字を逆にするのは良い考えではありません。 –

0

&を別のアプリケーションに貼り付けようとすると、結果が逆になることがありますので、シーケンスを逆にしないでください。代わりに、非CSSのソリューションに興味があるかもしれない:

LRM/RLM‍ 

LRE/RLE…PDF 
+0

ここでPDFの関連性を説明できますか? – Oded

+1

@Oded:PDFはポップ方向の書式設定の略です。 RLE/LRE/RLO/LROを使用すると、方向ブロックの開始を宣言し、PDF文字はその終了を宣言します。 詳細については、http://unicode.org/reports/tr9/#Terminating_Explicit_Directional_Code –

+0

情報ありがとうございました。ポータブルドキュメントフォーマットが何をしなければならないのか分かりませんでした; – Oded

5

x200Eを追加&#でこれを行うための別の方法があります。数字の前に:

<span>&#x200E;+44 780-780-7807</span> 
+1

http:// www。 fileformat.info/info/unicode/char/200e/index.htm – TWiStErRob

1

答えは& lrmです。および& rlm;正しい。 「弱い」方向(句読点や数字、ラテン文字やアラビア/ヘブライ文字のような「強い」方向がない)の記号の前後にこれらの目に見えないマーカーを挿入することで、弱い文字が確実に目的の方向を継承するようになります。

"BiDi"/Bi-Directional Text wikipediaの記事には、Unicodeインタープリタが混在方向のテキストを処理する方法と問題の大きな説明があります。それは私が問題をたくさん理解して助けた:

http://en.wikipedia.org/wiki/Bi-directional_text

私の個人的な解決策は、& LRMを使用しないことです。/ & RLM;私は双方向で作業する必要のあるサイトを構築しており、コンテンツを挿入すると大きな混乱を招くからです。代わりに、CSSの「前」および「後」のプロパティを使用して自動的に挿入することができます。ここではRLMマーカーのために「\ 200F」Unicodeの指定を使用して、例を示します

#RIGHT-TO-LEFT-MARKER-CONTENT, 
.contributor:after, 
/*.contributor:before,*/ 
.right-to-left-marker-content { 
    /*Inserts &rlm; marker to ensure 
    the contained content is always 
    displayed RTL*/ 
    content: "\200F"; 
} 

(CSSは、実際の再旨を回避するために、必要に応じて、あなたがセレクタを追加することができます「DRY CSS」の形式であることに注意してくださいスタイル宣言は何度も重要な部分は、あなたがコンテンツを持っているだけのことです。「\ 200F」と追加その:前または:必要に応じて、セレクタの後

4

私にとっては、スタイルを次は完璧に動作します:

* { 
    unicode-bidi: embed; 
} 

これはチェックできますexample at CodePen(私は知らないヘブライ語、hereのテキストをコピーしました)

関連する問題