React Native 0.76 отображает жирный текст иначе, чем более ранние версии на iOS.

Вопрос или проблема

Ранее я мог изменять жирность шрифта, не указывая семейство шрифтов “-Bold”, а просто задавая соответствующую жирность.

После обновления шрифт не выбирается на основе ширины, хотя это предусмотренное поведение согласно документации: https://reactnative.dev/docs/text-style-props#fontweight

На Android всё работает как ожидалось.

Вот мой тестовый код:

          <Text
            style={[
              { fontFamily: 'Chivo-Bold', fontSize: 31 },
              { fontSize: 32, lineHeight: 35, fontWeight: '700', letterSpacing: -0.5 },
            ]}
          >
            Aasd sadasdƒ Sg
          </Text>
          <Text
            style={[
              { fontFamily: 'Chivo-Regular', fontSize: 31 },
              { fontSize: 32, lineHeight: 35, fontWeight: '700', letterSpacing: -0.5 },
            ]}
          >
            Aasd sadasdƒ Sg
          </Text>

Вот как это выглядит в RN 0.75 и 0.71 без Новой Архитектуры

RN 0.71

Вот как это выглядит в RN 0.76 с Новой Архитектурой

RN 0.76 with new architecture

Ответ или решение

Проблема с рендерингом жирного текста в React Native 0.76 на iOS: Разбор и Рекомендуемые Решения

С обновлением до версии React Native 0.76 у пользователей возникли проблемы с рендерингом жирного текста на платформе iOS. В предыдущих версиях, таких как 0.71 и 0.75, можно было изменять начертание шрифта, просто задав соответствующий параметр fontWeight, однако теперь такой подход не срабатывает, что может вызвать затруднения в разработке.

Основные Изменения в Версии 0.76

Согласно документации React Native, использование свойства fontWeight должно позволять корректно настраивать толщину шрифта в зависимости от указанного значения. Например, использование fontWeight: '700' должно было бы автоматически выбрать жирный шрифт, если он доступен. Однако с внедрением новой архитектуры в версии 0.76 это поведение изменилось, и вместо ожидаемого результата можно увидеть рендеринг шрифта, не соответствующий заданной толщине.

Демонстрация Проблемы

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

<Text
    style={[
        { fontFamily: 'Chivo-Bold', fontSize: 31 },
        { fontSize: 32, lineHeight: 35, fontWeight: '700', letterSpacing: -0.5 },
    ]}
>
    Aasd sadasdƒ Sg
</Text>
<Text
    style={[
        { fontFamily: 'Chivo-Regular', fontSize: 31 },
        { fontSize: 32, lineHeight: 35, fontWeight: '700', letterSpacing: -0.5 },
    ]}
>
    Aasd sadasdƒ Sg
</Text>

Сравнение Визуального Отображения

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

Возможные Решения

  • Уточнение Стиля: Убедитесь, что используемые вами шрифты корректно подключены и доступны в приложении. Проблемы могут возникать, если шрифт не поддерживает указанные параметры fontWeight.

  • Явное Указание Шрифта: Попробуйте указать явные имена шрифтов вместо полагания на fontWeight. Используйте fontFamily: 'Chivo-Bold' непосредственно в стиле текстового компонента, чтобы избежать конфликтов.

<Text style={{ fontFamily: 'Chivo-Bold', fontSize: 32, lineHeight: 35, letterSpacing: -0.5 }}>
    Aasd sadasdƒ Sg
</Text>
  • Проверка Конфигурации Проекта: Убедитесь, что в проекте правильно настроены все зависимости и нет конфликтов версий библиотек, которые могут влиять на рендеринг шрифтов.

Заключение

Обновление React Native до версии 0.76 принесло изменения, которые привели к проблемам с отрисовкой жирного текста на iOS. Следуя описанным выше рекомендациям, можно смягчить влияние этих изменений и вернуть ожидаемое поведение текстовых стилей. С течением времени можно ожидать обновлений и патчей от команды React Native, которые могут исправить возникшие проблемы.

Для более детального изучения вопросов рендеринга шрифтов желательно следить за обновлениями документации и сообществом разработчиков React Native.

Оцените материал
Добавить комментарий

Капча загружается...