Google fonts trong BASIC

Đặt tên một họ font và nhận về chữ vector thật thay vì một sheet bitmap, cùng với khoảng chờ mà việc tải bất đồng bộ đòi hỏi và điều gì xảy ra khi game được xuất ra.

Cái này dùng để làm gì#

BASIC cổ điển vẽ chữ từ một font image: một sheet glyph bạn thiết lập bằng TextFontImage(text, image). Nó hoạt động tốt, đó là cách dialect này vẫn luôn làm, và nó vẫn giữ nguyên như vậy. Nhưng một sheet bitmap không co giãn được, và trông đúng như bản chất của nó.

LoadGoogleFont đặt tên một họ font thay vào đó:

font = LoadGoogleFont("Inter")
PrintFont(font)
Print("Hello")
DO
  Sync()
LOOP

Không có gì bị gỡ bỏ. LoadFont, TextFontImage và lối đi bitmap vẫn hoạt động, và một chương trình có thể trộn cả hai.

Khoảng chờ không phải là tuỳ chọn#

Một font là một file, và file đó đến sau khi lệnh gọi đã trả về. In chữ trước khi nó đến và những khung hình đầu tiên sẽ hiện ra bằng font dự phòng, đọc như là "lệnh không làm gì cả".

GoogleFontReady là thứ bạn chờ:

font = LoadGoogleFont("Inter")
ready = 0
DO
  IF ready = 0
    IF GoogleFontReady(font) = 1
      PrintFont(font)
      ready = 1
    ENDIF
  ENDIF
  Print("Hello")
  Sync()
LOOP

Cảnh báo: cùng một cái bẫy này từng làm khó chính các module của ứng dụng. Khai báo một font không có nghĩa là đã tải nó: một canvas chỉ tải về một họ font khi có thứ gì đó yêu cầu nó, và câu trả lời đến sau một hoặc vài khung hình.

Duyệt qua các họ font#

Engine đi kèm một danh sách các họ font, và một chương trình có thể đọc nó, đó là thứ một bộ chọn font bên trong game cần đến:

count = GoogleFontCount()
FOR i = 0 TO count - 1
  Print(GoogleFontName(i))
NEXT i

Danh sách đó lấp đầy một bộ chọn; nó không phải là một giới hạn. Bất kỳ họ font Google nào cũng tải được theo tên qua LoadGoogleFont, dù có nằm trong danh sách hay không.

Điều gì xảy ra khi bạn xuất#

Nơi game chạyĐiều gì xảy ra
EditorHọ font được lấy từ Google ngay lần đầu tiên nó được đặt tên.
Xuất ra trình duyệtTương tự, và file được phục vụ từ bản build khi bộ xuất có thể đóng gói nó.
Bản build Native hoặc BevyFile phải đã đi cùng bản build. Không có mạng.

Bộ xuất đọc chương trình của bạn, tìm mọi họ font bạn đã đặt tên bằng chữ thường tường minh, tải nó về và ghi vào assets/fonts/<Family>.woff2. Bản build đó sau đó hoạt động được ngoại tuyến.

Cảnh báo: một họ font được tính toán lúc chạy không thể được tìm thấy bằng cách đọc chương trình, nên nó không thể được đóng gói. Báo cáo xuất sẽ nói vậy, và bản build sẽ dùng lại font mặc định. Hãy viết LoadGoogleFont("Inter"), chứ không phải LoadGoogleFont(names[i]), cho bất cứ thứ gì cần sống sót qua một lần xuất.

Các lệnh#

LệnhNó làm gì
LoadGoogleFont(family)Tải họ font, trả về một id
LoadGoogleFont(fontID, family)Tương tự, với một id bạn tự chọn
GoogleFontReady(fontID)Bằng 1 khi file đã dùng được
GoogleFontCount()Danh sách có bao nhiêu họ font
GoogleFontName(index)Một tên họ font từ danh sách

Mọi thứ khác vẫn là bộ máy font hiện có: PrintFont(id) cho Print, TextFontSet(text, id) cho một Text object, DeleteFont(id) để bỏ nó đi.

Đi xa hơn#