2013-02-15 9 views
9

मेरे पास एक फ़ॉन्ट है जिसमें एक परिवार के भीतर कई फ़ॉन्ट वजन हैं (अतिरिक्त प्रकाश, प्रकाश, नियमित, सेमिबॉल्ड, बोल्ड, काला)। इस उदाहरण के लिए, मैं मुफ्त Google वेबफॉन्ट स्रोत संस प्रो का उपयोग कर रहा हूं, लेकिन मेरे पास एक ही फ़ॉन्ट है जिसमें कई वजन हैं (जैसे एवेनियर नेक्स्ट, मैक ओएस 10.8 में एक सिस्टम फ़ॉन्ट)। एक क्यूटी स्टाइलशीट में, यदि मैं निर्दिष्ट करता हूं:क्या एक क्यूटी स्टाइलशीट में फ़ॉन्ट के "नियमित" और "बोल्ड" संस्करणों से अधिक निर्दिष्ट करना संभव है?

QLabel 
{ 
    font-family: Source Sans Pro; 
    font-size: 24px; 
} 

मुझे फ़ॉन्ट की "नियमित" शैली मिलती है। यदि मैं निर्दिष्ट करता हूं:

QLabel 
{ 
    font-family: Source Sans Pro; 
    font-weight: bold; 
    font-size: 24px; 
} 

मुझे फ़ॉन्ट का बोल्ड संस्करण मिलता है। मैं किसी भी संयोजन को समझ नहीं सकता जो मुझे नियमित या बोल्ड के अलावा कुछ भी दे। मैंने वजन को सीधे फ़ॉन्ट-फ़ैमिली (उदाहरण के लिए, फ़ॉन्ट-फ़ैमिली: सोर्स सन्स प्रो लाइट;) में डालने का प्रयास किया, मैंने फ़ॉन्ट-वेट में लाइट, सेमिबॉल्ड इत्यादि का उपयोग करने की कोशिश की: विनिर्देशक, मैंने संख्यात्मक समकक्षों का उपयोग करने की भी कोशिश की (Qt documentation का कहना है कि वे सीएसएस x00 नंबरिंग के बजाय 0 से 99 के मान मानते हैं)। कुछ भी काम नहीं करता है।

संपादित करें: मैंने फ़ॉन्ट-वेट संपत्ति के लिए 0 और 999 के बीच संख्याओं में उप-त्वरित प्रोग्राम लिखने का प्रयास किया है। दिलचस्प बात यह है कि अगर मैं 0 और 3 9 9 के बीच कुछ भी डालता हूं तो मैं "हल्का" प्राप्त करने में सक्षम था। 400 से 407 ने मुझे "नियमित", 408 से 59 9 ने मुझे फिर से प्रकाश दिया, फिर 600 या उससे अधिक मुझे सेमीबॉल्ड दिया। यह वास्तव में अजीब लगता है, क्योंकि अब संख्याओं का उपयोग करके मैं कम से कम "प्रकाश" और "सेमिबॉल्ड" तक पहुंच सकता हूं। मुझे अभी भी "अतिरिक्त लाइट" या "ब्लैक" वजन प्राप्त करने का कोई तरीका नहीं मिल रहा है।

मेरा एकमात्र सवाल यह है कि क्या यह कस्टम कोड का उपयोग किए बिना असंभव है? (

QFontDatabase db; 
QFont = db.font("Source Sans Pro", "Semibold", 24); 

लेकिन स्पष्ट रूप से इसका मतलब है मैं स्टाइलशीट उपयोग नहीं कर सकते या बुरा, मैं अपने खुद के स्टाइलशीट पार्सर लिखने या मौजूदा क्यूटी एक रैप करने के लिए है: मैं इस प्रकार एक QFont बनाकर मैं चाहता हूँ सटीक फ़ॉन्ट प्राप्त कर सकते हैं या कुछ और)। यह विश्वास करना थोड़ा मुश्किल लगता है कि स्टाइलशीट के साथ यह संभव नहीं है। मल्टी-वेट फोंट क्यूटी में खराब रूप से समर्थित हैं?

उत्तर

7

अंत में क्यूटी स्रोत के माध्यम से टोल किया गया और मुझे लगता है कि मुझे जवाब मिला। संक्षेप में, नहीं, यह संभव नहीं है। या कम से कम, यह फ़ॉन्ट पर निर्भर करता है, और शायद मंच भी (मैं क्यूटी 4.8.4 के साथ मैक ओएस एक्स में काम कर रहा हूं)।

क्यूफोंट में फ़ॉन्ट "वजन" (QFont :: setWeight() द्वारा सेट किया गया है), जो 0-99 से एक संख्या है। उनके पास "स्टाइल नेम" भी है जो QFont :: setStyleName() द्वारा सेट किया गया है। आप एक स्टाइलशीट में फ़ॉन्ट-वेट का उपयोग करके वजन निर्धारित कर सकते हैं, लेकिन आप styleName सेट नहीं कर सकते (मैंने qcssparser के स्रोत को देखकर पुष्टि की है)। एक फ़ॉन्ट-शैली पैरामीटर है, लेकिन इसका उपयोग केवल सामान्य, इटालिक या तिरछा सेट करने के लिए किया जा सकता है ... यानी, यह QFont :: setStyle() को सेट करता है, सेट स्टाइलनाम() नहीं।

कम से कम मेरे मामले में, फ़ॉन्ट के कुछ वजन तक पहुंचने का एकमात्र तरीका "शैली का नाम" है, जो इसे "अतिरिक्त प्रकाश" जैसी विशिष्ट स्ट्रिंग देता है। जाहिर है, क्यूटी 0-99 वजन संख्या और शैली के नाम के बीच परिवर्तित करने के लिए कुछ आंतरिक (शायद प्लेटफार्म-विशिष्ट) जादू कर रही है, और ऐसा लगता है कि यह अच्छा नहीं लगता है। मैं क्यूटी स्रोतों में भी बहुत परेशान हो गया कि वास्तव में यह पता लगाने के लिए कि यह मानचित्रण कहां हो रहा था।

अजीबता में जोड़ने के लिए, QFont :: setWeight 0-99 (जैसा कि मैंने पहले बताया था) के बीच एक संख्या लेता है, लेकिन स्टाइलशीट में फ़ॉन्ट-वेट प्रॉपर्टी 100 और 800 के बीच एक संख्या लेती है, फिर 8 तक विभाजित होती है और सेटवेइट कॉल करता है। मुझे लगता है कि यह CSS weight numbering system से अधिक निकटता से मेल खाता है।

अब मुझे यह पता लगाना होगा कि मैं इस तरह के आसपास जाने के लिए किस तरह का हैक कर रहा हूं।मैं आसानी से qcssparser पर फ़ॉन्ट-स्टाइल-नाम जैसे कुछ जोड़ सकता हूं, लेकिन मैं क्यूटी स्रोतों को पैच नहीं करना चाहता, इसलिए मैं शायद एप्लिकेशन स्तर पर कुछ करूँगा।

+4

यह मैक ओएस एक्स में केवल एक मुद्दा है। मुझे शायद एक क्यूटी बग रिपोर्ट दर्ज करनी चाहिए। यदि आप मैक और लिनक्स (क्यूटी 4.8.4 का उपयोग कर दोनों) पर एक ही ट्रू टाइप फ़ॉन्ट्स का चयन करने के लिए सटीक कोड चलाते हैं तो आपको अलग-अलग परिणाम मिलते हैं। लिनक्स/एक्स 11 संस्करण जो आप उम्मीद करेंगे। – ScottG

संबंधित मुद्दे