Praca z dzieleniem wyrazów
Czasami konieczne jest użycie dzielenia wyrazów, aby uzyskać bardziej zwarty układ tekstu w dokumencie. Jednocześnie ważne jest, aby zrozumieć, że specyfika dzielenia wyrazów może się różnić w zależności od języka.
Obecnie dzielenie wyrazów nie jest już stosowane tak często jak kiedyś, zwłaszcza w tekstach angielskich. Niemniej jednak użycie tej funkcji może mieć poważny wpływ na dokumenty użytkownika – dzielenie wyrazów wpływa na układ, a co za tym idzie na wygląd plików wyjściowych, na przykład w formacie PDF.
W celu prawidłowego podziału słów stosowane są słowniki dzielenia wyrazów specyficzne dla danego języka. Aspose.Words wykorzystuje zaawansowane algorytmy do pracy z takimi słownikami i pozwala uzyskać takie samo dzielenie wyrazów jak w Microsoft Word.
Słowniki dzielenia wyrazów
Ponieważ w różnych językach obowiązują różne normy i zasady dzielenia słów, optymalnym rozwiązaniem dla prawidłowego dzielenia wyrazów jest korzystanie ze specjalnych słowników. Aspose.Words korzysta ze słowników OpenOffice.
Do sprawdzania pisowni OpenOffice używa Biblioteka Hunspell, który jest uogólnieniem algorytmu dzielenia wyrazów TeX-a. Algorytm ten pozwala na automatyczne niestandardowe dzielenie wyrazów przy użyciu konkurencyjnych standardowych i niestandardowych wzorców dzielenia wyrazów. Hunspell używa formatu Łącznik do dzielenia wyrazów.
Algorytm dzielenia wyrazów
Aspose.Words implementuje algorytm dzielenia wyrazów TeX i może ponownie wykorzystywać słowniki dzielenia wyrazów OpenOffice.
Należy wziąć pod uwagę następujące cechy algorytmów Aspose.Words:
- Parametry odległości dzielenia wyrazów (LEFTHYPHENMIN, RIGHTHYPHENMIN, COMPOUNDLEFTHYPHENMIN, COMPOUNDRIGHTHYPHENMIN) określone w słowniku dzielenia wyrazów są ignorowane. Aspose.Words wykorzystuje własny zestaw parametrów odległości w zależności od trybu zgodności dokumentu.
- Algorytm dzielenia wyrazów w Aspose.Words obsługuje dzielenie wyrazów złożonych. Jednak Aspose.Words dzieli sekwencje znaków zawierające mieszane znaki alfabetyczne i niealfabetyczne na części składające się wyłącznie z alfabetu (słowa) i dzieli je oddzielnie. Należy pamiętać, że logika Microsoft Word dzielenia wyrazów złożonych zależy od trybu zgodności dokumentu.
- Algorytm dzielenia wyrazów w Aspose.Words nie implementuje niestandardowe dzielenie wyrazów. Wzory niestandardowe są ignorowane.
Ładowanie słowników dzielenia wyrazów
Aby skorzystać z funkcji dzielenia wyrazów, najpierw zarejestruj słownik dzielenia wyrazów. Poniższy przykład kodu pokazuje, jak załadować słowniki dzielenia wyrazów dla określonych języków z pliku:
Poniższy przykład kodu pokazuje, jak załadować słowniki dzielenia wyrazów dla określonego języka ze strumienia:
Alternatywą dla wstępnej rejestracji słowników dzielenia wyrazów jest możliwość zarejestrowania “na żądanie” tylko wymaganych słowników dzielenia wyrazów. Aby to osiągnąć, zaimplementuj interfejs IHyphenationCallback i użyj statycznego wywołania zwrotnego Callback.
Poniższy przykład kodu pokazuje, jak zaimplementować interfejs IHyphenationCallback:
Wpływ dzielenia wyrazów na układ
Dzieląc tekst na linie, Aspose.Words sprawdza każde słowo, czy mieści się w całości w bieżącym wierszu. Jeśli inne słowo jest zbyt długie, aby zmieścić się na końcu linii, Aspose.Words domyślnie przenosi je na początek następnej linii, zamiast je dzielić.
Jednakże funkcji dzielenia wyrazów można używać w Aspose.Words do wstawiania łączników do słów, aby wyeliminować luki w wyjustowanym tekście lub zachować równą długość linii w wąskich kolumnach. Może to oczywiście wpłynąć na liczbę wierszy, a tym samym na liczbę stron. Innymi słowy, użycie funkcji dzielenia wyrazów wpływa na układ dokumentu.
Dzielenie wyrazów i justowanie (H&J)
Microsoft Word ma złożoną logikę wyboru punktu przerwania, jeśli tekst jest wyjustowany i włączone jest dzielenie wyrazów. Krótko mówiąc, Microsoft Word może preferować zmniejszanie lub rozciąganie spacji, aby uniknąć dzielenia wierszy. Najprawdopodobniej ta logika opiera się na artykuł Knutha.
Aspose.Words implementuje własny algorytm H&J, który daje taki sam wynik jak Microsoft Word i zapewnia identyczne łamanie linii w dokumencie wyjściowym.