
페르시아어로 된 Word 문서가 있는데 그 안에는 다음과 같은 문구가 많이 있습니다.
내 문제는 "و نهیب"가 "هایی"에 연결되는 위치입니다.
처음에는 그들 사이에 너비가 0인 비결합 문자가 있는 것처럼 보이지만 실제로 복사하려고 하면 아무 것도 복사되지 않았습니다.
나는 또한 모든 문구를 메모장에 복사했고 다음과 같은 결과를 얻었습니다: "و نسیبهایی" 보시다시피 앞의 두 단어 사이에는 아무 것도 없습니다.
숨겨진 문자가 있는지 확인하기 위해 "홈" 탭의 "단락" 그룹에서 표시/숨기기 ¶를 켜서 결과는 다음과 같습니다.
이제 이 캐릭터로 작업할 수 있는 방법이 있는지 궁금합니다. 예를 들어 ZWNJ로 대체합니다.
해당 문제가 있는 파일(아래도 읽어보세요)
답변1
이것은 내 원래 답변을 완전히 대체합니다(원본 텍스트는 아래에 있음).
문서에서는 단어를 녹색("원하는 대로 복사하는 단어")과 빨간색("원하는 대로 복사하지 않는 단어")으로 표시합니다.
두 유형 모두 ZWNJ를 사용합니다. 예를 들어 오른쪽이 아닌 왼쪽에만 결합해야 하는 Heh 문자 앞에 옵니다.
차이점은 녹색 단어에서는 ZWNJ가 RTL에 입력되었지만 빨간색 단어에서는 LTR에 입력되었다는 것입니다.
일반적으로 ZWNJ를 어떻게 입력하는지 모르겠지만 여기서 기호 대화 상자의 특수 문자 창에서 "너비 없음 선택적 중단"을 선택하면 ZWNJ가 LTR(이 경우 불량)로 입력됩니다. 기호 대화 상자의 문자 테이블에서 문자 0x200C를 선택하면 RTL로 입력됩니다(이 경우 좋음). Word 2010에서 Word->파일-옵션->리본 사용자 정의->키보드 단축키->사용자 정의...로 이동하여 No-Width Optional Break에 키 입력을 할당하면 RTL 텍스트를 입력할 때 해당 키 입력을 누르면 삽입되는 것으로 나타납니다. ZWNJ는 RTL(양호)입니다. 다음과 같이 할당할 수 있습니다.
- 카테고리 목록에서 "공통 기호"까지 아래로 스크롤하여 선택합니다.
- 표시되는 Common Symbols 목록에서 "No-Width Optional Break"를 선택합니다.
- "새 단축키 누르기" 상자를 클릭하세요.
- 원하는 단축키를 누르세요. (저는 실험으로 Ctrl-9를 사용했습니다)
- 할당을 클릭하세요
- 닫기를 클릭하세요
그것이 당신이 필요로 하는 모든 것을 성취할 수 있을지는 모르겠지만, 적어도 무슨 일이 일어나고 있는지 설명해준다고 생각합니다.
(그런 것 아닐까 의심했는데 .docx로 저장해서 XML을 봐야 했습니다. "녹색 단어"는 "run 속성" RTL을 사용하여 단일 단어 "run"으로 인코딩되었습니다(run은 의 시퀀스입니다). 동일한 특성을 공유하는 문자이므로 텍스트 색상을 변경하면 새로운 실행이 발생합니다) 빨간색 단어는 3개의 실행으로 인코딩되었습니다. 즉, 텍스트가 포함된 두 개의 RTL 실행과 ZWNJ 문자가 포함된 비RTL 실행입니다.
LTR ZWNJ를 RTL ZWNJ로 변경하려면 다음 VBA를 사용할 수 있어야 합니다. (VBA를 아는 사람들의 경우 AFAIK에서 RTL 텍스트로 실행을 설정하는 유일한 방법은 Selection 개체의 RTLRun 메서드를 사용하기 때문에 범위가 아닌 선택을 사용하여 작업해야 하는 경우 중 하나입니다.)
Sub replace_LTR_NBZWs_with_RTL_ones()
ActiveDocument.Select
With Selection.Find
.ClearFormatting
.Text = ChrW(8204)
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
While .Execute
Selection.RtlRun
Wend
End With
End Sub
내 답변의 원본 텍스트는 다음과 같습니다 ...
아마도~이다ZWNJ . 이를 선택한 다음 삽입->기호->기호 추가를 클릭하면 ZWNJ(0x200C)가 선택되어야 합니다. 이는 Microsoft가 기호 대화 상자의 "특수 문자" 창에서 "너비 없음 선택적 구분선"이라고 부르는 문자와 동일합니다.
내가 아는 한 NotePad는 ZWNJ를 무시합니다. ZWNJ(그렇다면)를 공백(선택한 경우 스페이스바를 눌러야 함)으로 바꿔야 NotePad가 올바른 문자 형식을 표시하게 될 것으로 생각됩니다.
Word 문서의 한 지점에서 다른 지점으로 복사하면 ZWNJ가 보존됩니다. 하지만 이것이 여러분이 보고 있는 것입니까?
답변2
오늘 나는 문제를 해결하는 다른 방법을 찾았습니다. 비결은 NWOB(앞과 뒤의 문자 포함)를 자체적으로 바꾸는 것입니다. 그러면 Word가 그 트릭을 수행합니다.
- 무엇을 찾다:
(?)^o(?)
- 다음으로 교체:
\1^o\2
- 창 옆
Use wildcards
에 확인 표시를 하는 것을 잊지 마세요.More >>
그런 다음 LTR ZWNJ를 모드와 같은 직사각형으로 변경하고 RTL을 예상한 대로 변경합니다.