ฟอนต์ Google ใน BASIC

ตั้งชื่อตระกูลฟอนต์แล้วได้ข้อความเวกเตอร์จริงแทนที่จะเป็นแผ่นภาพ พร้อมการรอที่การโหลดแบบอะซิงโครนัสต้องการ และสิ่งที่เกิดขึ้นเมื่อเกมถูกส่งออก

สิ่งนี้มีไว้เพื่ออะไร#

BASIC แบบคลาสสิกวาดข้อความจาก font image: แผ่นตัวอักษรที่คุณตั้งค่าด้วย 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

คำเตือน: กับดักเดียวกันนี้เคยดักโมดูลของแอปเองมาแล้วครั้งหนึ่ง การประกาศ ฟอนต์ไม่ใช่การโหลดมัน: canvas จะดาวน์โหลดตระกูลฟอนต์ก็ต่อเมื่อมีอะไรร้องขอมัน เท่านั้น และคำตอบจะมาถึงในอีกหนึ่งเฟรมหรือหลายเฟรมถัดไป

เรียกดูตระกูลฟอนต์#

เอนจินมาพร้อมรายชื่อตระกูลฟอนต์ และโปรแกรมสามารถอ่านมันได้ ซึ่งเป็นสิ่งที่ ตัวเลือกฟอนต์ภายในเกมต้องการ:

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) เพื่อลบมัน

ไปต่อ#