Доклад «Давай поиграем со шрифтами»
Пару недель назад делился слайдами доклада, а теперь появилось видео. Обещал выложить — держу обещание.
В докладе рассказал, как в 2025 году можно работать со шрифтами, почему рендеринг текста вас ненавидит, можно ли сделать пиксель-пёрфект и зачем разработчику знания типографики.
Приятно удивлён, что этот доклад получил топ-1 по оценкам зрителей. Как говорил Тор: «Всё ещё достоин».
https://youtu.be/ktoxhEQqS60
Пару недель назад делился слайдами доклада, а теперь появилось видео. Обещал выложить — держу обещание.
В докладе рассказал, как в 2025 году можно работать со шрифтами, почему рендеринг текста вас ненавидит, можно ли сделать пиксель-пёрфект и зачем разработчику знания типографики.
Приятно удивлён, что этот доклад получил топ-1 по оценкам зрителей. Как говорил Тор: «Всё ещё достоин».
https://youtu.be/ktoxhEQqS60
YouTube
Давай поиграем со шрифтами / Никита Дубко
Крупнейшая профессиональная конференция фронтенд-разработчиков в России
FrontendConf 2025
Презентация и тезисы:
https://frontendconf.ru/moscow/2025/abstracts/14458
По статистике веб-альманаха за 2024 год 87% сайтов в интернете используют веб-шрифты. При…
FrontendConf 2025
Презентация и тезисы:
https://frontendconf.ru/moscow/2025/abstracts/14458
По статистике веб-альманаха за 2024 год 87% сайтов в интернете используют веб-шрифты. При…
👍43❤15🔥6🎉5❤🔥1😁1
HTML-in-Canvas
Увидел сначала в твиттерах, потом в чатике редакции «Веб-стандартов» ссылочку на пропозал: рендерить HTML внутри Canvas.
«Шо, опять?» — подумал я. До этого были разной степени проработанности идеи уже, через CSS картинку рендерить, через Browser API. И библиотеки есть популярные, которые эту задачу худо-бедно решают. Основная сложность в том, что для решения задачи нужно либо полностью скопировать поведение браузера (дорого и сложно), либо ограничиться каким-то набором поддерживаемых свойств. И весят все существующие решения прилично.
Но в этот раз как будто всё серьёзно. Потому что в Chrome Canary 138.0.7175.0+ уже можно включить специальный флаг, чтобы начать пользоваться апишкой для экспериментов.
Да, вот так просто. Заинтригован. Буду следить за развитием пропозала.
https://github.com/WICG/html-in-canvas
Увидел сначала в твиттерах, потом в чатике редакции «Веб-стандартов» ссылочку на пропозал: рендерить HTML внутри Canvas.
«Шо, опять?» — подумал я. До этого были разной степени проработанности идеи уже, через CSS картинку рендерить, через Browser API. И библиотеки есть популярные, которые эту задачу худо-бедно решают. Основная сложность в том, что для решения задачи нужно либо полностью скопировать поведение браузера (дорого и сложно), либо ограничиться каким-то набором поддерживаемых свойств. И весят все существующие решения прилично.
Но в этот раз как будто всё серьёзно. Потому что в Chrome Canary 138.0.7175.0+ уже можно включить специальный флаг, чтобы начать пользоваться апишкой для экспериментов.
const ctx = document.getElementById('canvas').getContext('2d');
const element = document.getElementById('element');
ctx.drawElementImage(element, 0, 0);
Да, вот так просто. Заинтригован. Буду следить за развитием пропозала.
https://github.com/WICG/html-in-canvas
GitHub
GitHub - WICG/html-in-canvas
Contribute to WICG/html-in-canvas development by creating an account on GitHub.
👍27🔥15😱9❤1🐳1🤨1
«Самые ненавидимые» фичи в CSS
По результатам опроса State of CSS 2025 тригонометрические функции победили в номинации 'Most Hated'. Всего 9.1% респондентов отметили, что фича прям не нравится, но этого оказалось достаточно, чтобы выйти в топ.
Хуан Диего Родригез по этому поводу написал целую серию статей, где при помощи демок показывает, в каких частях интерфейса тригонометрия всё-таки может быть полезна.
На мой субъективный взгляд самые полезные всё-таки тангенс и арктангенс. Потому что приходилось верстать сложные градиенты, где нужно хитро высчитать угол этого градиента. Или рисовать адаптивные скошенные уголки. Когда есть
И да, это Baseline Widely Available, то есть не что-то новое и нигде не работающее, а вполне себе стабильные фичи.
cos() и sin():
https://css-tricks.com/the-most-hated-css-feature-cos-and-sin/
tan():
https://css-tricks.com/the-most-hated-css-feature-tan/
a-():
https://css-tricks.com/the-most-hated-css-feature-asin-acos-atan-and-atan2/
По результатам опроса State of CSS 2025 тригонометрические функции победили в номинации 'Most Hated'. Всего 9.1% респондентов отметили, что фича прям не нравится, но этого оказалось достаточно, чтобы выйти в топ.
Хуан Диего Родригез по этому поводу написал целую серию статей, где при помощи демок показывает, в каких частях интерфейса тригонометрия всё-таки может быть полезна.
На мой субъективный взгляд самые полезные всё-таки тангенс и арктангенс. Потому что приходилось верстать сложные градиенты, где нужно хитро высчитать угол этого градиента. Или рисовать адаптивные скошенные уголки. Когда есть
x и y, без всяких гипотенуз можно высчитать угол, а зная угол — сделать красивое. А для имитации физически верных анимаций вам нужны синусы и косинусы, из комбинации которых можно составить почти любую непрерывную сложную анимацию.И да, это Baseline Widely Available, то есть не что-то новое и нигде не работающее, а вполне себе стабильные фичи.
cos() и sin():
https://css-tricks.com/the-most-hated-css-feature-cos-and-sin/
tan():
https://css-tricks.com/the-most-hated-css-feature-tan/
a-():
https://css-tricks.com/the-most-hated-css-feature-asin-acos-atan-and-atan2/
CSS-Tricks
The “Most Hated” CSS Feature: cos() and sin() | CSS-Tricks
I want to look at practical uses for CSS trigonometric functions. And we'll start with what may be the most popular functions of the "worst" feature: sin() and cos().
🔥21🤔8🤣3😐2❤1👍1🥴1🤨1
Адвент-календарь HTMHell
Мануэль Матузович в 2021 году запустил первый HTMHell Advent Calendar, в котором собрал ссылки на полезные материалы, видео, статьи и инструменты. В 2022 году этот проект превратился в сборник 24 статей от 24 авторов со всего мира про веб-разработку.
Сегодня стартовал новый цикл. Один день — одна статья. Я точно все прочитаю, потому что в прошлом году нашёл для себя довольно много нового и полезного. И вам советую.
https://htmhell.dev/adventcalendar/
Мануэль Матузович в 2021 году запустил первый HTMHell Advent Calendar, в котором собрал ссылки на полезные материалы, видео, статьи и инструменты. В 2022 году этот проект превратился в сборник 24 статей от 24 авторов со всего мира про веб-разработку.
Сегодня стартовал новый цикл. Один день — одна статья. Я точно все прочитаю, потому что в прошлом году нашёл для себя довольно много нового и полезного. И вам советую.
https://htmhell.dev/adventcalendar/
HTMHell Advent Calendar 2025 - HTMHell
An article, talk, or tool that focuses on HTML every day until Christmas.
🔥47👍10❤5😁4🎉3
Пикселизация при помощи SVG
Ещё одну интересную демку нашёл. Джей Томпкинс собрал SVG-фильтр, который превращает обычную фотографию в пиксельную. Причём в демке можно поиграться с размером тайла, точкой старта, применяемым фильтром.
Как оно работает:
Шаг 1. При помощи
Шаг 2. При помощи ещё одного фильтра
Шаг 3. Применяем
На самом деле для меня это всё ещё некоторая магия, но чем больше смотрю таких демок, тем лучше их понимаю и уже даже могу что-то сам воспроизвести, подглядывая. Фильтры в SVG — мощь.
https://codepen.io/jh3y/pen/pvyZZmO
Ещё одну интересную демку нашёл. Джей Томпкинс собрал SVG-фильтр, который превращает обычную фотографию в пиксельную. Причём в демке можно поиграться с размером тайла, точкой старта, применяемым фильтром.
Как оно работает:
Шаг 1. При помощи
feFlood, feComposite и feTile создаём паттерн, где однопиксельные белые точки расположены в сетке 10x10.Шаг 2. При помощи ещё одного фильтра
feComposite смешиваем паттерн и картинку. Вместо белых пикселей теперь получаем пиксели с цветами из оригинального изображения. Но всего 1% этих пикселей, остальные чёрные.Шаг 3. Применяем
feMorphology с оператором dilate, чтобы «раздуть» пиксели во все стороны. Можем задавать радиус, чтобы сделать либо эффект мозаики, либо эффект LED-пикселей на чёрной подложке.На самом деле для меня это всё ещё некоторая магия, но чем больше смотрю таких демок, тем лучше их понимаю и уже даже могу что-то сам воспроизвести, подглядывая. Фильтры в SVG — мощь.
https://codepen.io/jh3y/pen/pvyZZmO
codepen.io
image pixelation w/ noscript 🤙
...
👍30🔥9❤1🎉1
CVE-2025-55182
Если коротко, обновите Next.js и React.
Если чуть длиннее, то реализация React Server Components содержит критическую уязвимость, которая позволяет выполнять на сервере то, что вы не просили выполнять. Даже если вы не используете RSC.
Затронуло версии:
- Next.js 15.x
- Next.js 16.x
- Next.js 14.3.0-canary.77+
- React 19.0, 19.1.0, 19.1.1 и 19.2.0
Ну и на самом деле зацепило
Вот так популярный фреймворк навёл шороху во фронтенде не самым лучшим образом за очень короткое время.
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
Если коротко, обновите Next.js и React.
Если чуть длиннее, то реализация React Server Components содержит критическую уязвимость, которая позволяет выполнять на сервере то, что вы не просили выполнять. Даже если вы не используете RSC.
Затронуло версии:
- Next.js 15.x
- Next.js 16.x
- Next.js 14.3.0-canary.77+
- React 19.0, 19.1.0, 19.1.1 и 19.2.0
Ну и на самом деле зацепило
react-server-dom-parcel, react-server-dom-turbopack и react-server-dom-webpack, так что обновлять надо всё, что от них зависит.Вот так популярный фреймворк навёл шороху во фронтенде не самым лучшим образом за очень короткое время.
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
react.dev
Critical Security Vulnerability in React Server Components – React
The library for web and native user interfaces
🥴47💯11🐳5🤣5😁3🔥2❤1
Привязываем крестик к диалогу
Задача: нарисовать крестик в диалоге (попапе), который визуально выходит за границы диалога. Много видел разных реализаций в разные эпохи, дизайнеры рисуют такие макеты на моей памяти с тех времён, как появились модалки на
Важно, в этой задаче нужно учитывать семантику. Если вы не хотите разломать клавиатурную навигацию и доступность, крестик-кнопка должен быть внутри элемента-модалки.
Дарин Сеннефф предлагает современный вариант с Invoker Command и Anchor Positioning, где кода нужно сильно меньше, а результат вполне себе неплохой.
https://www.darins.page/articles/close-button-hang-dialog
Задача: нарисовать крестик в диалоге (попапе), который визуально выходит за границы диалога. Много видел разных реализаций в разные эпохи, дизайнеры рисуют такие макеты на моей памяти с тех времён, как появились модалки на
position: fixed.Важно, в этой задаче нужно учитывать семантику. Если вы не хотите разломать клавиатурную навигацию и доступность, крестик-кнопка должен быть внутри элемента-модалки.
Дарин Сеннефф предлагает современный вариант с Invoker Command и Anchor Positioning, где кода нужно сильно меньше, а результат вполне себе неплохой.
https://www.darins.page/articles/close-button-hang-dialog
Darin Senneff
Getting a close button to hang off of a dialog - Darin Senneff
Have you ever had to implement a modal dialog with a close button designed to hang off of the corner?
While not a huge lift for most developers, there’s a few…
While not a huge lift for most developers, there’s a few…
❤32🥴3👍2❤🔥1
Никаких токенов! Обезопашиваем npm publish
С учётом последних «весёлых» событий в мире npm любые хорошие советы, как работать с пакетами, не будут зря.
Зак Лезерман делится набором как раз таких советов. Мне понравился про ввод паролей только через менеджер паролей — ведь и правда автоматика менее подвержена фишингу, чем человеческое невнимание.
https://www.zachleat.com/web/npm-security/
С учётом последних «весёлых» событий в мире npm любые хорошие советы, как работать с пакетами, не будут зря.
Зак Лезерман делится набором как раз таких советов. Мне понравился про ввод паролей только через менеджер паролей — ведь и правда автоматика менее подвержена фишингу, чем человеческое невнимание.
https://www.zachleat.com/web/npm-security/
Zach Leatherman
No more tokens! Locking down npm Publish Workflows—zachleat.com
A post by Zach Leatherman (zachleat)
👍10❤3🤨2🎉1🌚1
Ещё пара уязвимостей в React Server Components
Спустя неделю после просьбы обновить уязвимые библиотеки команда React просит сделать это снова. На этот раз исследователи нашли две уязвимости, которые могут быть крайне неприятны.
CVE-2025-55184 и CVE-2025-67779 — позволяет дёрнуть серверную функцию так, чтобы вызвать бесконечный цикл, что может грохнуть или избыточно нагрузить ваш серверный CPU.
CVE-2025-55183 — позволяет достать исходный код серверной функции. Опасно, только если вы прямо в коде храните пароли или супер-секретную бизнес-логику пишете прям в серверных функциях.
В общем, снова нужно обновить библиотеки из списка в статье. И фреймворки, у которых они в зависимостях (особенно Next.js).
Интересно, как много команд завело встречку в календаре обсудить «Переезд на <не-реакт, подставить нужное>».
https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components
Спустя неделю после просьбы обновить уязвимые библиотеки команда React просит сделать это снова. На этот раз исследователи нашли две уязвимости, которые могут быть крайне неприятны.
CVE-2025-55184 и CVE-2025-67779 — позволяет дёрнуть серверную функцию так, чтобы вызвать бесконечный цикл, что может грохнуть или избыточно нагрузить ваш серверный CPU.
CVE-2025-55183 — позволяет достать исходный код серверной функции. Опасно, только если вы прямо в коде храните пароли или супер-секретную бизнес-логику пишете прям в серверных функциях.
В общем, снова нужно обновить библиотеки из списка в статье. И фреймворки, у которых они в зависимостях (особенно Next.js).
Интересно, как много команд завело встречку в календаре обсудить «Переезд на <не-реакт, подставить нужное>».
https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components
react.dev
Denial of Service and Source Code Exposure in React Server Components – React
The library for web and native user interfaces
🌚40😁30😢10❤3😐3😱2🐳2
Голосование за фичи веб-платформы
WebDX Community Group предлагает «новый» способ влиять на вес фичей в бэклогах браузеров. Теперь в виджетах со статусом Baseline в разных источниках рядом с названием фичи появился счётчик лайков. Когда вы на него кликните, то сможете перейти в ишью на гитхабе, где тоже можете лайкнуть, если вам фича откликается и вы её хотите начать применять.
Почему «новый» в кавычках? Потому что похожий механизм был у Interop 2025 и ранее. Отличие в том, что эти лайки собирают не только перед марш-броском планирования нового года в Interop, а постоянно.
И да, как и в Interop, ваши лайки — это не гарантия того, что браузеры самые залайканные фичи возьмут в работу немедленно. Так вы даёте сигнал, что сообщество разработчиков нуждается в фиче. А заодно комментом можете добавить больше контекста с примерами, почему фича вам действительно нужна — это поможет добавить полезных тестов.
Полезное изменение. Любой сигнал от комьюнити лучше, чем его отсутствие.
https://web.dev/blog/upvote-features?hl=en
WebDX Community Group предлагает «новый» способ влиять на вес фичей в бэклогах браузеров. Теперь в виджетах со статусом Baseline в разных источниках рядом с названием фичи появился счётчик лайков. Когда вы на него кликните, то сможете перейти в ишью на гитхабе, где тоже можете лайкнуть, если вам фича откликается и вы её хотите начать применять.
Почему «новый» в кавычках? Потому что похожий механизм был у Interop 2025 и ранее. Отличие в том, что эти лайки собирают не только перед марш-броском планирования нового года в Interop, а постоянно.
И да, как и в Interop, ваши лайки — это не гарантия того, что браузеры самые залайканные фичи возьмут в работу немедленно. Так вы даёте сигнал, что сообщество разработчиков нуждается в фиче. А заодно комментом можете добавить больше контекста с примерами, почему фича вам действительно нужна — это поможет добавить полезных тестов.
Полезное изменение. Любой сигнал от комьюнити лучше, чем его отсутствие.
https://web.dev/blog/upvote-features?hl=en
web.dev
Vote for the web features you want to see | Blog | web.dev
Have you ever wished you could just poke the browser vendors and say, "Hey, I need this!"? Well, now you can.
🔥11❤2👏1
CSS 2025: Baseline Widely Available — тирлист
Ребята из HTML Academy позвали вечером в формате лайва обсудить фичи CSS, которые в этом году перешли в статус Baseline Widely Available. Знаю, что Лёша Симоненко подготовил тирлист, будем распределять их по мощности. Подозреваю, не обойдётся без аниме :)
Забегайте в 20:00 пообщаться через комментарии.
https://www.youtube.com/live/ASLry05R8T8
Ребята из HTML Academy позвали вечером в формате лайва обсудить фичи CSS, которые в этом году перешли в статус Baseline Widely Available. Знаю, что Лёша Симоненко подготовил тирлист, будем распределять их по мощности. Подозреваю, не обойдётся без аниме :)
Забегайте в 20:00 пообщаться через комментарии.
https://www.youtube.com/live/ASLry05R8T8
YouTube
CSS 2025: Baseline Widely Available — собираем тирлист
CSS в 2025 стал заметно мощнее: появилось много возможностей, которые уже не «когда-нибудь потом», а Baseline Widely Available — то есть их можно уверенно использовать в проектах без оглядки на поддержку. В эфире четыре эксперта разберут всё, что стало доступным…
🔥24🎉4❤3
Web Performance Calendar 2025
Ещё один адвент-календарь для фронтендеров. На этот раз про перфоманс.
Уже есть 22 статьи, ещё парочка доедет в течение ближайших дней. Core Web Vitals, инсайты после исследований перфоманса, оптимизация трафика, неблокирующий рендеринг картинок, соточка в Lighthouse, полезные инструменты и прочие темы для фанатов быстрого веба.
https://calendar.perfplanet.com/2025/
Ещё один адвент-календарь для фронтендеров. На этот раз про перфоманс.
Уже есть 22 статьи, ещё парочка доедет в течение ближайших дней. Core Web Vitals, инсайты после исследований перфоманса, оптимизация трафика, неблокирующий рендеринг картинок, соточка в Lighthouse, полезные инструменты и прочие темы для фанатов быстрого веба.
https://calendar.perfplanet.com/2025/
Web Performance Calendar
2025 Archives
The speed geek's favorite time of year
❤23👍4🔥4😁1
RSC Explorer
После всяких CVE-2025-55182 и прочих «маркетинговых кампаний» вокруг React Server Components всё чаще видел в твиттерах запрос: «Вот было бы круто иметь удобный визуализатор тех самых RSC-запросов, чтобы дебагать».
И вот Дэн Абрамов как раз делится таким инструментом под названием RSC Explorer.
По сути это такая песочница, куда можно загнать ваш серверный и клиентский код, чтобы посмотреть, как между ними гоняются данные в процессе рендеринга RSC-приложения. Сложную файловую структуру не ждите, есть буквально два окошка, куда нужно вставить код. Но для демок этого вполне себе хватит. Те же CVE погонять можно, чтобы лучше их понять.
В репозитории написано, что проект полностью навайбкожен.
https://overreacted.io/introducing-rsc-explorer/
После всяких CVE-2025-55182 и прочих «маркетинговых кампаний» вокруг React Server Components всё чаще видел в твиттерах запрос: «Вот было бы круто иметь удобный визуализатор тех самых RSC-запросов, чтобы дебагать».
И вот Дэн Абрамов как раз делится таким инструментом под названием RSC Explorer.
По сути это такая песочница, куда можно загнать ваш серверный и клиентский код, чтобы посмотреть, как между ними гоняются данные в процессе рендеринга RSC-приложения. Сложную файловую структуру не ждите, есть буквально два окошка, куда нужно вставить код. Но для демок этого вполне себе хватит. Те же CVE погонять можно, чтобы лучше их понять.
В репозитории написано, что проект полностью навайбкожен.
https://overreacted.io/introducing-rsc-explorer/
overreacted.io
Introducing RSC Explorer — overreacted
My new hobby project.
🔥16🤔7😁5❤3👍1