Safari Technology Preview 251 не пересчитывает ctx.font после смены стиля canvas. Локальная диагностическая процедура, трасса «element font-size → same ctx.font string → resolved font → TextMetrics», отрицательный контроль и безопасный критерий остановки без production-данных.
Короткий ответ и точная граница симптома
Для запроса «как проверить повторное разрешение относительного ctx font после смены CSS canvas в Safari Technology Preview 251» проверяется ровно одна ситуация: повторное присваивание той же строки ctx.font оставляет старый относительный размер после изменения CSS самого canvas. Reused context и fresh control должны дать одинаковую метрику при одинаковом CSS. Одно визуальное увеличение canvas bitmap не считается пересчётом шрифта. Это вывод только для Safari Technology Preview 251 и минимального примера; стабильный Safari, другие браузеры и конкретный сайт требуют отдельного прогона. Ключевой риск ложного вывода: Ширина canvas и CSS font-size независимы; resize canvas дополнительно сбрасывает context и поэтому разрушает проверку reused state. Поэтому ожидаемое состояние формулируется до действия, а неизвестный результат остаётся unknown.
Доказательная опора: Release 251 и 318753@main
Официальные release notes WebKit опубликованы 26 августа 2026 года и прямо сообщают: ctx.font повторно разрешает relative font sizes при той же строке после изменения стиля canvas element. Пункт ведёт на 318753@main, то есть на первичную запись изменения в WebKit. Связка release page и commit подтверждает наличие технического изменения, но не его распространённость, поисковую частоту или результат на пользовательском проекте. Google News и публичные community-страницы остаются leads: их сниппеты, голоса и отдельные ответы не используются как доказательство причины.
Диагностический паспорт: трасса «element font-size → same ctx.font string → resolved font → TextMetrics»
До воздействия заполните поля: CSS font-size canvas, строка ctx.font, resolved ctx.font, TextMetrics.width, bounding box тестовой строки и состояние после возврата CSS. Рабочий артефакт — трасса «element font-size → same ctx.font string → resolved font → TextMetrics». Отрицательный или сравнительный контроль: новый canvas с тем же итоговым CSS показывает ожидаемое разрешение без накопленного состояния контекста. К каждому наблюдению добавляются точная сборка TP 251, время, zoom и короткие expected/observed; сведения из памяти не подставляются. Не сохраняются имя профиля, IP, cookie, токены, Authorization, локальные пути, полные URL с приватными query и содержимое рабочих документов. Если обязательное поле нельзя измерить безопасно, статья предписывает остановку, а не догадку.
Пошаговый canary, контроль и полный возврат
На отдельной локальной странице нужно нарисовать синтетическую строку с ctx.font в em, изменить только font-size canvas, снова присвоить исходную строку ctx.font, измерить TextMetrics и вернуть CSS. Сначала снимается baseline, затем меняется только одна названная переменная и выполняется один заранее определённый ввод. После записи результата применяется контроль: новый canvas с тем же итоговым CSS показывает ожидаемое разрешение без накопленного состояния контекста. Затем исходное состояние полностью восстанавливается и baseline измеряется ещё раз. Прогон получает invalid test, если rollback не вернул исходные значения, вмешалось расширение, не пришло доверенное пользовательское событие или среда не предоставляет нужный API/UI. В таком случае не добавляют второе изменение и не объявляют браузер неисправным.
Развилка решения, красная линия и пакет воспроизведения
Reused context и fresh control должны дать одинаковую метрику при одинаковом CSS. Одно визуальное увеличение canvas bitmap не считается пересчётом шрифта. Практический результат хранится как трасса «element font-size → same ctx.font string → resolved font → TextMetrics». Статус reproduced ставится только после одинакового повторения и успешного rollback; not reproduced относится лишь к текущему fixture; unsupported и environment-blocked не смешиваются с unknown. Красная линия: не загружать webfont и не менять devicePixelRatio или размер bitmap во время опыта. Для передачи в поддержку достаточно версии, минимального HTML/CSS/JS, таблицы expected/observed, контрольного результата и ссылки на 318753@main. Перед отправкой удаляются идентификаторы и реальные данные. Материал не обещает исправление, индексацию, позицию или универсальное поведение другой версии Safari.
Материал подготовлен редакцией VOne с помощью ИИ; дата, первичный WebKit commit, техническая граница, контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318753@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.