evg

Кстати сегодня последний день с модными цифрами :) 12.12.12 Ура товарищи! Больше такого совпадения не будет никогда!

В начале для решения задачи по расстановке переносов в словах был жестоко изнасилован гуугл. Оказалось, что для народа имеется модуль расстановки переносов на JavaScript. Hyphenator. Текущая версия взята из http://code.google.com/p/hyphenator/ Не долго думая, был сделан вольный перевод на C#.

Из всех языков, поддерживаемых Hyphenator-ом, оставлены: русский "ru" и британский английский "en-gb". Добавляются очень легко и просто копипастом из Hyphenator-а. (Языковые примитивы находятся в папке pattern) Смотрите исходники.

Все несколько не оптимизированно. Но работает, основная идея понятна :).

Для использования добавьте в проект languages.cs и hyphen.cs. Скачать



   Hyphen ruhyp = new Hyphen("ru");
   List<string> str = hyp.hyphenateWord("Перенос");

В результате в списке str получим набор строк

  str[0] = "Пе";
  str[1] = "ре";
  str[2] = "нос";

Что с этим делать решать уже вам. Пример применения на скриншоте... На КПК довольно много времени занимает конвертация паттернов в связанный список. Надо оптимизировать :)

Косяки в переносах имеются, но не критичные. Вероятно языковые паттерны будут допиливаться. Но необходимо добавить список слов исключений. (Было в hyphenator, я не стал делать ибо тривиально :) ) И вероятно можно сделать кэш перенесенных слов.


Большое спасибо авторам Hyphenator.

Ну и для страждущих еще есть реализация на php: PhpHypher https://github.com/bezumkin/PhpHypher

Коментарии