यह एक बहुत पुराना सवाल है, लेकिन मैं इसे फिर से देख रहा हूं क्योंकि मुझे एक ऐप में यह समस्या थी जिसे मैं विकसित कर रहा हूं और सभी उत्तर यहां चाहते हैं।
(TL के लिए इस अनुच्छेद को छोड़ें? DR ...)मैं Cloud.typography.com से गोथम वेबफ़ॉन्ट का उपयोग कर रहा हूं, और मेरे पास बटन हैं जो खोखले (एक सफेद सीमा / पाठ और एक पारदर्शी पृष्ठभूमि के साथ) शुरू करते हैं और होवर पर एक पृष्ठभूमि रंग प्राप्त करते हैं। मैंने पाया कि जो पृष्ठभूमि रंग मैं उपयोग कर रहा था उनमें से कुछ सफेद पाठ के साथ अच्छी तरह से विपरीत नहीं थे, इसलिए मैं उन बटनों के लिए पाठ को काले रंग में बदलना चाहता था, लेकिन - चाहे दृश्य चाल या सामान्य विरोधी-अलियासिंग विधियों के कारण - अंधेरा हल्की पृष्ठभूमि पर पाठ हमेशा काले रंग की पृष्ठभूमि पर सफेद पाठ की तुलना में हल्का होता है। मैंने पाया कि डार्क टेक्स्ट के लिए वज़न को 400 से बढ़ाकर लगभग उसी "विज़ुअल" वज़न को बनाए रखा। हालाँकि, यह एक छोटी राशि द्वारा बटन की चौड़ाई को बढ़ा रहा था - एक पिक्सेल का एक अंश - लेकिन यह बटन को "घबराना" से थोड़ा प्रकट करने के लिए पर्याप्त था, जिससे मैं छुटकारा पाना चाहता था।
उपाय:
जाहिर है, यह वास्तव में एक विकराल समस्या है, इसलिए इसे एक बारीक समाधान की आवश्यकता है। अंततः मैंने letter-spacingbolder पाठ पर एक नकारात्मक का उपयोग किया , जैसा कि ऊपर cgTag ने सुझाया था, लेकिन 1px रास्ता ओवरकिल होगा, इसलिए मैंने सिर्फ उसी चौड़ाई की गणना की जिसकी मुझे आवश्यकता होगी।
Chrome devtools में बटन का निरीक्षण करने पर, मैंने पाया कि मेरे बटन की डिफ़ॉल्ट चौड़ाई 165.47px, और होवर पर 165.69px, 0.22px का अंतर है। बटन में 9 अक्षर थे, इसलिए:
0.22 / 9 = 0.024444px
कि उन्हें इकाइयों में परिवर्तित करके मैं समायोजन फ़ॉन्ट-आकार अज्ञेय बना सकता था। मेरा बटन 16px के फ़ॉन्ट आकार का उपयोग कर रहा था, इसलिए:
0.024444 / 16 = 0.001527em
तो मेरे विशेष फ़ॉन्ट के लिए, निम्नलिखित सीएसएस बटन को हॉवर पर ठीक उसी चौड़ाई में रखता है :
.btn {
font-weight: 400;
}
.btn:hover {
font-weight: 500;
letter-spacing: -0.001527em;
}
थोड़े परीक्षण और उपरोक्त सूत्र का उपयोग करके, आप letter-spacingअपनी स्थिति के लिए सही मूल्य पा सकते हैं , और यह फ़ॉन्ट आकार की परवाह किए बिना काम करना चाहिए।
एक चेतावनी यह है कि विभिन्न ब्राउज़र थोड़ा अलग उप-पिक्सेल गणना का उपयोग करते हैं, इसलिए यदि आप उप-पिक्सेल-सटीक परिशुद्धता के इस ओसीडी स्तर के लिए लक्ष्य कर रहे हैं, तो आपको परीक्षण को दोहराने और प्रत्येक ब्राउज़र के लिए एक अलग मान सेट करने की आवश्यकता होगी। ब्राउज़र-लक्षित सीएसएस शैलियों को आम तौर पर अच्छे कारण के लिए रखा जाता है, लेकिन मुझे लगता है कि यह एक उपयोग मामला है जहां यह एकमात्र विकल्प है जो समझ में आता है।