Markdown-it — это высокопроизводительная библиотека для парсинга Markdown в JavaScript, поддерживающая расширяемость через плагины и конфигурацию рендеринга. Одной из частых задач при работе с текстами является корректное отображение специальных символов, таких как © (копирайт) и ™ (товарный знак). Markdown по умолчанию обрабатывает эти символы как обычный текст, но с помощью Markdown-it их можно рендерить корректно в HTML с сохранением семантики.
Markdown-it поддерживает стандартные HTML-сущности. Для символов копирайта и товарного знака можно использовать:
© 2026 MyCompany
™ MyProduct
В HTML это будет преобразовано в:
© 2026 MyCompany
™ MyProduct
Преимущества подхода через HTML-сущности:
Markdown-it корректно обрабатывает символы Unicode. Можно вставлять символы напрямую:
© 2026 MyCompany
™ MyProduct
При парсинге Markdown-it генерирует HTML, где символы остаются в Unicode:
<p>© 2026 MyCompany<br>™ MyProduct</p>
Особенности:
Markdown-it позволяет создавать кастомные рендереры и фильтры через
плагины. Например, можно автоматически оборачивать символы копирайта и
товарного знака в <span> с CSS-классами для
стилизации:
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
md.core.ruler.push('replace_symbols', function(state) {
state.tokens.forEach(token => {
if (token.type === 'inline') {
token.children.forEach(child => {
if (child.type === 'text') {
child.content = child.content
.replace(/©/g, '<span class="copyright">©</span>')
.replace(/™/g, '<span class="trademark">™</span>');
}
});
}
});
});
const result = md.render('© 2026 MyCompany\n™ MyProduct');
console.log(result);
Результат:
<p><span class="copyright">©</span> 2026 MyCompany<br><span class="trademark">™</span> MyProduct</p>
Преимущества такого подхода:
Регулярные выражения позволяют находить символы в любом месте текста и преобразовывать их в кастомные блоки или элементы. В комбинации с Markdown-it это даёт высокий уровень контроля:
md.renderer.rules.text = function(tokens, idx) {
return tokens[idx].content
.replace(/©/g, '©')
.replace(/™/g, '™');
};
Этот метод заменяет все символы © и ™ на HTML-сущности при рендеринге, сохраняя текст в исходном виде в Markdown.
Markdown-it позволяет экранировать символы через обратный слэш:
\© 2026 MyCompany
\™ MyProduct
Это предотвращает их обработку как специальных символов и выводит в HTML буквально:
<p>© 2026 MyCompany<br>™ MyProduct</p>
Особенности использования:
Эти методы обеспечивают гибкую работу с символами © и ™ в Markdown-it, позволяя сочетать семантику текста и визуальную презентацию на веб-страницах.