Расстановка переносов в html тексте на русском языке

Существует серия правил css для разных браузеров hyphens, -moz-hyphens, -webkit-hyphens, -ms-hyphens

К сожалению эти правила не работают в chrome, поэтому пришлось искать выход.
Я не сторонник нагрузок на сервер, которых можно избежать, поэтому начал искать нет ли уже готового решения на javascript — пусть работу, которую можно переложить на браузер — делает браузер. Плюс к тому, на стороне сервера пришлось бы изменять текст, который попадет в браузер, что может плохо сказаться на индексации поисковиками.

Есть отличный скрипт для расстановки переносов в русском тексте, очень маленький и лаконичный, прямо произведение искусства. Вот он в виде jquery плагина:

$.fn.hyphenate = function() {
var all = «[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]»,
glas = «[аеёиоуыэю\я]»,
sogl = «[бвгджзклмнпрстфхцчшщ]»,
zn = «[йъь]»,
shy = «\xAD»,
re = [];

re[1] = new RegExp(«(«+zn+»)(«+all+all+»)»,»ig»);
re[2] = new RegExp(«(«+glas+»)(«+glas+all+»)»,»ig»);
re[3] = new RegExp(«(«+glas+sogl+»)(«+sogl+glas+»)»,»ig»);
re[4] = new RegExp(«(«+sogl+glas+»)(«+sogl+glas+»)»,»ig»);
re[5] = new RegExp(«(«+glas+sogl+»)(«+sogl+sogl+glas+»)»,»ig»);
re[6] = new RegExp(«(«+glas+sogl+sogl+»)(«+sogl+sogl+glas+»)»,»ig»);
return this.each(function() {
var text = $(this).html();
for (var i = 1; i < 7; ++i) { text = text.replace(re[i], "$1"+shy+"$2"); } $(this).html(text); }); };

Вызывается, как и любой jquery плагин:

$(function() {
$(‘.article-text’).hyphenate();
})

Демонстрацию работы плагина можно посмотреть по ссылке.

Добавить комментарий