Робота з Hyphenation

Іноді необхідно використовувати фенацію для більш компактного розташування тексту в документі. У той же час важливо розуміти, що специфіка фенації слово може відрізнятися для кожної мови.

В даний час гіфенація не використовується як часто, так як вона використовується, особливо в англійських текстах. Тим не менш, використання цієї функції може мати серйозний вплив на документи користувачів – фенація впливає на макет і, в результаті поява вихідних файлів, наприклад, у форматі PDF.

Для коректного розщеплення слів використовуються мовно-специфічні дикції. Aspose.Words Використовуйте розширені алгоритми для роботи з такими словниками і дозволяє отримати однакову гіфенацію, як в Microsoft Wordй

Гіфенаційних словників

З різних мов використовують різні норми і правила для гіфенації слово, оптимальне рішення для правильної гіфенації – використовувати спеціальні словники. Aspose.Words використовує словники OpenOffice.

Для перевірки орфографії, OpenOffice використовує Hunspell Бібліотека, – узагальнення алгоритму гіфенації Текс. Даний алгоритм дозволяє автоматизувати нестандартну гіфенацію з використанням конкурентних стандартних та нестандартних моделей гіфенації. Hunspell використання Хайфен для гіфенації.

Алгоритм Hyphenation

Aspose.Words Реалізація алгоритм гіфенації TeX і може повторно використовувати дикції 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-.NET
Document doc = new Document(MyDir + "German text.docx");
Hyphenation.RegisterDictionary("en-US", MyDir + "hyph_en_US.dic");
Hyphenation.RegisterDictionary("de-CH", MyDir + "hyph_de_CH.dic");
doc.Save(ArtifactsDir + "WorkingWithHyphenation.HyphenateWordsOfLanguages.pdf");

Приклад коду показує, як завантажити дикції фенації для вказаної мови з потоку:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document(MyDir + "German text.docx");
Stream stream = File.OpenRead(MyDir + "hyph_de_CH.dic");
Hyphenation.RegisterDictionary("de-CH", stream);
doc.Save(ArtifactsDir + "WorkingWithHyphenation.LoadHyphenationDictionaryForLanguage.pdf");

В якості альтернативи попередньо реєструвати дикції фенації, можна реєструвати тільки необхідні дикції гіфенаційного типу “за запитом”. Для того, щоб досягти цього, реалізувати IHyphenationCallback інтерфейс і використання статичного зворотного виклику Callbackй

Приклад наступного коду показує, як реалізувати IHyphenationCallback інтерфейс:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
public void HyphenationCallback()
{
try
{
// Register hyphenation callback.
Hyphenation.Callback = new CustomHyphenationCallback();
Document document = new Document(MyDir + "German text.docx");
document.Save(ArtifactsDir + "WorkingWithHyphenation.HyphenationCallback.pdf");
}
catch (Exception e) when (e.Message.StartsWith("Missing hyphenation dictionary"))
{
Console.WriteLine(e.Message);
}
finally
{
Hyphenation.Callback = null;
}
}
public class CustomHyphenationCallback : IHyphenationCallback
{
public void RequestDictionary(string language)
{
string dictionaryFolder = MyDir;
string dictionaryFullFileName;
switch (language)
{
case "en-US":
dictionaryFullFileName = Path.Combine(dictionaryFolder, "hyph_en_US.dic");
break;
case "de-CH":
dictionaryFullFileName = Path.Combine(dictionaryFolder, "hyph_de_CH.dic");
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 і забезпечує ідентичну розбиття рядків у вихідному документі.

Дивитися ще