Серьезным недостатком базовых конвертеров Markdown в PDF является повреждение шрифтов при обработке многоязычного текста. Если в документе встречаются иероглифы Китая, Японии и Кореи (CJK), кириллица или символы с диакритикой, а движок PDF не имеет встроенных шрифтов, вместо букв отображаются пустые прямоугольники (так называемые «тофу»). В md2pdf полноценное встраивание шрифтов Unicode гарантирует четкое отображение символов на любых устройствах.
В этой статье объясняется работа клиентского встраивания шрифтов с помощью pdf-lib и @pdf-lib/fontkit, оптимизация наборов символов и предотвращение выпадения глифов.
Проблемы отображения Unicode в документах PDF
Базовый стандарт PDF включает лишь 14 стандартных шрифтов (Helvetica, Times и другие), поддерживающих только латиницу и стандартные западноевропейские знаки.
- Эффект «тофу»: Нераспознанные символы Unicode отображаются как пустые квадраты (□).
- Сложность наборов CJK: Восточноазиатские языки насчитывают десятки тысяч иероглифов, что требует оптимизации размера внедряемых шрифтов.
- Диакритические знаки: Символы турецкого языка (ç, ğ, ı, ö, ş, ü) и кириллические алфавиты требуют точной кодовой поддержки для сохранения читаемости.
Multilingual Glyph Coverage in md2pdf:
- Latin & Extended Latin: English, Spanish, French, Portuguese, Turkish
- Cyrillic Alphabets: Russian, Ukrainian, Bulgarian
- East Asian Ideographs: Simplified Chinese (简体中文), Japanese (日本語)
- Hangul Syllables: Korean (한국어)
Технология внедрения шрифтов с @pdf-lib/fontkit
md2pdf использует библиотеку @pdf-lib/fontkit для чтения векторных таблиц TrueType (TTF) и OpenType (OTF) прямо в браузере:
- Загрузка на клиенте: Качественные открытые гарнитуры (Noto Sans, Source Han Sans, Roboto Mono) загружаются по мере необходимости в зависимости от языка статьи.
- Анализ глифов: Движок
fontkitсканирует текст Markdown и сопоставляет каждый символ с его векторным контуром. - Встраивание в структуру PDF: Библиотека
pdf-libпрописывает векторные контуры в итоговый файл, делая его полностью самодостаточным.
Поддержка типографики для всех девяти языков
md2pdf обеспечивает естественное типографическое качество для девяти поддерживаемых языков:
- Английский, испанский, французский, португальский: Аккуратная латиница с поддержкой акцентов, седилей и тильд.
- Турецкий: Точное отображение букв «i» с точкой и без (
İ/i,I/ı) и специальных согласных. - Русский (Кириллица): Пропорциональные кириллические шрифты, гармонирующие с общим стилем документа.
- Японский, китайский и корейский: Поддержка иероглифов CJK и корейского алфавита Хангыль с оптимальным межбуквенным интервалом.
Полная автономность и независимость от устройства
Благодаря внедрению векторных очертаний глифов прямо в тело файла PDF:
Сгенерированный документ выглядит одинаково на любом компьютере, планшете или телефоне, даже если в системе читателя не установлены азиатские шрифты или шрифты с поддержкой кириллицы.
Создание многоязычных документов в md2pdf
Конвертируете ли вы документацию API на японском, спецификацию на русском или многоязычный международный справочник — md2pdf выполнит настройку шрифтов автоматически. Вставьте текст и получите безупречный PDF без единого поврежденного символа.
Создайте свой PDF из README
Бесплатно, без регистрации и полностью в браузере.