Làm việc với dấu gạch nối

Đôi khi cần sử dụng dấu gạch nối để sắp xếp văn bản trong tài liệu gọn hơn. Đồng thời, điều quan trọng là phải hiểu rằng các chi tiết cụ thể của việc gạch nối từ có thể khác nhau đối với mỗi ngôn ngữ.

Ở thời điểm hiện tại, dấu gạch nối không được sử dụng thường xuyên như trước, đặc biệt là trong các văn bản tiếng Anh. Tuy nhiên, việc sử dụng tính năng này có thể có tác động nghiêm trọng đến tài liệu của người dùng – dấu gạch nối ảnh hưởng đến bố cục và do đó, hình thức của các tệp đầu ra, chẳng hạn như ở định dạng PDF.

Để phân tách chính xác các từ, từ điển gạch nối dành riêng cho ngôn ngữ được sử dụng. Aspose.Words sử dụng các thuật toán nâng cao để làm việc với các từ điển như vậy và cho phép bạn có được dấu gạch nối giống như trong Microsoft Word.

Từ điển gạch nối

Vì các ngôn ngữ khác nhau sử dụng các quy tắc và quy tắc khác nhau để gạch nối từ nên giải pháp tối ưu để gạch nối chính xác là sử dụng các từ điển đặc biệt. Aspose.Words sử dụng từ điển OpenOffice.

Để kiểm tra chính tả, OpenOffice sử dụng thư viện Hunspell, đây là một dạng khái quát hóa thuật toán gạch nối của TeX. Thuật toán này cho phép gạch nối không chuẩn tự động bằng cách sử dụng các mẫu gạch nối tiêu chuẩn và tùy chỉnh cạnh tranh. Hunspell sử dụng Dấu gạch nối để gạch nối.

Thuật toán gạch nối

Aspose.Words triển khai thuật toán gạch nối TeX và có thể sử dụng lại các từ điển gạch nối từ OpenOffice.

Cần tính đến các tính năng sau của thuật toán Aspose.Words:

  • Các tham số khoảng cách gạch nối (LEFTHYPHENMIN, RIGHTHYPHENMIN, COMPOUNDLEFTHYPHENMIN, COMPOUNDRIGHTHYPHENMIN) được chỉ định trong từ điển gạch nối sẽ bị bỏ qua. Aspose.Words sử dụng bộ tham số khoảng cách riêng tùy thuộc vào chế độ tương thích của tài liệu.
  • Thuật toán gạch nối trong Aspose.Words hỗ trợ gạch nối tổng hợp. Tuy nhiên, Aspose.Words chia các chuỗi ký tự chứa các ký tự chữ cái và không phải chữ cái hỗn hợp thành các phần chỉ có chữ cái (từ) và gạch nối chúng một cách riêng biệt. Lưu ý rằng logic gạch nối Microsoft Word của các từ ghép phụ thuộc vào chế độ tương thích của tài liệu.
  • Thuật toán gạch nối trong Aspose.Words không triển khai gạch nối không chuẩn. Các mẫu không chuẩn bị bỏ qua.

Đang tải từ điển gạch nối

Để sử dụng tính năng gạch nối, trước tiên hãy đăng ký một từ điển gạch nối. Ví dụ mã sau đây cho biết cách tải từ điển gạch nối cho các ngôn ngữ được chỉ định từ một tệp:

Ví dụ về mã sau đây cho thấy cách tải từ điển gạch nối cho ngôn ngữ được chỉ định từ một luồng:

Để thay thế cho việc đăng ký trước từ điển gạch nối, bạn chỉ có thể đăng ký những từ điển gạch nối được yêu cầu “theo yêu cầu”. Để đạt được điều đó, hãy triển khai giao diện IHyphenationCallback và sử dụng Callback gọi lại tĩnh.

Ví dụ mã sau đây cho thấy cách triển khai giao diện IHyphenationCallback:

Tác động của dấu gạch nối trên bố cục

Khi chia văn bản thành dòng, Aspose.Words kiểm tra từng từ xem nó có khớp hoàn toàn với dòng hiện tại hay không. Nếu một từ khác quá dài không vừa với cuối dòng, theo mặc định, Aspose.Words sẽ di chuyển nó đến đầu dòng tiếp theo thay vì gạch nối nó.

Tuy nhiên, tính năng gạch nối có thể được sử dụng trong Aspose.Words để chèn dấu gạch nối vào các từ nhằm loại bỏ các khoảng trống trong văn bản căn đều hoặc để duy trì độ dài dòng đều trong các cột hẹp. Điều này rõ ràng có thể ảnh hưởng đến số dòng và do đó ảnh hưởng đến số trang. Nói cách khác, việc sử dụng chức năng gạch nối sẽ ảnh hưởng đến bố cục tài liệu.

Gạch nối và căn lề (H&J)

Microsoft Word có logic phức tạp để chọn điểm dừng nếu văn bản được căn đều và bật tính năng gạch nối. Nói tóm lại, Microsoft Word có thể muốn thu nhỏ hoặc kéo dài khoảng trắng để tránh hiện tượng gạch nối dòng. Rất có thể logic này dựa trên Bài viết của Knuth.

Aspose.Words triển khai thuật toán H&J của riêng mình, mang lại kết quả tương tự như Microsoft Word và cung cấp khả năng ngắt dòng giống hệt nhau trong tài liệu đầu ra.

Xem thêm