我正在嘗試使用像這樣的 unicode 字符將文本輸出到主視窗
def initialize
super 800, 800
self.caption = 'Chess'
@font = Gosu::Font.new(self, Gosu.default_font_name, 100)
end
def draw
text = "Chess \u2658".encode('utf-8')
@font.draw(text, 100, 100, 10, 1, 1, Gosu::Color::BLACK)
end
但視窗只顯示沒有 unicode 符號 '?' 的 'Сhess' 字串。
到目前為止我已經嘗試過:
- 更改字體名稱本身,將“Gosu.default_font_name”更改為“Serif”、“Arial”、“Hack” - 結果相同,只有“Chess”字串更改字體但不顯示字形
- 使用符號 '?' 而不是 unicode 代碼
- 使用 .draw_markup、.draw_text、Gosu::Image.from_text。
- 使用不同的 unicode 代碼,例如使用西里爾字母 '\u0416' 它按預期作業。
- 使用不同的編碼引數。
- 使用不同的顏色。
我在 Gosu 論壇上尋找類似的問題,但我找不到任何東西。
uj5u.com熱心網友回復:
您需要使用包含這些 Unicode 字符的字體,否則 Gosu 的內部字體渲染代碼將回傳一個 0 寬度的影像來繪制該字符。
像這樣的字體:https ://fontlibrary.org/en/font/chess
require "gosu"
class Window < Gosu::Window
def initialize(*args)
super
@font = Gosu::Font.new(28, name: "Chess.odf")
end
def draw
@font.draw_text("?\u2658", 10, 10, 10)
end
end
Window.new(100, 100, false).show
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/410181.html
標籤:
