steimo
steimo

Reputation: 170

How to draw a text with unicode character on the main window using Gosu Ruby?

I'm trying to output text to the main window with unicode character like that

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       

but the window displays only the 'Сhess' string without unicode symbol '♘' as supposed.

What I have tried so far:

I looked for similar problems on the Gosu forum, but I could not find anything.

Upvotes: 1

Views: 574

Answers (1)

cyberarm
cyberarm

Reputation: 81

You need to use a font that includes those Unicode characters or Gosu's internal font rendering code will return a 0 width image for drawing that character.

A font like: 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

Upvotes: 2

Related Questions