К обсуждениям

Safari Technology Preview 251 не пересчитывает ctx.font после смены стиля canvas

Редакция VOne Технологии

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 года.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.