גופני Google ב-BASIC
תנו שם למשפחת גופן וקבלו טקסט וקטורי אמיתי במקום גיליון bitmap, עם ההמתנה שטעינה אסינכרונית דורשת ומה קורה ברגע שהמשחק מיוצא.
למה זה נועד#
BASIC קלאסי מצייר טקסט מ-תמונת גופן: גיליון של גליפים שקובעים עם
TextFontImage(text, image). זה עובד, זה מה שהניב תמיד עשה, וזה נשאר
בדיוק במקומו. אבל גיליון bitmap לא נמתח, והוא נראה כמו מה שהוא.
LoadGoogleFont נותן שם למשפחה במקום:
font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
Sync()
LOOP
שום דבר לא הוסר. LoadFont, TextFontImage ומסלול ה-bitmap ממשיכים
לעבוד, ותוכנית יכולה לערבב ביניהם.
ההמתנה אינה אופציונלית#
גופן הוא קובץ, והקובץ מגיע אחרי שהקריאה חוזרת. הדפיסו לפני שהוא נוחת והפריימים הראשונים יוצאים בגופן ברירת המחדל, מה שנקרא כמו "הפקודה לא עשתה כלום".
GoogleFontReady הוא מה שממתינים עליו:
font = LoadGoogleFont("Inter")
ready = 0
DO
IF ready = 0
IF GoogleFontReady(font) = 1
PrintFont(font)
ready = 1
ENDIF
ENDIF
Print("Hello")
Sync()
LOOP
אזהרה: אותה מלכודת תפסה פעם את המודולים של האפליקציה עצמה. הכרזה על גופן זה לא לטעון אותו: קנבס מוריד משפחה רק כשמשהו מבקש אותה, והתשובה מגיעה פריים אחד או כמה אחר כך.
דפדוף במשפחות#
המנוע משנע רשימת משפחות, ותוכנית יכולה לקרוא אותה, וזה מה שבורר גופנים בתוך משחק צריך:
count = GoogleFontCount()
FOR i = 0 TO count - 1
Print(GoogleFontName(i))
NEXT i
הרשימה ממלאת בורר; היא לא מגבלה. כל משפחת Google נטענת בשם דרך
LoadGoogleFont, ברשימה או לא.
מה קורה כשמייצאים#
| איפה המשחק רץ | מה קורה |
|---|---|
| העורך | המשפחה נמשכת מ-Google בפעם הראשונה שהיא נקראת בשם. |
| ייצוא לדפדפן | אותו דבר, והקובץ מוגש מהבנייה כשהמייצא יכול היה לצרף אותו. |
| בנייה native או Bevy | הקובץ חייב היה לנסוע עם הבנייה. אין רשת. |
המייצא קורא את התוכנית שלכם, מוצא כל משפחה שקראתם לה בשם בטקסט
פשוט, מוריד אותה וכותב אותה ל-assets/fonts/<Family>.woff2. הבנייה
ההיא עובדת אז אופליין.
אזהרה: משפחה שמחושבת בזמן ריצה לא ניתנת למציאה בקריאת התוכנית, אז אי אפשר לצרף אותה. דוח הייצוא אומר זאת, והבנייה נופלת חזרה לגופן ברירת המחדל. כתבו
LoadGoogleFont("Inter"), לאLoadGoogleFont(names[i]), לכל דבר שחייב לשרוד ייצוא.
הפקודות#
| פקודה | מה היא עושה |
|---|---|
LoadGoogleFont(family) | טוען את המשפחה, מוסר id |
LoadGoogleFont(fontID, family) | אותו דבר, עם id שאתם בוחרים |
GoogleFontReady(fontID) | 1 ברגע שהקובץ שמיש |
GoogleFontCount() | כמה משפחות הרשימה מציעה |
GoogleFontName(index) | שם משפחה אחת מהרשימה |
כל השאר הוא מנגנון הגופנים הקיים: PrintFont(id) עבור Print,
TextFontSet(text, id) עבור אובייקט Text, DeleteFont(id) להשמיט
אותו.
להעמקה#
- כל המשפחה, עם כל פרמטר: פקודות ה-Font.
- הניב עצמו: שפת BASIC.