2017-12-09 5 views
1

アラビア語の歌詞にいくつかの和音を表示したいと思います。英語では、私は、等幅フォントを使用しての一般的に使用されるシステムを使用して、和音をラインアップするためにスペースを使用して、このようにしています:アラビア語は右であるため、アラビア語で右から左のテキストよりも、ラテン語のコード名を整列するのに、どのようにUnicodeを使用しますか?

G C  D 
From all my heart 

、これを行うことの困難があり、左から右へ、和音は左から右になります。これはイメージで、私が探している結果である:

Screenshot of Arabic lyrics and English chords

多くはである何、私は、ユーザーが論理的な順序で和音と歌詞を入力できるようにしたいと思います。ユーザーは最初にGを入力し、次にCを入力し、次にDを入力する必要があります。特殊なUnicode文字を使用しても問題ありませんが、論理的な順序は変わりません。

私はこの試みた

:(私は和音が何であるかを順番にそれは明らかにするために、HTMLは、この例ではスペースとして改行を処理することの利点を撮影した

<div dir="rtl" style="font-family: monospace"> 
 
    G 
 
    C 
 
    D 
 
    <br> 
 
من كل قلبي 
 
</div>

を。

スニペットを実行するとわかるように、論理的な順序で入力されたコードは、間違った順序で表示されます。 Unicodeアルゴリズムは、これらがスペースで区切られた左から右の単語であることを認識し、全体的なコンテキストが右から左であっても、左から右に表示します。 Unicodeでこの動作を無効にする方法はありますか?

答えて

1

は、U + 202C POP DIRECTIONAL書式設定を使用してブロックを終了する、のは右から左へ埋め込むU + 202Bを使用してみましょう:

<div dir="rtl" style="font-family: monospace"> 
 
    &#x202B; 
 
    G 
 
    C 
 
    D 
 
    &#x202C; 
 
    <br> 
 
من كل قلبي 
 
</div>

いや、これは動作しません。 U + 202Bは、弱い文字にのみ影響し、!.などの文字は、方向性を継承しません。 GC、およびDの文字は左から右の方向性を継承しているため、影響を受けません。

OK、それでは、再びU + 202Cを使用してブロックを終了し、代わりにU + 202E RIGHT-TO-LEFT OVERRIDEを使用してみましょう:

<div dir="rtl" style="font-family: monospace"> 
 
    &#x202E; 
 
    G 
 
    C 
 
    D 
 
    &#x202C; 
 
    <br> 
 
من كل قلبي 
 
</div>

Woohoo!これは最後に、質問のイメージにあるような結果を与えます。これを回避するには

<div dir="rtl" style="font-family: monospace"> 
 
    &#x202E; 
 
    Gm 
 
    Cm 
 
    Dm 
 
    &#x202C; 
 
    <br> 
 
من كل قلبي 
 
</div>

:それはマイナーな和音のための問題である、右から左へ行くには、同じ単語内の文字を強制的に残念ながら、それは、かなりのない作業を行います、あなたはこのようなコードで終わる、加えて、U + 202D左から右へのオーバーライドを使用する必要があります。

<div dir="rtl" style="font-family: monospace"> 
 
    &#x202E; 
 
    &#x202D;Gm&#x202C; 
 
    &#x202D;Cm&#x202C; 
 
    &#x202D;Dm&#x202C; 
 
    &#x202C; 
 
    <br> 
 
من كل قلبي 
 
</div>

関連する問題