Fontshift
Меняет все шрифты в файле Figma разом и сопоставляет начертания, чтобы ничего не превратилось в кашу.

Смена гарнитуры по готовому файлу - день кликанья, и ломается никогда не семейство. Ломаются веса. Semibold в одном шрифте - не semibold в другом, и наивная замена сплющивает иерархию, на которой файл собран.
- Год
- 2026
- Роль
- Дизайн и разработка
- Тип
- Плагин Figma, бесплатный, без лимитов
- Работает
- Оффлайн, ничего не покидает файл
Проблема
Figma заменяет шрифты по одному начертанию, и любой вес без точного имени в целевом семействе тихо падает в regular. На большом файле это сотни маленьких поправок потом, в местах, куда никто не догадается посмотреть.
Чтоясделал

Семейство - то, что вы замечаете, веса - то, что вы читали
Обе картинки - одна гарнитура. Разница в том, что одна сохранила четыре веса, а другая потеряла три по дороге, что и делает замена, двигающая только семейство. Ничто не выглядит сломанным после, и в этом ровно проблема: файл всё ещё читается как дизайн, только такой, где ничто не важнее остального.
Что там на самом деле
Выберите фрейм - и панель перечислит шрифты внутри, семейство и начертание раздельно, посчитанные и отсортированные по доле выделения, которую каждый держит. Кнопки сканирования нет, потому что список следует за выделением: смените выделение - сменится и он. Кнопка, которую надо не забыть нажать, - кнопка, устаревшая половину времени.
Все способы, которыми файл пишет один вес
Начертание - слово, и слова не согласны между собой. Thin и Hairline - одно и то же. Semibold и Demibold тоже, Extrabold и Ultrabold, Black и Heavy, Regular и Normal и Book. Каждое отображается в одно число, а начертание, буквально названное 600, читается как 600. Пока это не сделано, два семейства сравнить нельзя вообще.
Ближайший вес побеждает, курсив не обсуждается
Каждое начертание целевого семейства оценивается: расстояние от веса, который у вас был, плюс тысяча, если одно курсив, а другое нет. Тысяча больше расстояния между самым светлым и самым тяжёлым, что есть у семейства, так что прямое никогда не обыграет наклонное на весе. Всё остальное - компромисс; это - нет.
Одно нажатие - и всё выделение
Выберите семейство, из которого уходите, найдите поиском то, куда идёте, нажмите один раз. Каждый текстовый слой под выделением обходится, и каждое начертание разрешается отдельно, а не один раз на семейство. Обратно приходит число изменённых слоёв и, если что-то отказало, что именно оно сказало.
Слой - не один шрифт
Предложение с жирной фразой в середине - один текстовый слой с несколькими шрифтами внутри, и Figma отвечает на вопросы о нём словом mixed и ничем больше. Поэтому слой читается посимвольно, соседи с одним шрифтом собираются в ран, и каждый ран матчится и пишется отдельно. Ран семейства, о котором вы не спрашивали, остаётся ровно там, где был.

Два списка, один поиск, одна кнопка
Окно - 560 на 480 и держит: что есть, чем оно может стать, и глагол. Без настроек, без шага предпросмотра, без отчёта. Инструмент на тридцать секунд посреди чужой работы не может позволить себе учить, поэтому учить нечему.
Подкапотом
Figma не даст писать текст, который не загружен
Каждый шрифт, уже использованный в слое, должен быть загружен до того, как тронут хоть один его символ, включая заменяемые. Так что замена - не цикл по слоям, а цикл, который собирает шрифты, ждёт все и только потом пишет. Пропустите это - и он упадёт на первом же смешанном абзаце.
Неизвестное читается как regular, нарочно
Имя начертания, которого никто не слышал, разрешается в 400, а не бросает исключение. Иногда это неправильный ответ, и он видимый: заголовок, вернувшийся regular-ом, замечается и правится за секунду, а замена, вставшая на середине, оставляет файл в состоянии, которое никто не сможет описать.
Меняет шрифт и ничего больше
Без ресайза, без интерлиньяжа, без трекинга, без прибирания всего, мимо чего проходит. Каждый изменившийся слой изменился в одном свойстве - единственная причина, по которой результат вообще можно отревьюить.
Бесплатно, оффлайн, без лимитов
Манифест не объявляет разрешённых доменов, так что ничего не загружается, не считается и не требует входа. Работает по открытому файлу и останавливается, когда закончил.