#===============================================================================
# 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