فحص التسميات كان يقيس بالنقاط لا بالبكسل
فحص كُتب في 27 أغسطس أبلغ عن 196 تسمية في المخططات على أنها أعرض من الصورة التي تقع فيها. واستغرقت معالجتها يومًا. وتبيّن أن 103 منها من صنع الفحص نفسه، وصُحّح الفحص في الأسبوع ذاته.
النقاط ليست بكسلات
يقيس الفحص التسمية باستخدام GD مقابل ملف خط حقيقي:
$bb = imagettfbbox(13, 0, $font, $text);
13 هو حجم الخط من ورقة الأنماط، بالبكسل. imagettfbbox() تأخذ الحجم بوحدة النقاط. كان الفحص يقيس 13pt، أي 17.3px، فجاءت كل تسمية أعرض بنسبة 96/72 — أي بمقدار الثلث — مما ينبغي.
والطريقة للتأكد كانت سؤال شيء يرسم النص فعلًا. يستطيع Headless 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 بالمئة.
ما تبقّى كان حقيقيًا: تسميات تمتد تحت الأشرطة، وأعمدة أضيق من أن تتسع لجملة روسية، وتعليق يمتد فوق جاره. وأُصلحت هذه بتحريك الأشكال، وهو أمر رخيص — فالأشكال متطابقة في صفوف اللغات الإحدى عشرة كلها، ولذا فإن استبدالًا حرفيًا واحدًا يُصلح إحدى عشرة. وأربع تسميات كانت فعلًا أطول من الصورة كلها، كل منها في لغة واحدة، فجرى تقصيرها.
ما يمكن تعميمه
الفحص الذي يخطئ في اتجاه واحد يولّد عملًا، ولهذا يستحق الفاحص نفسه أن يُفحص. ذهب ثلثا يوم في مخططات كانت سليمة — وأصلحت الجولة نفسها المخططات التي لم تكن سليمة، لأن البلاغات الخاطئة كانت بجوار الحقيقية.
ما حسم الأمر لم يكن قراءة الكود بعناية أكبر. بل قياس القياس نفسه مقابل شيء مستقل يرسم نصًا حقيقيًا — واستغرق ذلك عشر دقائق. صار الفحص الآن يحدد الحجم عند 13 * 72 / 96 ويعمل على هذا الأساس منذ ذلك الحين.