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 |
|---|---|
| Editor | Họ font được lấy từ Google ngay lần đầu tiên nó được đặt tên. |
| Xuất ra trình duyệt | Tươ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 Bevy | File 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ảiLoadGoogleFont(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ệnh | Nó 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#
- Cả họ lệnh, với mọi tham số: các lệnh Font.
- Bản thân dialect: ngôn ngữ BASIC.