2017-11-16 104 views
5

farklı metin oluşturur. Fakat bu metni ICU aracılığıyla işlediğimde sayı sağa, sonra boşluklara, kısa çizgi ve sonra Arapçaya kaydırılır. ICU'nun örnek uygulama layout.exe de sağdaki sayıyı gösterir. Ben paragraphlayout.cpp değiştirilebilir ve tüm olası yeniden sıralama modlarını ayarlamak ancak sonuç hala aynı adres:yoğun bakım Düzeni örnek ben, not defteri vb ++ iki yönlü metni</p> <pre><code>1002 -ابو ماجد الانصاري </code></pre> <p>En editörler not defteri var burada gösterildiği gibi metni gösterecek Microsoft Not Defteri ve Word

See Problem Text here

birisi yardımcı diğer görüntüleme motorları gibi çıkış sağlamak için yoğun bakıma yapılandırmak Can.

+0

Neden bu kadar C ve C++ etiketleri? Bunun için oy vereceksin. Bir dile daha özel olsun. – LethalProgrammer

+0

Metni nasıl işliyorsunuz? Yaptığın şeyin bir örneğini verebilir misin? – mnistic

+0

@mnistic Layout.exe, ICU örneklerinde yer alan örnek bir uygulamadır. Ayrıca sağdaki sayıyı gösterir. [ICU Web Sitesi] 'nden indirilebilir (http://download.icu-project.org/files/icu4c/59.1/icu4c-59_1-src.zip) – MOE

cevap

6

Doğru bir şekilde anlarsam, metniniz sayısalla başlar ve ardından tire ve metin gelir. Not defteri ve diğer editörler 'yazma yönünü' seçmenize izin verir. seçerseniz sağdan sola-, siz, ekran görüntüsü olarak aynı sonucu elde

RTL screenshot

Eğer soldan sağa yönünü yazmaya korumak istiyorsanız

, sen

ubidi_setPara(para, "1002 -ابو ماجد الانصاري", ‭25, UBIDI_LTR, NULL, pErrorCode); 
açıkça ayarlayabilirsiniz

veya bu yönde zorlanacak bir UNICODE bayrağı U + 202A (LEFT-TO-RIGHT EMBEDDING) gömebilirsiniz. Kodunuz C++ ise,

icu::UnicodeString string_to_layout = "\x202a"; 
string_to_layout += "1002 -ابو ماجد الانصاري"; 

gibi bir şey yazabilir ve sen değil (http://icu-project.org/apiref/icu4c-latest/ubidi_8h.htm bakınız) renderParagraph() için giriş parametresi olarak string_to_layout kullanabilirsiniz.

+1

Teşekkür ederim @Alex Cohn bu işe yaradı. UBIDI_DEFAULT_LTR kullanıyordum. – MOE