2017-11-16 15 views
5

Tôi có một văn bản hai chiềuICU Layout mẫu làm cho văn bản khác với Microsoft Notepad và Word

1002 -ابو ماجد الانصاري 

Hầu hết các biên tập viên notepad ++, notepad, vv hiển thị các văn bản như nó được hiển thị ở đây. Nhưng khi tôi nhận được văn bản này được xử lý thông qua ICU số được chuyển sang bên phải sau đó dấu cách và dấu gạch nối và sau đó là tiếng Ả Rập. Bố cục ứng dụng mẫu của ICU cũng hiển thị số ở bên phải. tôi đã sửa đổi paragraphlayout.cpp và đặt tất cả các chế độ sắp xếp lại càng tốt nhưng kết quả vẫn như cũ:

See Problem Text here

Có thể ai đó giúp đỡ để cấu hình ICU để cung cấp đầu ra như động cơ hiển thị khác làm.

+0

Tại sao có thẻ C và C++? Bạn sẽ nhận được phiếu bầu cho điều đó. Giữ nó cụ thể hơn cho một ngôn ngữ. – LethalProgrammer

+0

Bạn xử lý văn bản như thế nào? Bạn có thể đưa ra một mẫu mã về những gì bạn đang làm không? – mnistic

+0

@mnistic Layout.exe là một ứng dụng mẫu có trong các mẫu của ICU. Nó cũng hiển thị số ở bên phải. Nó có thể được tải xuống từ [Trang web của ICU] (http://download.icu-project.org/files/icu4c/59.1/icu4c-59_1-src.zip) – MOE

Trả lời

6

Nếu tôi hiểu chính xác, văn bản của bạn 'bắt đầu' bằng số, được theo sau bởi dấu gạch nối và văn bản. Notepad và các trình soạn thảo khác cho phép bạn chọn 'hướng viết'. Nếu bạn chọn từ phải sang trái, bạn sẽ có được kết quả tương tự như ảnh chụp màn hình của bạn,

RTL screenshot

Nếu bạn muốn duy trì trái sang phải bằng văn bản chỉ đạo, bạn có thể thiết lập nó một cách rõ ràng

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

hoặc bạn có thể nhúng cờ UNICODE U + 202A (LEFT-TO-RIGHT EMBEDDING) vào chuỗi của bạn sẽ thực thi hướng này. Nếu mã của bạn là trong C++, bạn có thể viết một cái gì đó giống như

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

và không bạn có thể sử dụng string_to_layout như tham số đầu vào cho renderParagraph() (xem http://icu-project.org/apiref/icu4c-latest/ubidi_8h.htm).

+1

Cảm ơn bạn @Alex Cohn đã làm việc này. Tôi đã sử dụng UBIDI_DEFAULT_LTR. – MOE

Các vấn đề liên quan