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
|