Связаться с поддержкой

Мы отвечаем по электронной почте, обычно в течение двух дней.

Для защиты от злоупотреблений Google reCAPTCHA проверяет эту отправку; при этом данные передаются в Google. Скрипт загружается только при открытии этой формы.

← Все записи

Наша собственная проверка мерила на 32 процента шире

Проверка, написанная 27 августа, сообщила о 196 подписях на диаграммах как о слишком широких для картинки, в которой они стоят. Починка заняла день. 103 из них никогда не были слишком широкими.

подписи, отмеченные как слишком широкие первое сообщение 196 измерение и сущности 93 геометрия сдвинута 38 правило края исправлено 3 четыре подписи сокращены 0 измерено 5 093 подписи в 77 записях и одиннадцати языках 103 из 196 никогда не были широкими — широкой была проверка

Пункты — не пиксели

Проверка меряет подпись средствами GD против настоящего файла шрифта:

$bb = imagettfbbox(13, 0, $font, $text);

13 — это размер шрифта из таблицы стилей, в пикселях. imagettfbbox() принимает размер в пунктах. Мерились, стало быть, 13pt, то есть 17,3px, и каждая подпись выходила на 96/72 — на треть — шире.

Уверенность появилась, когда спросили того, кто действительно рисует текст. Chromium без окна умеет загрузить настоящую диаграмму и сообщить для каждой подписи getComputedTextLength(). При 13 эти двое расходились на треть. При 13 * 72 / 96, то есть 9,75, они сходятся в пределах полупроцента: 219 против 219 пикселей на одной подписи, 561 против 559 на подлиннее.

Шрифт всё это время был выбран верно

Проверка меряет против DejaVu Sans, и комментарий над ней за это извинялся: DejaVu шире того, что видит большинство читателей, поэтому порог стоял на 92 процентах.

После измерения выбор оказывается ровно правильным, но по другой причине, чем заявленная. Из шрифтов, до которых стопка этого сайта вообще может дотянуться, DejaVu самый широкий. Та же фраза: DejaVu 219 пикселей, Liberation 194, Cantarell 193, FreeSans 188. Кто читает под Windows или на Mac, получает больше места, никогда меньше. Измерение не осторожное, оно и есть худший случай, а именно его проверка и должна мерить.

Что осталось после арифметики

93 сообщения пережили исправленное измерение. Из них 33 оказались правилом, а не изъяном: проверка держала десять единиц отступа от края картинки и считала его жёсткой границей, поэтому год, стоящий в трёх единицах от края, шёл как обрезанный. Обрезано не было ничего. Границей теперь служит сам край, а вопрос тесноты отдан порогу в 95 процентов.

Оставшееся было настоящим: подписи, заходящие под полосы, столбцы, слишком узкие для русской фразы, подпись поперёк соседнего блока. Исправлено сдвигом геометрии, и это дёшево: геометрия во всех одиннадцати языковых строках одна и та же, значит одна буквальная замена чинит одиннадцать. Четыре подписи и правда были длиннее всей картинки, каждая в своём языке, и их сократили.

Что здесь обобщается

Проверка, ошибающаяся в одну сторону, хуже, чем никакой, потому что она производит работу. Две трети дня ушли на диаграммы, с которыми всё было в порядке, и единственная причина, по которой починили остальное, — что ложные сообщения стояли рядом с настоящими.

Дело решило не более внимательное чтение кода. Дело решило измерение измерения чем-то независимым, что рисует настоящий текст, — и это заняло десять минут после недели доверия к проверке.

Реклама