लेबल की जाँच पिक्सेल नहीं, पॉइंट माप रही थी
27 अगस्त को लिखी गई एक जाँच ने बताया कि 196 डायग्राम लेबल अपनी तस्वीर के लिए बहुत चौड़े हैं। उन्हें एक-एक करके देखने में एक दिन लगा। 196 में से 103 असल में खुद जाँच की ही उपज निकले, और उसी हफ़्ते जाँच को ठीक कर दिया गया।
पॉइंट पिक्सेल नहीं होते
जाँच किसी लेबल को 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 प्रतिशत वाली सीमा के ज़िम्मे है।
जो बचा, वह असली था: पट्टियों के नीचे से गुज़रते लेबल, किसी रूसी वाक्य के लिए बहुत सँकरे कॉलम, अपने पड़ोसी के ऊपर बैठा कैप्शन। इन्हें ज्यामिति खिसकाकर ठीक किया गया, जो सस्ता है — ज्यामिति ग्यारहों भाषाओं की पंक्तियों में एक जैसी है, इसलिए एक शब्दशः बदलाव ग्यारह जगह ठीक कर देता है। चार लेबल एक-एक भाषा में सचमुच पूरी तस्वीर से लंबे थे, और उन्हें छोटा किया गया।
आम सबक
जो जाँच एक दिशा में गलती करती है, वह काम पैदा करती है, इसीलिए जाँचने वाले को भी जाँचना ज़रूरी है। एक दिन का दो-तिहाई हिस्सा ऐसे डायग्रामों में गया, जो ठीक थे — और उसी दौर में वे डायग्राम भी ठीक हुए, जो ठीक नहीं थे, क्योंकि गलत रिपोर्टें असली रिपोर्टों के ठीक बगल में थीं।
मामला कोड को और ध्यान से पढ़ने से नहीं सुलझा। वह माप को किसी ऐसी स्वतंत्र चीज़ से जाँचने से सुलझा, जो असली टेक्स्ट बनाती है — और इसमें दस मिनट लगे। अब जाँच साइज़ 13 * 72 / 96 पर तय करती है और तब से इसी आधार पर चल रही है।