Мы часто сталкиваемся с проектами, где кастомный шрифт — это не только эстетика, но и часть бренда. Подключить шрифт в мобильное приложение кажется тривиальной задачей, но на практике требуется учитывать лицензирование, формат файлов, производительность, Dynamic Type, fallback-варианты и читаемость на экранах от 4 до 6.9 дюймов. Каждый из этих пунктов — отдельная инженерная задача, игнорирование которой приводит к проблемам в продакшне.
Как правильно лицензировать шрифт для мобильного приложения?
Самый частый источник проблем — лицензирование. Шрифт для десктопного сайта и для мобильного приложения — разные лицензии у большинства фаундри. Google Fonts (Open Font License или Apache 2.0) бесплатны для встраивания. Adobe Fonts через Creative Cloud требуют проверки на app embedding. Коммерческие шрифты Helvetica Neue, Gotham, Brandon Grotesque нуждаются в отдельной лицензии на embedded use. Нарушение лицензии — не только юридический риск: App Store Review Team иногда отклоняет приложения с нелицензированными шрифтами. Мы всегда проверяем лицензию до начала и рекомендуем выбирать шрифты с открытой лицензией для ускорения выхода в релиз.
Форматы и подготовка файлов
iOS принимает OTF и TTF. Android — TTF. React Native и Flutter поддерживают TTF и OTF. Если дизайн использует Regular, Medium, SemiBold и Bold, а шрифт поставляется только в одном начертании — потребуются отдельные файлы. Синтетический bold (system synthetic) плохо выглядит на мобильных экранах и может привести к reject в App Store.
Variable Fonts (.ttf с fvar таблицей) — прогрессивный подход: один файл покрывает весь диапазон weight и width. iOS поддерживает их с версии 14, Android — с API 26. React Native поддерживает частично через fontVariationSettings, Flutter — через FontVariation в TextStyle. Variable fonts экономят размер приложения: один файл заменяет десяток статичных начертаний.
Оптимизация размера: если используете только латиницу и кириллицу — subsetting через pyftsubset (fonttools) убирает неиспользуемые глифы. Типичный Latin+Cyrillic subset из полного шрифта: с 800KB до 150KB. Это даёт экономию трафика и ускоряет загрузку.
Подключение на iOS
Шрифт добавляется в Bundle, регистрируется в Info.plist под ключом UIAppFonts:
<key>UIAppFonts</key> <array> <string>CustomFont-Regular.otf</string> <string>CustomFont-Bold.otf</string> </array> В SwiftUI используется через .font(Font.custom("CustomFont-Regular", size: 16)). В UIKit — UIFont(name: "CustomFont-Regular", size: 16).
Типичная ошибка: имя шрифта в коде и PostScript Name файла не совпадают. Проверяем через CTFontManagerCopyAvailableFontFamilyNames() или Font Book на macOS.
Dynamic Type на кастомном шрифте: UIFontMetrics(forTextStyle: .body).scaledFont(for: customFont) масштабирует кастомный шрифт пропорционально системным настройкам размера. Без этого приложение не пройдёт accessibility audit.
Подключение на Android
Шрифт кладётся в res/font/, используется через XML или код:
val typeface = ResourcesCompat.getFont(context, R.font.custom_regular) textView.typeface = typeface В Jetpack Compose:
val customFontFamily = FontFamily( Font(R.font.custom_regular, FontWeight.Normal), Font(R.font.custom_bold, FontWeight.Bold) ) Text(text = "Hello", fontFamily = customFontFamily) Downloadable Fonts через Google Fonts API экономит размер APK, но требует интернета при первом запуске и fallback-шрифта на случай недоступности сети.
Почему важна типографическая шкала?
Кастомный шрифт нужно правильно «настроить» в масштабе: подобрать line height, letter spacing, оптимальный size для каждого текстового стиля. Это не работа на час — тестируем на реальных экранах разных размеров и плотностей (iPhone SE vs 15 Pro Max, ldpi vs xxxhdpi). Минимальный читаемый размер: 12pt/sp для Caption, 14pt/sp для Body Small. Ниже — только в исключительных случаях.
Для передачи дизайн-системы: все текстовые стили оформляются в Figma как Text Styles с полной спецификацией и передаются разработчику через Dev Mode с конкретными значениями.
Что входит в работу
- Проверка лицензионной чистоты шрифта.
- Subsetting и оптимизация файлов для целевых платформ.
- Подключение и настройка на iOS (UIKit/SwiftUI) и Android (View/Compose).
- Реализация Dynamic Type и Accessibility.
- Создание типографической шкалы с line height и letter spacing.
- Тестирование на устройствах с разными экранами.
- Документация (описание стилей и их использования).
| Подход | Производительность | Размер | Сложность внедрения |
|---|---|---|---|
| Статичные шрифты (TTF/OTF) | Отлично | Большой (от 10 файлов) | Низкая |
| Variable Fonts | Отлично | Один файл ~1MB | Средняя (зависит от поддержки) |
| Задача | Срок |
|---|---|
| Подключить шрифт + базовая шкала (одна платформа) | 1 день |
| Две платформы + Dynamic Type + variable font | 2–3 дня |
| Полная дизайн-система с типографикой | 3–5 дней |
Мы — команда мобильных разработчиков с 5+ лет опыта, реализовали более 50 проектов с кастомной типографикой. Стоимость рассчитывается индивидуально после анализа проекта. Свяжитесь с нами для консультации. Закажите профессиональную интеграцию шрифтов — это сэкономит недели на отладке.







