
Существуют недостатки программного обеспечения, которые имеют тенденцию сохраняться даже в самых активных проектах. Браузер с открытым исходным кодом, такой как Firefox, однако, стремится быть настоящим рекордсменом, исправляя ошибки многолетней давности как раз к Рождеству.
Недостаток в браузере Firefox был помечен как «устраненный» сразу после достижения его "совершеннолетия". Ошибка 290125 была впервые обнаружена 18 лет назад, когда разработчики Mozilla обнаружили, что браузер с открытым исходным кодом неправильно обрабатывает псевдоэлемент ::first-letter CSS.
Как поясняется в веб-документах MDN, CSS-псевдоэлемент ::first-letter «применяет стили к первой букве первой строки блочного элемента, но только в том случае, если ему не предшествует другой контент (например, изображения или встроенные элементы таблицы)». При перемещении влево для создания буквицы, Gecko, текущий механизм компоновки Firefox «игнорирует любую объявленную высоту строки и наследует высоту строки родительского блока».
Неправильное поведение — согласно стандарту CSS — «не позволяет авторам позиционировать первую букву, уменьшая поле строки за счет использования небольшой высоты строки». Конечным результатом было то, что Firefox неправильно отображал первую букву, в то время как другие браузеры (Opera 7.5+ и Safari 1.0 в то время) функцию CSS обрабатывали правильно.
О первоначальной проблеме было сообщено 12 апреля 2005 г., и она присутствовала в первом основном выпуске Firefox (1.0). Первое исправление появилось в Firefox 3.0 в 2007 году, когда разработчики Mozilla решили проблему разного рендеринга высоты строк на платформе Mac. Позже ошибка была повторно обнаружена (в 2014 году), когда рабочая группа CSS, которая управляет стандартом CSS в консорциуме World Wide Web, решила, что Firefox не соответствует официальным спецификациям CSS с его специальной обработкой ::first- буквенный элемент.
Ошибка была окончательно устранена 20 декабря 2022 года, и новый код должен появиться в предстоящем выпуске Firefox 110, который в настоящее время запланирован на февраль 2023 года. Однако, как объяснил разработчик Mozilla Джонатан Кью, принятое в настоящее время решение представляет собой «патч», предназначенный для «минимизировать риск» и упростить переключение между существующим «устаревшим» поведением механизма компоновки Gecko и новым «совместимым» поведением.
В конечном итоге Mozilla должна «переопределить ::first-letter полностью во время построения фрейма, а не во время перекомпоновки», — объяснил Кью. На данный момент недавно созданный патч позволяет браузеру выбирать между тремя различными вариантами поведения: «использовать узкие границы глифов», что является существующим поведением Gecko; «не используйте жесткие границы глифов, соблюдайте высоту строки», чтобы получить результат, аналогичный Webkit/Blink (Chromium/Chrome) или «автоматически выбирать» между двумя вышеупомянутыми поведениями на основе эвристики.
Иван Ковалев
VIA
В 2014 году Декрет № 4 расширил виды деятельности компаний-резидентов Парка Высоких Технологий новыми наукоемкими