यह आसान है: फ़ॉन्ट्स को रिज़ॉल्यूशन से मिलान करने की आवश्यकता नहीं है, उन्हें पिक्सेल घनत्व से मेल खाना चाहिए ।
पिक्सेल घनत्व को पिक्सेल प्रति इंच ( PPI ), या पिक्सेल प्रति सेंटीमीटर के रूप में मापा जाता है । एक माप इकाई भी है जिसे घनत्व स्वतंत्र पिक्सल ( डीपी ) कहा जाता है । यह परिभाषित किया गया है कि 1dp
एक 160 PPI
स्क्रीन पर एक पिक्सेल का आकार है ।
अब फोंट पर वापस आ रहे हैं, इस परीक्षण को बनाने की कोशिश करें: अपने लैपटॉप को 720p पर चलाने के लिए रखें। फ़ॉन्ट के आकार पर एक नज़र डालें। अब इसे अपने डेस्कटॉप के 1080p 42 "मॉनीटर में प्लग करें। यदि आपका मॉनीटर इसके आकार के बारे में सही जानकारी देता है, तो फ़ॉन्ट का आकार वही होना चाहिए जो कि 720p स्क्रीन पर था। कल्पना करें कि यदि आपके टेक्स्ट में टेक्स्ट कितना अजीब है। लैपटॉप का आपके डेस्कटॉप मॉनीटर पर पाठ की तुलना में एक अलग आकार था। उस कहा के साथ, बड़े प्रस्तावों को फ़ॉन्ट को अधिक विस्तार देना चाहिए, बड़ी स्क्रीन को दिखाने के लिए अधिक सामग्री देनी चाहिए।
पाठ्य संपादकों पर भी यही तथ्य देखा जा सकता है। एक 72pt
फ़ॉन्ट को स्क्रीन पर उसी तरह दिखना चाहिए जैसा कि कागज पर छपा होता है।
इसका मतलब यह है कि आपको सभी प्रदर्शन आकारों (कुछ अपवादों के साथ) में समान आकार चाहिए। यदि आप कहीं खुद को आधार बनाना चाहते हैं, तो वेबसाइटें आमतौर पर 12pt
फोंट, एमएस विंडोज का उपयोग करती हैं 11pt
और 12pt
फोंट का उपयोग करती हैं।
यह चार्ट (उत्तर के तल में भी शामिल है) 12pt
सीएसएस में हमें बताएं सीएसएस में 16px
भी लगभग समान है (जैसे कि यह पर्याप्त भ्रामक नहीं था, सीएसएस में एक px हर जगह डीपी के समान है), तो चलिए आपको बताते हैं ' 16dp
LibGDX पर अपने फोंट बनाएंगे।
अपने खेल पर, FreeTypeFontGenerator
गतिशील रूप से फोंट उत्पन्न करने के लिए उपयोग करें , इस तरह से आप स्क्रीन घनत्व पर विचार कर सकते हैं जब उन्हें बनाते हैं:
BitmapFont createFont(FreeTypeFontGenerator ftfg, float dp)
{
return ftfg.generateFont((int)(dp * Gdx.graphics.getDensity()));
}
//On Init
BitmapFont buttonFont = createFont(arial, 16); //16dp == 12pt
यह इसलिए काम करता है क्योंकि इस तरह Gdx.graphics.getDensity()
से समान है YourScreenDensity/160
, चीजों को उस आकार में लाने के लिए "स्केल फैक्टर" है जो वे 160ppi स्क्रीन पर होंगे।
मेरे द्वारा पहले उल्लेख किए गए अपवादों के बारे में: आप शायद लोगो, प्रोमो, आदि के मामले में स्क्रीन आकार के अनुसार फोंट को फिर से आकार देना चाहते हैं, लेकिन ध्यान रखें कि आप फ़ोटोशॉप या जिम्प जैसे ग्राफिक्स एडिटर पर इन्हें बनाना बेहतर होगा। , वैसे भी।
अन्य अपवाद छोटे स्क्रीन पर पाठ है। 4.5 "या छोटे फोन स्क्रीन, वियरेबल्स। आमतौर पर आपके पास स्क्रॉलिंग सामग्री बनाने का समय नहीं होगा, या आप बस उस स्क्रीन पर इतनी सामग्री डालने में सक्षम नहीं होंगे। आप फ़ॉन्ट को स्केल करने की कोशिश कर सकते हैं 1dp
, जैसा कि नीचे है। पाठक के पास शायद फोन उनके चेहरे के बहुत करीब होगा, उन्हें शायद पढ़ने में कोई समस्या नहीं होगी। ध्यान रखें कि आप बिना पढ़े छोटे पाठ को पढ़ने वाले खिलाड़ी को परेशान कर सकते हैं।
टी एल; डॉ:
- भौतिक आकार स्क्रीन आकार या रिज़ॉल्यूशन के साथ सीधे तौर पर नहीं बदलेगा, लेकिन दोनों के संयोजन के साथ (
screenSize/resolution
प्रसिद्ध पीपीआई)
- पीटी और डीपी के बारे में सोचो । जब तक आपको अंतिम परिणाम नहीं निकालना है, स्क्रीन पिक्सल के बारे में भूल जाएं।
- एक उचित आकार के साथ रनटाइम पर अपना फ़ॉन्ट बनाएं।
- स्क्रीन पिक्सल के लिए dp परिवर्तित :
pixels = dp * Gdx.graphics.getDensity();
- यदि आप एक इंजन का उपयोग कर रहे हैं जो आपको LibGDX की तरह डीपी को कनवर्टर नहीं देता है
Gdx.graphics.getDensity()
, तो आप कोशिश कर सकते हैं: densityFactor = Screen.getPixelsPerInch() / 160.0f
फिरpixels = dp * densityFactor
संपादित करें:
2014, Google IO पर जून 25, Matias ने Android के लिए एक नई शैली दिशानिर्देशों की घोषणा की, इसमें एक नया Roboto फ़ॉन्ट और टाइपोग्राफी दिशानिर्देश शामिल हैं। इस तालिका को एक गाइड के रूप में लें:
EDIT2:
लिंक के सड़ने की स्थिति में सीएसएस फ़ॉन्ट आकार चार्ट शामिल: