גופני 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) להשמיט אותו.

להעמקה#