Помогает автоматически расставить неразрывные пробелы, исправить мелкие опечатки, привести кавычки к правильному виду, заменить дефисы на тире в нужных местах и многое другое.
Попробуйте типограф в действии.
- гибкость и расширяемость;
- UTF-8;
- кроссплатформенность;
- кроссбраузерность;
- поддержка Node.js;
- типографирование на лету;
- TDD.
- TXT
- HTML
- XML
- SVG
npm install typograf
<script src="./node_modules/typograf/dist/typograf.min.js"></script>
<script>
var tp = new Typograf({lang: 'ru'});
alert(tp.execute(' Мир - мой мир! '));
</script>
npm install typograf
const Typograf = require('typograf');
const tp = new Typograf({lang: 'ru'});
console.log(tp.execute(' Мир - мой мир!! '));
По умолчанию висячая пунктуация отключена.
Для включения необходимо подключить правила:
var Typograf = require('typograf'),
tp = new Typograf({lang: 'ru'});
tp.enable('ru/optalign/*');
console.log(tp.execute('"Мир"'));
А также в HTML-код страницы добавить:
<!-- Для висячей пунктуации -->
<link rel="stylesheet" href="dist/typograf.css" />
var tp = new Typograf({lang: 'ru'});
tp.enable('ru/money/ruble'); // Включить правило
tp.enable('ru/money/*'); // Включить все правила в группе
tp.enable('*'); // Включить все правила
//...
tp.disable('ru/money/ruble'); // Отключить правило
tp.disable('ru/money/*'); // Отключить все правила в группе
tp.disable('*'); // Отключить все правила
var tp = new Typograf({lang: 'ru'});
// Название правила, название настройки, значение
// Неразрывный пробел перед последним словом в предложении, не более 5 символов
tp.setting('common/nbsp/beforeShortLastWord', 'lengthLastWord', 5);
// Вложенные кавычки тоже «ёлочки»
tp.setting('ru/punctuation/quote', 'lquote2', '«');
tp.setting('ru/punctuation/quote', 'rquote2', '»');
tp.setting('ru/punctuation/quote', 'lquote3', '«');
tp.setting('ru/punctuation/quote', 'rquote3', '»');
// Неразрывный пробел после короткого слова, не более 3 символов
tp.setting('common/nbsp/afterShortWord', 'lengthShortWord', 3);
Typograf.rule({
name: 'common/other/emoji',
handler: function (text) {
return text.replace(/:-\)/g, '\uD83D\uDE0A');
}
});
// Режим по умолчанию, HTML-сущности, как UTF-8 символы
var tp = new Typograf({lang: 'ru'});
tp.execute('...'); // …
// HTML-сущности, как имена
var tpName = new Typograf({lang: 'ru', mode: 'name'});
tpName.execute('...'); // …
// HTML-сущности, как цифры
var tpDigit = new Typograf({lang: 'ru', mode: 'digit'});
tpDigit.execute('...'); // …
Данный live-режим необходим, если текст типографируется на каждый ввод символа в текстовых полях.
var tp = new Typograf({lang: 'ru', live: true});
По умолчанию типограф не заменяет неразрывные пробелы на обычные, чтобы не удалить ранее проставленные неразрывные пробелы. Если в тексте неправильно расставлены неразрывные пробелы, включите правило common/nbsp/replaceNbsp
.
Перед типографированием в live-режиме неразрывные пробелы заменяются на обычные, т. к. один и тот же текст типографируется многократно при каждом вводе символа.
var tp = new Typograf({lang: 'ru'});
// Отключить типографирование внутри тега <no-typography>
tp.addSafeTag('<no-typography>', '</no-typography>');
//...
// Отключить типографирование внутри управляющих конструкций какого-нибудь шаблонизатора
tp.addSafeTag('\\{\\{', '\\}\\}'); // {{...}}
tp.addSafeTag('\\[\\[', '\\]\\]'); // [[...]]
//...
// Отключить типографирование внутри PHP-кода
tp.addSafeTag('<\\?php', '\\?>');
tp.execute(text);
Если typograf.js
сжимается вместе с другими js-файлами в UglifyJS
,
то необходимо использовать опцию ascii_only: false
, иначе типограф будет работать некорректно.
git clone https://github.com/typograf/typograf.git
Пересборка:
npm run rebuild
Пересборка и запуск тестов:
npm test
Подготовка новой версии:
npm run dist
Проверка скорости работы правил:
npm run benchmark
MIT License