Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #===============================================================================
  2. # Gab Embed Fonts
  3. #-----------------------------------------------------------------------------
  4. # Autor: Gab!
  5. # Data: 24/01/14
  6. #-----------------------------------------------------------------------------
  7. # Permite que as fontes sejam carregadas sem a necessidade de instalação e que
  8. # possam ser encriptadas juntamente com o jogo, além de não ser necessário
  9. # enviá-las com o jogo.
  10. #===============================================================================
  11.  
  12. module Gab
  13.   module EmbedFonts
  14.    
  15. #===============================================================================
  16. # * CONFIGURAÇÃO                                                              
  17. #===============================================================================
  18.  
  19.     # Diretório das fontes
  20.     Directory = "Font"
  21.  
  22. #===============================================================================
  23. # * FIM DA CONFIGURAÇÃO                                                        
  24. #===============================================================================
  25.    
  26.     module_function
  27.    
  28.     #-------------------------------------------------------------------------
  29.     # * Salva informações dos arquivos da pasta escolhida
  30.     #-------------------------------------------------------------------------
  31.     def dumpFontData
  32.       fontData = []
  33.      
  34.       Dir.glob(File.join(Directory, '/*.{ttf,otf}')).each{|filename|
  35.         File.open(filename, 'rb'){|orig|
  36.           fontData << orig.read
  37.         }
  38.       }
  39.      
  40.       save_data(fontData, 'Data/Fonts.rvdata2')
  41.     end
  42.    
  43.     #-------------------------------------------------------------------------
  44.     # * Carrega e adiciona fontes
  45.     #-------------------------------------------------------------------------
  46.     def loadFontData
  47.       fontData = load_data('Data/Fonts.rvdata2')
  48.      
  49.       fontData.each{|rawFont|
  50.         Font.addMemoryFont(rawFont.force_encoding('ASCII-8BIT'))
  51.       }
  52.     end
  53.   end
  54. end
  55.  
  56. #===============================================================================
  57. # ** Font
  58. #-------------------------------------------------------------------------------
  59. # Classe fonte. Fonte é uma propriedade da classe Bitmap.
  60. #===============================================================================
  61. class << Font
  62.   AddFontMemResourceEx = Win32API.new('GDI32', 'AddFontMemResourceEx', 'PLPP', 'L')
  63.  
  64.   #---------------------------------------------------------------------------
  65.   # * Adiciona uma fonte a partir da memória
  66.   #     data : Cópia da fonte na memória
  67.   #---------------------------------------------------------------------------
  68.   def addMemoryFont(data)
  69.     null = 0.chr * 4
  70.     AddFontMemResourceEx.call(data, data.size, null, null)
  71.   end
  72. end
  73.  
  74. # Realiza os processos
  75. Gab::EmbedFonts.dumpFontData if $TEST
  76. Gab::EmbedFonts.loadFontData