Расстановка переносов в c #

Я ищу образец проекта, который будет выполнять перенос текста на C #. В идеале это должно быть получено из алгоритма расстановки переносов TeX или аналогичного. В настоящее время меня интересует английский, хотя в будущем могут потребоваться другие языки. Кто-нибудь видел что-то подобное? фон Я планирую включить это в проект MonoTouch с использованием CoreText.


person Ethan    schedule 04.05.2011    source источник


Ответы (2)


Очевидно, алгоритмы Дональда Кнута превосходны. Хотя реализации C # нет, рассматривали ли вы возможность преобразования другой реализации на C #? (Например, вы можете преобразовать реализацию Java, которая довольно близка к C #.)

Другой вариант - использовать более простую реализацию, которую можно найти по адресу этот ответ здесь, на StackOverflow < / а>.

person JasCav    schedule 04.05.2011

Я нашел C # реализацию алгоритма расстановки переносов Кнута-Лянга на https://github.com/alkozko/NHyphenator и вроде нормально работает.

Но на данный момент есть два недостатка:

  1. Он не может загружать файлы шаблонов расстановки переносов TeX из коробки (однако добавление поддержки для них кажется тривиальным).
  2. Неясно, какая лицензия применяется к исходному коду.
person Lukas Pokorny    schedule 11.02.2014
comment
Если бы вы могли подсказать, как конвертировать подобные файлы mirror.ctan.org/language/hyph-utf8/tex/generic/hyph-utf8/ в формат, который использует NHyphenator, для людей, которые понятия не имеют, что содержимое файла любого формата означает, что это было бы здорово. Я обнаружил, что тоже хочу использовать эту библиотеку, и я боюсь, что если я начну читать детали алгоритма, чтобы понять содержимое файла, я, вероятно, в конечном итоге сам перепрограммирую эту вещь ... :( - person NoOne; 04.06.2017
comment
Заглянув внутрь обоих форматов файлов, я бы (вполне безопасно) предположил, что вам просто нужно скопировать содержимое \hyphenation{} в файл hyph-***.hyp.txt, а содержимое \patterns{} в файл hyph-***.pat.txt. Хм ... Не так много работы, чтобы построить для этого парсер ... - person NoOne; 04.06.2017