BASIC में Google fonts
किसी font family का नाम लें और bitmap sheet की बजाय असली vector टेक्स्ट पाएँ, उस इंतज़ार के साथ जो asynchronous loading माँगता है, और गेम एक्सपोर्ट होने पर क्या होता है।
यह किसलिए है#
Classic BASIC टेक्स्ट को एक font image से बनाता है: glyphs की एक शीट
जिसे आप TextFontImage(text, image) से सेट करते हैं। यह काम करता है, यही
डायलेक्ट हमेशा से करता आया है, और यह ठीक वहीं बना रहता है। लेकिन कोई
bitmap sheet स्केल नहीं होती, और यह वैसी ही दिखती है जैसी है।
इसकी बजाय LoadGoogleFont एक family का नाम लेता है:
font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
Sync()
LOOP
कुछ भी हटाया नहीं गया। LoadFont, TextFontImage और bitmap वाला रास्ता,
सब काम करते रहते हैं, और कोई प्रोग्राम इन्हें मिला भी सकता है।
इंतज़ार वैकल्पिक नहीं है#
कोई font एक फ़ाइल है, और वह फ़ाइल कॉल के लौटने के बाद पहुँचती है। उसके पहुँचने से पहले Print करें, तो पहले फ़्रेम fallback font में आएँगे, जो ऐसा लगेगा जैसे "कमांड ने कुछ नहीं किया"।
आप जिस पर इंतज़ार करते हैं वह है GoogleFontReady:
font = LoadGoogleFont("Inter")
ready = 0
DO
IF ready = 0
IF GoogleFontReady(font) = 1
PrintFont(font)
ready = 1
ENDIF
ENDIF
Print("Hello")
Sync()
LOOP
चेतावनी: यही जाल कभी ऐप के अपने मॉड्यूल को भी पकड़ चुका है। किसी font को declare करना उसे load करना नहीं है: कोई canvas किसी family को तभी डाउनलोड करता है जब कोई उसकी माँग करे, और जवाब एक या कई फ़्रेम बाद पहुँचता है।
Family ब्राउज़ करना#
इंजन families की एक लिस्ट के साथ आता है, और कोई प्रोग्राम इसे पढ़ सकता है, और किसी गेम के अंदर font picker को यही चाहिए होता है:
count = GoogleFontCount()
FOR i = 0 TO count - 1
Print(GoogleFontName(i))
NEXT i
यह लिस्ट किसी picker को भरती है; यह कोई सीमा नहीं है। कोई भी Google
family LoadGoogleFont से नाम लेकर लोड हो जाती है, लिस्टेड हो या न हो।
एक्सपोर्ट करने पर क्या होता है#
| गेम कहाँ चलता है | क्या होता है |
|---|---|
| Editor | जब पहली बार family का नाम लिया जाता है, तभी उसे Google से लाया जाता है। |
| Browser export | वही, और अगर exporter इसे bundle कर पाया तो फ़ाइल build से दी जाती है। |
| Native या Bevy build | फ़ाइल का build के साथ जाना ज़रूरी है। यहाँ कोई नेटवर्क नहीं है। |
Exporter आपका प्रोग्राम पढ़ता है, हर वह family ढूँढता है जिसका नाम आपने
plain text में लिया है, उसे डाउनलोड करता है और
assets/fonts/<Family>.woff2 पर लिख देता है। फिर वह build ऑफ़लाइन काम
करता है।
चेतावनी: रन टाइम पर तय होने वाली किसी family को प्रोग्राम पढ़कर नहीं ढूँढा जा सकता, इसलिए इसे bundle नहीं किया जा सकता। export रिपोर्ट यह बता देती है, और build डिफ़ॉल्ट font पर वापस चला जाता है। जिस भी चीज़ को export के बाद बचे रहना है, उसके लिए
LoadGoogleFont("Inter")लिखें,LoadGoogleFont(names[i])नहीं।
कमांड#
| Command | यह क्या करता है |
|---|---|
LoadGoogleFont(family) | family को लोड करता है, एक id वापस देता है |
LoadGoogleFont(fontID, family) | वही, आपकी चुनी हुई id के साथ |
GoogleFontReady(fontID) | फ़ाइल इस्तेमाल लायक होते ही 1 |
GoogleFontCount() | लिस्ट कितनी families देती है |
GoogleFontName(index) | लिस्ट से एक family का नाम |
बाक़ी सब कुछ मौजूदा font मशीनरी है: Print के लिए PrintFont(id), किसी
Text ऑब्जेक्ट के लिए TextFontSet(text, id), इसे हटाने के लिए
DeleteFont(id)।
आगे बढ़ते हुए#
- पूरी family, हर पैरामीटर के साथ: Font कमांड।
- ख़ुद डायलेक्ट: BASIC भाषा।