#=============================================================================== # Gab Embed Fonts #----------------------------------------------------------------------------- # Autor: Gab! # Data: 24/01/14 #----------------------------------------------------------------------------- # Permite que as fontes sejam carregadas sem a necessidade de instalação e que # possam ser encriptadas juntamente com o jogo, além de não ser necessário # enviá-las com o jogo. #=============================================================================== module Gab module EmbedFonts #=============================================================================== # * CONFIGURAÇÃO #=============================================================================== # Diretório das fontes Directory = "Font" #=============================================================================== # * FIM DA CONFIGURAÇÃO #=============================================================================== module_function #------------------------------------------------------------------------- # * Salva informações dos arquivos da pasta escolhida #------------------------------------------------------------------------- def dumpFontData fontData = [] Dir.glob(File.join(Directory, '/*.{ttf,otf}')).each{|filename| File.open(filename, 'rb'){|orig| fontData << orig.read } } save_data(fontData, 'Data/Fonts.rvdata2') end #------------------------------------------------------------------------- # * Carrega e adiciona fontes #------------------------------------------------------------------------- def loadFontData fontData = load_data('Data/Fonts.rvdata2') fontData.each{|rawFont| Font.addMemoryFont(rawFont.force_encoding('ASCII-8BIT')) } end end end #=============================================================================== # ** Font #------------------------------------------------------------------------------- # Classe fonte. Fonte é uma propriedade da classe Bitmap. #=============================================================================== class << Font AddFontMemResourceEx = Win32API.new('GDI32', 'AddFontMemResourceEx', 'PLPP', 'L') #--------------------------------------------------------------------------- # * Adiciona uma fonte a partir da memória # data : Cópia da fonte na memória #--------------------------------------------------------------------------- def addMemoryFont(data) null = 0.chr * 4 AddFontMemResourceEx.call(data, data.size, null, null) end end # Realiza os processos Gab::EmbedFonts.dumpFontData if $TEST Gab::EmbedFonts.loadFontData