Đây là sự thay thế hoàn toàn cho Câu trả lời gốc của tôi (văn bản gốc bên dưới).
Tài liệu của bạn đánh dấu các từ màu xanh lá cây ("từ sao chép cách bạn muốn") và màu đỏ ("từ không sao chép cách bạn muốn").
Cả hai loại đều sử dụng ZWNJ, ví dụ: đi trước một nhân vật Heh chỉ nên tham gia bên trái, không phải bên phải.
Sự khác biệt là trong các từ màu xanh lá cây, ZWNJ đã được nhập RTL, nhưng trong các từ màu đỏ, nó đã được nhập LTR.
Tôi không biết bạn thường nhập ZWNJ như thế nào, nhưng ở đây, nếu tôi chọn "Ngắt tùy chọn không có chiều rộng" từ ngăn Ký tự đặc biệt trong hộp thoại Biểu tượng, trong khi đó, ZWNJ được nhập LTR (xấu, trong trường hợp này) nếu tôi chọn ký tự 0x200C từ bảng ký tự trong hộp thoại Biểu tượng, nó được nhập RTL (tốt, trong trường hợp này). Trong Word 2010, nếu tôi đi vào Word-> Tùy chọn tệp-> Tùy chỉnh ruy băng-> Phím tắt bàn phím-> Tùy chỉnh ... và gán một phím tắt cho Ngắt tùy chọn không có chiều rộng, nhấn phím đó khi nhập văn bản RTL sẽ xuất hiện để chèn ZWNJ là RTL (tốt). Bạn có thể chỉ định như sau:
- trong danh sách Danh mục, cuộn xuống "Biểu tượng chung" và chọn nó
- trong danh sách Biểu tượng chung được hiển thị, chọn "Không có tùy chọn phá vỡ chiều rộng"
- bấm vào hộp "Nhấn phím tắt mới"
- nhấn phím tắt bạn muốn (Tôi đã sử dụng ctrl-9 làm thử nghiệm)
- nhấp vào Gán
- bấm Đóng
Tôi không biết nếu điều đó sẽ đạt được mọi thứ bạn cần, nhưng tôi nghĩ nó ít nhất giải thích những gì đang xảy ra.
(Tôi nghi ngờ đó là một thứ tương tự, nhưng tôi phải lưu dưới dạng .docx và xem XML. "Các từ màu xanh lá cây" được mã hóa trong một từ "run" với "run property" RTL (một chuỗi là một chuỗi các ký tự có chung đặc điểm, vì vậy nếu bạn thay đổi màu văn bản, sẽ có một lần chạy mới). Các từ màu đỏ được mã hóa thành ba lần chạy: hai lần chạy RTL chứa văn bản và một lần chạy không RTL có chứa ký tự ZWNJ.)
Để thay đổi LTR ZWNJ thành RTL, bạn có thể sử dụng VBA sau. (Đối với những người biết VBA, đây là một trong những dịp bạn phải làm việc với Lựa chọn thay vì Phạm vi, vì AFAIK cách duy nhất để đặt văn bản Run to RTL là thông qua phương thức RTLRun của đối tượng Lựa chọn):
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
Văn bản gốc của câu trả lời của tôi theo sau ...
Nó có thể là một ZWNJ. Nếu bạn chọn nó, sau đó nhấp vào Chèn-> Biểu tượng-> Biểu tượng khác, ZWNJ (0x200C) sẽ được chọn. Nó giống như ký tự mà Microsoft gọi là "Không phá vỡ tùy chọn không có chiều rộng" trong ngăn "Ký tự đặc biệt" trong hộp thoại Biểu tượng.
Theo tôi biết, NotePad bỏ qua ZWNJ. Tôi nghi ngờ bạn sẽ phải thay thế ZWNJ (nếu đó là chính xác) bằng một khoảng trắng (được chọn, bạn phải có thể nhấn phím cách để làm điều đó) sẽ khiến NotePad hiển thị dạng ký tự chính xác.
Sao chép từ một điểm trong tài liệu Word sang điểm khác sẽ giữ được ZWNJ, nhưng đó có phải là những gì bạn đang thấy không?