Робота з розстановкою переносів
Іноді буває необхідно використовувати розстановку переносів для більш компактного розміщення тексту в документі. У той же час важливо розуміти, що особливості розстановки переносів слів можуть відрізнятися для кожної мови.
В даний час перенесення використовується не так часто, як раніше, особливо в текстах англійською мовою. Проте, використання цієї функції може мати серйозний вплив на призначені для користувача документи – Розстановка переносів впливає на оформлення і, як наслідок, на зовнішній вигляд вихідних файлів, наприклад, у форматі PDF.
Для коректного поділу слів використовуються словники переносів для конкретних мов. Aspose.Words використовує просунуті алгоритми для роботи з такими словниками і дозволяє отримати ту ж розстановку переносів, що і в Microsoft Word.
Словники для розстановки переносів
Оскільки в різних мовах використовуються різні норми і правила перенесення слів, оптимальним рішенням для правильної розстановки переносів є використання спеціальних словників. Aspose.Words використовує OpenOffice словники.
Для перевірки орфографії OpenOffice використовує Hunspell бібліотека, що є узагальненням алгоритму перенесення в TeX. Цей алгоритм дозволяє автоматично розставляти нестандартні переноси, використовуючи конкуруючі стандартні і призначені для користувача шаблони розстановки переносів. Hunspell використовує Дефіс для розстановки переносів.
Алгоритм розстановки переносів
Aspose.Words реалізує алгоритм розстановки переносів в TeX і може повторно використовувати OpenOffice словники переносу.
Слід враховувати наступні особливості алгоритмів Aspose.Words:
- Параметри відстані між перенесеннями (LEFTHYPHENMIN, RIGHTHYPHENMIN, COMPOUNDLEFTHYPHENMIN, COMPOUNDRIGHTHYPHENMIN), зазначені в словнику переносів, ігноруються. Aspose.Words використовує власний набір параметрів відстані залежно від режиму сумісності з документом.
- Алгоритм розстановки переносів в Aspose.Words підтримує складові переноси. Однак Aspose.Words розбиває послідовності символів, що містять змішані літерні та не алфавітні символи, на частини (слова), що містять лише літери, і переносить їх окремо. Зверніть увагу, що Microsoft Word логіка розміщення складних слів через дефіс залежить від режиму сумісності документів.
- Алгоритм перенесення в Aspose.Words не реалізує нестандартну розстановку переносів. Нестандартні шаблони ігноруються.
Завантаження словників розстановки переносів
Щоб скористатися функцією перенесення, спочатку Зареєструйте словник перенесення.Наступний приклад коду показує, як завантажити словники переносу для зазначених мов із файлу:
Наступний приклад коду показує, як завантажити словники перенесення для вказаної мови з потоку:
В якості альтернативи попередньої реєстрації словників розстановки переносів можна зареєструвати тільки необхідні словники розстановки переносів “за запитом”. Для досягнення цієї мети реалізуйте інтерфейс IHyphenationCallback і використовуйте статичний зворотний виклик Callback.
Наступний приклад коду показує, як реалізувати інтерфейс IHyphenationCallback:
Вплив розстановки переносів на макет
При розбитті тексту на рядки Aspose.Words перевіряє, чи повністю кожне слово поміщається в поточному рядку. Якщо інше слово занадто довге, щоб поміститися в кінці рядка, за замовчуванням Aspose.Words переміщує його на початок наступного рядка, а не переносить через дефіс.
Однак функцію перенесення можна використовувати в Aspose.Words для вставки дефісів у слова, щоб усунути пробіли в вирівняному тексті або зберегти однакову довжину рядка у вузьких стовпцях. Очевидно, що це може вплинути на кількість рядків і, отже, на кількість сторінок. Іншими словами, використання функції перенесення впливає на макет документа.
Розстановка переносів і їх обгрунтування (H & J)
Microsoft Word має складну логіку вибору точки зупину, якщо текст вирівняний по ширині і включена Розстановка переносів. Коротше кажучи, Microsoft Word може віддати перевагу скороченню або розтягуванню пробілів, щоб уникнути перенесення рядків. Швидше за все, ця логіка заснована на статті Knuth.
Aspose.Words реалізує власний алгоритм H&J, який дає той самий результат, що і Microsoft Word, і забезпечує ідентичну розбивку рядків у вихідному документі.