2017-11-16 5 views
5

다르게 텍스트를 렌더링합니다. 그러나이 텍스트가 ICU를 통해 처리되면 숫자가 오른쪽으로 이동하고 공백과 하이픈, 그리고 아랍어로 이동합니다. ICU의 샘플 애플리케이션 layout.exe에는 오른쪽에 번호가 표시됩니다. 나는 paragraphlayout.cpp을 수정 가능한 모든 재정렬 모드를 설정하지만 결과는 여전히 동일했다 :ICU 레이아웃 샘플 내가, 메모장 등 ++ 양방향 텍스트를</p> <pre><code>1002 -ابو ماجد الانصاري </code></pre> <p>대부분의 편집자 메모장이가 여기에 표시됩니다으로 텍스트를 표시 Microsoft 메모장 및 Word

See Problem Text here

누군가의 도움을 다른 디스플레이 엔진처럼 출력을 제공하기 위해 ICU를 구성 할 수 있습니다.

+0

왜 C 및 C++ 태그입니까? 당신은 그 표를 얻을 것입니다. 한 언어에 더 구체적으로 사용하십시오. – LethalProgrammer

+0

텍스트를 어떻게 처리하고 있습니까? 당신이하는 일에 대한 코드 샘플을 줄 수 있습니까? – mnistic

+0

@mnistic Layout.exe는 ICU의 샘플에 포함 된 샘플 응용 프로그램입니다. 오른쪽의 숫자도 보여줍니다. [ICU 웹 사이트] (http://download.icu-project.org/files/icu4c/59.1/icu4c-59_1-src.zip)에서 다운로드 할 수 있습니다. – MOE

답변

6

정확하게 이해하면 텍스트가 하이픈과 텍스트 뒤에 오는 숫자로 시작됩니다. 메모장 및 기타 편집자는 '쓰기 방향'을 선택할 수 있습니다. 당신이 선택하면 오른쪽에서 왼쪽으로, 당신은 당신의 스크린 샷과 같은 결과를 얻을 수

RTL screenshot

당신이 왼쪽에서 오른쪽으로 방향을 쓰고 유지하려면

, 당신은

ubidi_setPara(para, "1002 -ابو ماجد الانصاري", ‭25, UBIDI_LTR, NULL, pErrorCode); 
명시 적으로 설정할 수 있습니다

또는이 방향을 시행 할 UNICODE 플래그 U + 202A (LEFT-TO-RIGHT EMBEDDING)를 문자열에 삽입 할 수 있습니다. 코드가 C++에있는 경우

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

처럼 작성할 수 없습니다 당신은 (http://icu-project.org/apiref/icu4c-latest/ubidi_8h.htm 참조) renderParagraph()에 대한 입력 매개 변수로 string_to_layout를 사용할 수 있습니다.

+1

@Alex Cohn에게 감사드립니다. 나는 UBIDI_DEFAULT_LTR을 사용하고 있었다. – MOE

관련 문제