Робота з Hyphenation
Іноді необхідно використовувати фенацію для більш компактного розташування тексту в документі. У той же час важливо розуміти, що специфіка фенації слово може відрізнятися для кожної мови.
В даний час гіфенація не використовується як часто, так як вона використовується, особливо в англійських текстах. Тим не менш, використання цієї функції може мати серйозний вплив на документи користувачів – фенація впливає на макет і, в результаті поява вихідних файлів, наприклад, у форматі PDF.
Для коректного розщеплення слів використовуються мовно-специфічні дикції. Aspose.Words Використовуйте розширені алгоритми для роботи з такими словниками і дозволяє отримати однакову гіфенацію, як в Microsoft Wordй
Гіфенаційних словників
З різних мов використовують різні норми і правила для гіфенації слово, оптимальне рішення для правильної гіфенації – використовувати спеціальні словники. Aspose.Words використовує словники OpenOffice.
Для перевірки записів, OpenOffice використовує Hunspell Бібліотека, яка є узагальненням алгоритму гіфенації TeX. Даний алгоритм дозволяє автоматизувати нестандартну гіфенацію з використанням конкурентних стандартних і нестандартних моделей гіфенації. Hunspell використання Хайфен для гіфенації.
Алгоритм Hyphenation
Aspose.Words Реалізація Текст Текс і може повторно використовувати дикції OpenOffice.
Наступні функції Aspose.Words алгоритми слід враховувати:
- Параметри дистанції гіфенації (LEFTHYPHENMIN, RIGHTHYPHENMIN, COMПУНЛЕФТИПЕНМІН, COMPOUNDRIGHTHYPHENMIN) зазначений у словнику гіфенації. Aspose.Words використовує власний набір параметрів відстані в залежності від режиму сумісності документа.
- Ім’я * Алгоритм фенації в Aspose.Words опори композитна гіфенаціяй Однак Aspose.Words Розділяє послідовність символів, що містять змішані алфавітні та неальфа-бетичні символи в алфавітно-тільки частини (слова) і фенати їх окремо. Примітка Microsoft Word логіка вірування слів сполук залежить від режиму сумісності документа.
- Ім’я * Алгоритм фенації в Aspose.Words не реалізовує нестандартна гіфенаціяй Нестандартні візерунки ігноруються.
Навантажувачі Hyphenation
Для використання функції гіфенації спочатку реєструють словник гіфенації. Приклад коду показує, як завантажити дикції фенації для зазначених мов з файлу:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(dataDir + "in.docx"); | |
Hyphenation.registerDictionary("en-US", dataDir + "hyph_en_US.dic"); | |
Hyphenation.registerDictionary("de-CH", dataDir + "hyph_de_CH.dic"); | |
doc.save(dataDir + "LoadHyphenationDictionaryFromFile_Out.pdf"); |
Приклад коду показує, як завантажити дикції фенації для вказаної мови з потоку:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(dataDir + "in.docx"); | |
InputStream stream = new FileInputStream(dataDir + "hyph_de_CH.dic"); | |
Hyphenation.registerDictionary("de-CH", stream); | |
doc.save(dataDir + "LoadHyphenationDictionaryFromStream_Out.pdf"); |
В якості альтернативи попередньо реєструвати дикції гіфенації, можна реєструвати тільки необхідні дикції гіфенації “за запитом”. Для того, щоб досягти цього, реалізувати IHyphenationCallback інтерфейс і використання статичного зворотного виклику Callbackй
Приклад коду показує, як реалізувати IHyphenationCallback інтерфейс:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
public static void hyphenationCallback() { | |
try { | |
// Register hyphenation callback. | |
Hyphenation.setCallback(new CustomHyphenationCallback()); | |
Document document = new Document(dataDir + "in.docx"); | |
document.save(dataDir + "LoadHyphenationDictionaryFromStream_Out.pdf"); | |
} catch (Exception e) { | |
System.out.println(e.getMessage()); | |
} finally { | |
Hyphenation.setCallback(null); | |
} | |
} | |
static class CustomHyphenationCallback implements IHyphenationCallback { | |
public void requestDictionary(String language) throws Exception { | |
String dictionaryFolder = dataDir; | |
String dictionaryFullFileName; | |
switch (language) { | |
case "en-US": | |
dictionaryFullFileName = new File(dictionaryFolder, "hyph_en_US.dic").getPath(); | |
break; | |
case "de-CH": | |
dictionaryFullFileName = new File(dictionaryFolder, "hyph_de_CH.dic").getPath(); | |
break; | |
default: | |
throw new Exception("Missing hyphenation dictionary for " + language); | |
} | |
// Register dictionary for requested language. | |
Hyphenation.registerDictionary(language, dictionaryFullFileName); | |
} | |
} |
Вплив Hyphenation на Layout
При розірванні тексту в лінії, Aspose.Words перевіряє кожне слово, чи повністю вписується в поточну лінію. Якщо інше слово занадто довгий, щоб відповідати в кінці рядка, за замовчуванням Aspose.Words пересуває його на початок наступної лінії замість його гіфенування.
Однак функція гіфенації може використовуватися в Aspose.Words щоб вставити фени на слова, щоб усунути проміжки в об’єктивному тексті або підтримувати рівномірну довжину лінії в вузьких стовпчиках. Це, очевидно, впливає на кількість рядків і тому кількість сторінок. Іншими словами, використовуючи функцію гіфенації впливає на макет документа.
Гіфенація та обґрунтування (H&J)
Microsoft Word має комплексну логіку вибору точки розриву, якщо ввімкнено текст і гіфенація. коротко, Microsoft Word може віддати перевагу усадженню або розтягуванню пробілів, щоб уникнути гіфенації лінії. Більшість, ймовірно, ця логіка базується на Стаття Кнутай
Aspose.Words впроваджує власний алгоритм H&J, який дає той же результат, що Microsoft Word і забезпечує ідентичну розбиття рядків у вихідному документі.
Дивитися ще
- EnglishEspañol中文РусскийУкраїнськаPolskiItalianoEspañol汉语Bahasa Indonesiaहिन्दीPortuguês日本語DeutschFrançaisภาษาไทยελληνικά اللغة العربية EnglishDeutschPусский简体中文中國傳統EspañolالعربيةFrançaisελληνικάDanskАнглійскаябългарскиCatalàČeskýEestiSuomiGaeilgeहिन्दीHrvatskiMagyarIndonesiaIcelandicItalianoעברי日本の한국의LietuvosLatvijasмакедонскиMalayMaltiNederlandsNorskPolskiPortuguêsRomânescSlovenskýSlovenskiShqiptarCрпскиSvenskaไทยTürkçeYкраїнськийTiếng việtייִדישKiswahili EnglishDeutschPусский简体中文中國傳統EspañolالعربيةFrançaisελληνικάDanskАнглійская
- Нестандартне гіфенування
- Українська, Русский, Беларуская