Все статьи
24 сентября 2026 г.9 мин чтения

Как проверить язык смешанного текста и включение формы locl

Как проверить язык смешанного текста и включение формы locl

Если русская фраза набрана латиницей, а имя на другом языке — кириллицей, одного наличия нужных символов в шрифте недостаточно: программа должна знать язык каждого фрагмента. OpenType-функция locl позволяет подменять глифы на локальные варианты, когда они предусмотрены шрифтом. Разберём, как разметить смешанный текст, проверить подстановку и отделить ошибку шрифта от ошибки языкового тега.

Что делает locl и чего от неё ждать

locl — функция подстановки OpenType для локализованных форм. Если у одного символа есть несколько начертаний, подходящих разным языковым сообществам, таблицы шрифта могут связать стандартный глиф с языковым вариантом. Выбор зависит от языка, который передала программе вёрстки; сама функция не переводит текст, не меняет кодовые точки и не добавляет отсутствующие знаки.

В документации OpenType функция описана как зависящая от языка и предназначенная для локальных вариантов. В качестве примера спецификация приводит различия отдельных кириллических букв в болгарском, сербском и русском письме. В конкретном шрифте таких вариантов может не быть, поэтому сначала проверяют состав именно этого файла, а не делают вывод по названию семейства. Описание тега locl есть в спецификации OpenType.

Важно различать покрытие и локальную форму. Покрытие отвечает на вопрос: существует ли глиф для символа? locl отвечает на другой: нужно ли показать предусмотренный альтернативный глиф с учётом языка? Например, отсутствие символа латинского алфавита нельзя исправить языковой разметкой, а наличие нескольких вариантов одной кириллической буквы не гарантирует, что редактор выберет нужный без определения языка.

Почему смешанный текст часто теряет языковой контекст

В абзаце могут соседствовать русское предложение, фамилия латиницей, цитата на сербском, код команды и международное название. Визуально это одна строка, но для текста её полезно делить на языковые фрагменты. Если метка стоит лишь на странице или всём абзаце, встроенное слово может унаследовать не тот язык. Тогда приложение применит стандартную форму либо продолжит использовать настройки окружающего текста.

Типичный пример — русская статья с сербским названием организации, набранным кириллицей. Кодовые точки кириллицы сами по себе не говорят программе, является ли текст русским, сербским или болгарским. Если гарнитура поддерживает языковые варианты и разметка не уточняет язык, нужный вариант может не включиться. Для латинского названия похожая логика: шрифт может поддерживать несколько наборов и функций, но языковой фрагмент следует пометить отдельно, когда от языка зависит обработка.

Язык нужно задавать по реальному содержанию, а не по языку интерфейса, аудитории или стране бренда. Название на английском внутри русского текста остаётся английским фрагментом. Транслитерация русской фамилии латиницей не превращает её автоматически в английское слово: если правила чтения и язык материала требуют иной метки, не следует подменять их визуальным удобством.

Сначала отделите три возможные причины

Когда локальная форма не появляется, проверяйте цепочку по слоям. Так проще понять, что исправлять:

  • **Символа нет в файле.** Нужна другая версия шрифта или дополнительный набор знаков; тег языка не может дорисовать покрытие.
  • **Вариант не заложен в шрифт.** Функция locl может быть доступна в таблице функций, но не содержать подстановки для нужного символа и языка.
  • **Язык не дошёл до движка набора.** Тогда таблица может быть корректной, но нужная языковая система не выбирается.

Есть и четвёртый источник расхождения: два приложения по-разному передают язык или используют разные механизмы набора. Поэтому проверка в одном редакторе не всегда доказывает, что файл повреждён или что другой редактор ошибается. Сравнивайте один и тот же файл, одну строку, одинаковый язык и одинаковые настройки.

Как подготовить тест для многоязычного шрифта

1. Выберите контрастную пару

Найдите символ, для которого в проверяемой гарнитуре действительно заявлен или виден локальный вариант. Используйте одно и то же слово или короткий фрагмент, меняя только язык. Для кириллического примера можно взять слово на русском и сопоставимое слово на сербском или болгарском, если шрифт содержит такие формы. Не сравнивайте разные начертания, размеры или версии файла одновременно: это затруднит диагностику.

Составьте три строки: вариант с языком по умолчанию, тот же текст с первой меткой языка и тот же текст со второй меткой. Если редактор умеет показывать невидимые символы и свойства выделения, проверьте, что метка охватывает все буквы теста, включая окончания и знаки внутри слова. Для смешанного предложения отдельно выделите латинское имя, цитату, аббревиатуру или команду.

2. Уточните, какой шрифт реально используется

Перед тестом выберите точный файл и начертание, например Regular, а не семейство в целом. Отключите случайную подмену гарнитуры темой документа, проверьте, что стили абзаца и символов не назначают другой шрифт, затем вставьте пробный текст. Веб-страница может загрузить отдельные файлы для латиницы и кириллицы; имя семейства в панели разработчика не всегда показывает, какой файл отрисовал конкретный диапазон.

Если для фрагмента действует fallback-шрифт, он может иметь другой рисунок или иной набор локальных подстановок. Проверьте файл, отображённый в браузере или приложении, и повторите тест с локально установленным экземпляром, если это возможно. Проверка должна отличать «этот символ рисует другая гарнитура» от «та же гарнитура выбрала альтернативу».

3. Разметьте фрагменты на языке материала

В HTML язык страницы обычно задают на корневом элементе, а язык отличающихся вставок — на вложенном элементе lang. Например, русская страница с английским названием может иметь общий lang="ru", а для названия задают lang="en". Для кириллических вставок, где нужен сербский или болгарский язык, задают соответствующую метку на самом фрагменте. Конкретный языковой тег должен описывать текст, а не запрашиваемую форму вручную.

Такой подход полезен не только для locl: языковая информация помогает вспомогательным технологиям, проверке орфографии и выбору произношения. В CSS можно назначить стили для элементов с определённым языком, но не следует имитировать языковую замену вручную через другую гарнитуру, если цель — проверить настоящую OpenType-подстановку. Для редакторов без HTML используйте их штатное поле языка текста или назначение языка выделенному фрагменту.

4. Сравните результат и подтвердите таблицу

Включите отображение обеих строк рядом при одинаковых параметрах. Увеличьте масштаб лишь настолько, чтобы видеть форму штрихов; затем проверьте обычный рабочий размер, чтобы убедиться, что различие не является артефактом крупного просмотра. Если форма не меняется, посмотрите сведения о шрифте и наличие locl в таблицах подстановки и позиционирования. Само наличие тэга не доказывает конкретную подстановку: важны записи языковой системы и то, какие символы затронуты.

Для технической диагностики подойдёт просмотрщик OpenType-таблиц, например FontTools/TTX: можно исследовать таблицы GSUB и GPOS, а также языковые записи, не меняя исходный файл. Не редактируйте бинарную таблицу ради первого теста. Сначала сравните оригинал, приложение и метаданные. Если ручной просмотр таблицы вам непривычен, попросите типографа или разработчика проверить пару исходного и альтернативного глифов и языковую систему.

5. Проверьте реальную строку после диагностики

Изолированная буква помогает увидеть форму, но итоговое решение проверяйте в настоящем контексте: имени, абзаце, интерфейсной подписи или заголовке. В смешанной строке оцените, не меняется ли ритм на границе алфавитов, сохраняется ли ширина и нет ли заметного скачка насыщенности. Затем перенесите строку в целевой формат: веб-страницу, PDF или документ. Экспорт может потерять языковую разметку либо подменить шрифт, поэтому тест в исходном редакторе не заменяет финальную проверку.

Пример: русская страница с латинским и сербским фрагментами

Представим страницу о культурном событии. Основной текст написан по-русски, в нём есть англоязычный подзаголовок, латинское название партнёра и цитата на сербском. Сначала проверьте три вещи отдельно: покрывает ли файл все нужные латинские символы; верно ли браузер получил файл шрифта; задан ли язык каждой вставки. Затем посмотрите, есть ли у этого шрифта нужные локальные формы для сербской кириллицы.

Если английское название визуально отличается по ширине, а сербская кириллическая форма не меняется, не делайте вывод «шрифт плохо поддерживает языки» по одной строке. Снимите язык с каждого фрагмента по очереди и повторите тот же тест. Изменение только сербского сегмента указывает на связь языка и локальной подстановки; неизменность может означать отсутствие alternates, ошибку выбора шрифта или разметки. Так вы сохраняете латинский бренд без искусственной подмены и отдельно проверяете кириллический языковой вариант.

Чеклист проверки locl

  • Зафиксируйте точный файл, начертание, приложение и версию текста.
  • Убедитесь, что исходные Unicode-символы присутствуют в шрифте.
  • Найдите в таблицах подстановки или позиционирования языковую систему и функцию для нужного языка.
  • Подготовьте одинаковый текст с разными корректными языковыми тегами.
  • Разметьте смешанные фрагменты на уровне слов или предложений, где это нужно.
  • Сравните строки при одинаковом кегле, насыщенности и масштабе.
  • Проверьте конечный носитель после экспорта или публикации.
  • Запишите ожидаемый результат и приложение, в котором его подтвердили.

Частые ошибки

**Менять шрифт, язык и начертание одновременно.** Если после этого форма изменилась, причина останется неясной. Меняйте один фактор за раз и сохраняйте контрольную строку.

**Считать наличие locl гарантией локальных вариантов.** Функция может присутствовать в таблице, но не иметь записи для проверяемой буквы и языка. Сопоставляйте конкретный тестовый символ с конкретной записью.

**Использовать язык документа как метку всего текста.** Метка на странице не всегда подходит для встроенной цитаты или названия на другом языке. Назначьте язык прямо на самостоятельный фрагмент и проверьте наследование.

**Вручную включать другую форму для каждого символа.** Такой обход способен рассинхронизировать текст и кодовые точки, а также ломается после копирования. Если приложение предлагает локальную языковую функцию, сначала настройте корректную языковую разметку.

**Проверять только в одном файле или редакторе.** Системный кэш, веб-поднабор и fallback могут незаметно менять результат. Сравнивайте один и тот же файл локально и в целевой среде, фиксируя, что именно использовано.

Часто задаваемые вопросы

locl должна быть включена вручную?

Обычно нет: спецификация предлагает приложениям включать локализованные формы по умолчанию, а язык текста указывать через метку. Но конкретный редактор может предоставлять переключатель функций или иначе организовывать языковые настройки, поэтому при сбое проверьте параметры набора и экспорт.

Если у шрифта есть кириллица и латиница, локальные формы тоже есть?

Нет. Поддержка набора символов означает, что у шрифта есть глифы для этих кодовых точек. Альтернативные локальные рисунки — отдельное свойство. Узнайте, для каких символов и языковых тегов созданы подстановки, и проверьте эти пары.

Можно ли увидеть локальную форму в текстовом редакторе?

Да, если редактор передаёт языковую метку движку набора и использует шрифт с нужной подстановкой. Назначьте языковой фрагменту, сравните с контрольной строкой и убедитесь, что редактор не применил fallback или другой стиль.

Почему слово на другом языке выглядит правильно без lang?

Шрифт может использовать стандартную форму, которая подходит обоим языкам, или редактор может угадать язык по контексту. Это не доказывает работу конкретной функции. Для воспроизводимого теста задайте язык явно и сравните обе формы.

locl меняет сами буквы текста?

Нет, функция меняет выбранные глифы при отображении, но сохраняет исходные символы текста. Копирование и поиск должны продолжать работать с исходной строкой; визуальная подстановка сама по себе не превращает одну букву в другую.

Как проверить локальные формы на веб-странице?

Проверьте lang у документа и у каждого разноязычного фрагмента, затем подтвердите, какой файл шрифта загружен для символов. Сравните строку в браузере с локальным тестом того же файла и повторите проверку после сборки CSS и публикации.

Итог

Локальная форма зависит от трёх вещей одновременно: нужный символ и вариант должны быть в файле, приложение должно понимать языковую систему, а язык должен быть корректно передан для конкретного фрагмента. Разделите проверку на эти слои, сравнивайте одинаковые тестовые строки и сохраняйте метки языка в конечном документе. Если вы превращаете собственный почерк в шрифт, Fontgenerator поможет пройти путь от шаблона до файла, который затем можно проверить в таких многоязычных сценариях.

Источники