rubyunicodelibgosu

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.


Solution

  • 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