mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							838 B
						
					
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							838 B
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| module Submitters
 | |
|   module GenerateFontImage
 | |
|     WIDTH = 3000
 | |
|     HEIGHT = 160
 | |
| 
 | |
|     FONTS = {
 | |
|       'Dancing Script Regular' => '/fonts/DancingScript-Regular.otf',
 | |
|       'Go Noto Kurrent-Bold Bold' => '/fonts/GoNotoKurrent-Bold.ttf'
 | |
|     }.freeze
 | |
| 
 | |
|     FONT_ALIASES = {
 | |
|       'initials' => 'Go Noto Kurrent-Bold Bold',
 | |
|       'signature' => 'Dancing Script Regular'
 | |
|     }.freeze
 | |
| 
 | |
|     module_function
 | |
| 
 | |
|     def call(text, font: nil)
 | |
|       font = FONT_ALIASES[font] || font
 | |
| 
 | |
|       text_image = Vips::Image.text(text, font:, fontfile: FONTS[font],
 | |
|                                           width: WIDTH, height: HEIGHT, wrap: :none)
 | |
| 
 | |
|       text_mask = Vips::Image.black(text_image.width, text_image.height)
 | |
| 
 | |
|       text_mask.bandjoin(text_image).copy(interpretation: :b_w).write_to_buffer('.png')
 | |
|     end
 | |
|   end
 | |
| end
 |