Sha256: 8af7f413a68c40b4d688930ff95ccd46fe103d3e2775d904b69d1b8b5fa1fa7c

Contents?: true

Size: 846 Bytes

Versions: 2

Compression:

Stored size: 846 Bytes

Contents

# frozen_string_literal: true

require 'forwardable'

module Prawn
  module Emoji
    class Substitution
      extend Forwardable

      FULL_SIZE_SPACE = ' '
      HALF_SIZE_SPACE = Prawn::Text::NBSP

      def_delegator :@document, :width_of

      def initialize(document)
        @document = document
        @font = document.font
        @font_size = document.font_size
      end

      def to_s
        emoji_width == full_size_space_width ? FULL_SIZE_SPACE : half_size_spaces
      end

      private

      def emoji_width
        @emoji_width ||= @font_size + @document.character_spacing
      end

      def full_size_space_width
        width_of @font.normalize_encoding(FULL_SIZE_SPACE)
      end

      def half_size_spaces
        HALF_SIZE_SPACE * (emoji_width.to_f / width_of(HALF_SIZE_SPACE)).round
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
prawn-emoji-3.3.0 lib/prawn/emoji/substitution.rb
prawn-emoji-3.2.0 lib/prawn/emoji/substitution.rb