From 9b7e3b4774d47c184aa759364d41f40e0cdfa210 Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 2 Jun 2020 13:57:21 +0200 Subject: Fix mastodon:setup not running properly when some environment variables are set (#13928) When using one of the docker-compose containers, mastodon:setup will use the existing .env.production rather than the generated one during the setup steps. This is because dotenv does not overwrite env variables that are alreayd defined, and the docker-compose.yml file loads the environment variables from .env.production. --- lib/tasks/mastodon.rake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index a873335d4..a41080a63 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -367,7 +367,7 @@ namespace :mastodon do prompt.say 'Running `RAILS_ENV=production rails db:setup` ...' prompt.say "\n\n" - if cmd.run!({ RAILS_ENV: 'production', SAFETY_ASSURED: 1 }, :rails, 'db:setup').failure? + if cmd.run!(env.merge({ RAILS_ENV: 'production', SAFETY_ASSURED: 1 }), :rails, 'db:setup').failure? prompt.error 'That failed! Perhaps your configuration is not right' else prompt.ok 'Done!' @@ -382,7 +382,7 @@ namespace :mastodon do prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...' prompt.say "\n\n" - if cmd.run!({ RAILS_ENV: 'production' }, :rails, 'assets:precompile').failure? + if cmd.run!(env.merge({ RAILS_ENV: 'production' }), :rails, 'assets:precompile').failure? prompt.error 'That failed! Maybe you need swap space?' else prompt.say 'Done!' -- cgit From 175fd5b8ba7a05bf5298a88a9a9f67aef4be0036 Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 3 Jun 2020 20:18:52 +0200 Subject: Fix mastodon:setup choking on env variables containing '%' (#13940) Fix a regression introduced in #13928, caused by TTY::Command building shell commands by chaining string substitutions. Ditch TTY::Command and use system instead (both do shell out). --- Gemfile | 1 - Gemfile.lock | 3 --- lib/tasks/mastodon.rake | 7 ++----- 3 files changed, 2 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/Gemfile b/Gemfile index 00033545f..0be4b5866 100644 --- a/Gemfile +++ b/Gemfile @@ -94,7 +94,6 @@ gem 'simple_form', '~> 5.0' gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' gem 'stoplight', '~> 2.2.0' gem 'strong_migrations', '~> 0.6' -gem 'tty-command', '~> 0.9', require: false gem 'tty-prompt', '~> 0.21', require: false gem 'twitter-text', '~> 1.14' gem 'tzinfo-data', '~> 1.2020' diff --git a/Gemfile.lock b/Gemfile.lock index fe44c85ff..fef4d342b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -623,8 +623,6 @@ GEM thwait (0.1.0) tilt (2.0.10) tty-color (0.5.1) - tty-command (0.9.0) - pastel (~> 0.7.0) tty-cursor (0.7.1) tty-prompt (0.21.0) necromancer (~> 0.5.0) @@ -792,7 +790,6 @@ DEPENDENCIES strong_migrations (~> 0.6) thor (~> 0.20) thwait (~> 0.1.0) - tty-command (~> 0.9) tty-prompt (~> 0.21) twitter-text (~> 1.14) tzinfo-data (~> 1.2020) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index a41080a63..9e80989ef 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -1,6 +1,5 @@ # frozen_string_literal: true -require 'tty-command' require 'tty-prompt' namespace :mastodon do @@ -334,8 +333,6 @@ namespace :mastodon do prompt.say 'This configuration will be written to .env.production' if prompt.yes?('Save configuration?') - cmd = TTY::Command.new(printer: :quiet) - env_contents = env.each_pair.map do |key, value| if value.is_a?(String) && value =~ /[\s\#\\"]/ if value =~ /[']/ @@ -367,7 +364,7 @@ namespace :mastodon do prompt.say 'Running `RAILS_ENV=production rails db:setup` ...' prompt.say "\n\n" - if cmd.run!(env.merge({ RAILS_ENV: 'production', SAFETY_ASSURED: 1 }), :rails, 'db:setup').failure? + if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production', 'SAFETY_ASSURED' => '1' }), 'rails db:setup') prompt.error 'That failed! Perhaps your configuration is not right' else prompt.ok 'Done!' @@ -382,7 +379,7 @@ namespace :mastodon do prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...' prompt.say "\n\n" - if cmd.run!(env.merge({ RAILS_ENV: 'production' }), :rails, 'assets:precompile').failure? + if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production' }), 'rails assets:precompile') prompt.error 'That failed! Maybe you need swap space?' else prompt.say 'Done!' -- cgit From 346d9b3d2eb2021b89333f1c54e8876d9a16ee24 Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 5 Jun 2020 23:10:41 +0200 Subject: Add blurhash to preview cards (#13984) Fixes #13001 --- app/models/preview_card.rb | 9 ++++++++- app/serializers/rest/preview_card_serializer.rb | 2 +- db/migrate/20200605155027_add_blurhash_to_preview_cards.rb | 5 +++++ db/schema.rb | 4 ++-- lib/paperclip/blurhash_transcoder.rb | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20200605155027_add_blurhash_to_preview_cards.rb (limited to 'lib') diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index 2802f4667..235928260 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -23,19 +23,25 @@ # updated_at :datetime not null # embed_url :string default(""), not null # image_storage_schema_version :integer +# blurhash :string # class PreviewCard < ApplicationRecord IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze LIMIT = 1.megabytes + BLURHASH_OPTIONS = { + x_comp: 4, + y_comp: 4, + }.freeze + self.inheritance_column = false enum type: [:link, :photo, :video, :rich] has_and_belongs_to_many :statuses - has_attached_file :image, styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' } + has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' } include Attachmentable @@ -72,6 +78,7 @@ class PreviewCard < ApplicationRecord geometry: '400x400>', file_geometry_parser: FastGeometryParser, convert_options: '-coalesce -strip', + blurhash: BLURHASH_OPTIONS, }, } diff --git a/app/serializers/rest/preview_card_serializer.rb b/app/serializers/rest/preview_card_serializer.rb index 2df9d07a7..66ff47d22 100644 --- a/app/serializers/rest/preview_card_serializer.rb +++ b/app/serializers/rest/preview_card_serializer.rb @@ -6,7 +6,7 @@ class REST::PreviewCardSerializer < ActiveModel::Serializer attributes :url, :title, :description, :type, :author_name, :author_url, :provider_name, :provider_url, :html, :width, :height, - :image, :embed_url + :image, :embed_url, :blurhash def image object.image? ? full_asset_url(object.image.url(:original)) : nil diff --git a/db/migrate/20200605155027_add_blurhash_to_preview_cards.rb b/db/migrate/20200605155027_add_blurhash_to_preview_cards.rb new file mode 100644 index 000000000..dc4b7a984 --- /dev/null +++ b/db/migrate/20200605155027_add_blurhash_to_preview_cards.rb @@ -0,0 +1,5 @@ +class AddBlurhashToPreviewCards < ActiveRecord::Migration[5.2] + def change + add_column :preview_cards, :blurhash, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index e220e13fe..beda93c01 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,8 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_06_01_222558) do - +ActiveRecord::Schema.define(version: 2020_06_05_155027) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -648,6 +647,7 @@ ActiveRecord::Schema.define(version: 2020_06_01_222558) do t.datetime "updated_at", null: false t.string "embed_url", default: "", null: false t.integer "image_storage_schema_version" + t.string "blurhash" t.index ["url"], name: "index_preview_cards_on_url", unique: true end diff --git a/lib/paperclip/blurhash_transcoder.rb b/lib/paperclip/blurhash_transcoder.rb index 5c33c98b0..1c3a6df02 100644 --- a/lib/paperclip/blurhash_transcoder.rb +++ b/lib/paperclip/blurhash_transcoder.rb @@ -3,7 +3,7 @@ module Paperclip class BlurhashTranscoder < Paperclip::Processor def make - return @file unless options[:style] == :small + return @file unless options[:style] == :small || options[:blurhash] pixels = convert(':source RGB:-', source: File.expand_path(@file.path)).unpack('C*') geometry = options.fetch(:file_geometry_parser).from_file(@file) -- cgit From e0f55f374caa90ab946bd48bdf8770d51930047b Mon Sep 17 00:00:00 2001 From: leo60228 Date: Mon, 8 Jun 2020 18:12:20 -0400 Subject: Add emojis:generate_borders Rake task (#13773) * Add emojis:generate_borders Rake task * Address review * Border all dark emoji * Combine stroke with filter to reduce artifacting * Cleanup Camera with Flash * Add stroke-linejoin="round" The previous filter and tweaks were effectively a poor imitation of it. There are no artifacts for any dark emoji now! * Set stroke-width using property This fixes old versions of Firefox. * Store emoji in string instead of array * Use separate arguments for each path segment * Remove "background: black;" --- lib/tasks/emojis.rake | 44 ++++++++++++++++++++++ public/emoji/1f327_border.svg | 9 +++++ public/emoji/1f328_border.svg | 9 +++++ public/emoji/1f329_border.svg | 9 +++++ public/emoji/1f359_border.svg | 11 ++++++ public/emoji/1f35a_border.svg | 13 +++++++ public/emoji/1f365_border.svg | 9 +++++ public/emoji/1f373_border.svg | 13 +++++++ public/emoji/1f393_border.svg | 19 ++++++++++ public/emoji/1f3a4_border.svg | 11 ++++++ public/emoji/1f3a5_border.svg | 21 +++++++++++ public/emoji/1f3a9_border.svg | 11 ++++++ public/emoji/1f3ae_border.svg | 35 +++++++++++++++++ public/emoji/1f3b1_border.svg | 11 ++++++ public/emoji/1f3b3_border.svg | 21 +++++++++++ public/emoji/1f3bc_border.svg | 9 +++++ public/emoji/1f3d0_border.svg | 9 +++++ public/emoji/1f3f3_border.svg | 15 ++++++++ public/emoji/1f3f4_border.svg | 15 ++++++++ public/emoji/1f403_border.svg | 11 ++++++ public/emoji/1f40f_border.svg | 23 +++++++++++ public/emoji/1f410_border.svg | 15 ++++++++ public/emoji/1f411_border.svg | 13 +++++++ public/emoji/1f413_border.svg | 13 +++++++ public/emoji/1f414_border.svg | 19 ++++++++++ public/emoji/1f41c_border.svg | 11 ++++++ public/emoji/1f440_border.svg | 25 ++++++++++++ public/emoji/1f464_border.svg | 7 ++++ public/emoji/1f465_border.svg | 9 +++++ public/emoji/1f47b_border.svg | 15 ++++++++ public/emoji/1f47d_border.svg | 9 +++++ public/emoji/1f480_border.svg | 13 +++++++ public/emoji/1f482-1f3fb-200d-2640-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fb-200d-2642-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fb_border.svg | 31 +++++++++++++++ public/emoji/1f482-1f3fc-200d-2640-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fc-200d-2642-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fc_border.svg | 31 +++++++++++++++ public/emoji/1f482-1f3fd-200d-2640-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fd-200d-2642-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fd_border.svg | 31 +++++++++++++++ public/emoji/1f482-1f3fe-200d-2640-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fe-200d-2642-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3fe_border.svg | 31 +++++++++++++++ public/emoji/1f482-1f3ff-200d-2640-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3ff-200d-2642-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-1f3ff_border.svg | 31 +++++++++++++++ public/emoji/1f482-200d-2640-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482-200d-2642-fe0f_border.svg | 27 +++++++++++++ public/emoji/1f482_border.svg | 31 +++++++++++++++ public/emoji/1f4a3_border.svg | 15 ++++++++ public/emoji/1f4a8_border.svg | 7 ++++ public/emoji/1f4ac_border.svg | 13 +++++++ public/emoji/1f4ad_border.svg | 9 +++++ public/emoji/1f4b1_border.svg | 9 +++++ public/emoji/1f4b2_border.svg | 7 ++++ public/emoji/1f4c3_border.svg | 11 ++++++ public/emoji/1f4de_border.svg | 7 ++++ public/emoji/1f4f7_border.svg | 19 ++++++++++ public/emoji/1f4f8_border.svg | 19 ++++++++++ public/emoji/1f4f9_border.svg | 9 +++++ public/emoji/1f4fc_border.svg | 23 +++++++++++ public/emoji/1f4fd_border.svg | 13 +++++++ public/emoji/1f507_border.svg | 11 ++++++ public/emoji/1f508_border.svg | 9 +++++ public/emoji/1f509_border.svg | 11 ++++++ public/emoji/1f50a_border.svg | 15 ++++++++ public/emoji/1f50c_border.svg | 9 +++++ public/emoji/1f519_border.svg | 7 ++++ public/emoji/1f51a_border.svg | 7 ++++ public/emoji/1f51b_border.svg | 7 ++++ public/emoji/1f51c_border.svg | 7 ++++ public/emoji/1f51d_border.svg | 7 ++++ public/emoji/1f52a_border.svg | 15 ++++++++ public/emoji/1f54a_border.svg | 15 ++++++++ public/emoji/1f54b_border.svg | 19 ++++++++++ public/emoji/1f573_border.svg | 11 ++++++ public/emoji/1f576_border.svg | 7 ++++ public/emoji/1f577_border.svg | 25 ++++++++++++ public/emoji/1f579_border.svg | 19 ++++++++++ public/emoji/1f58a_border.svg | 17 +++++++++ public/emoji/1f58b_border.svg | 13 +++++++ public/emoji/1f5a4_border.svg | 7 ++++ public/emoji/1f5e3_border.svg | 9 +++++ public/emoji/1f983_border.svg | 19 ++++++++++ public/emoji/1f98d_border.svg | 23 +++++++++++ public/emoji/2122_border.svg | 7 ++++ public/emoji/25aa_border.svg | 7 ++++ public/emoji/25ab_border.svg | 7 ++++ public/emoji/25fb_border.svg | 7 ++++ public/emoji/25fc_border.svg | 7 ++++ public/emoji/25fd_border.svg | 7 ++++ public/emoji/25fe_border.svg | 7 ++++ public/emoji/2601_border.svg | 9 +++++ public/emoji/2620_border.svg | 13 +++++++ public/emoji/2660_border.svg | 7 ++++ public/emoji/2663_border.svg | 7 ++++ public/emoji/26aa_border.svg | 7 ++++ public/emoji/26ab_border.svg | 7 ++++ public/emoji/26be_border.svg | 11 ++++++ public/emoji/26f8_border.svg | 15 ++++++++ public/emoji/2712_border.svg | 13 +++++++ public/emoji/2714_border.svg | 7 ++++ public/emoji/2716_border.svg | 7 ++++ public/emoji/2734_border.svg | 7 ++++ public/emoji/2754_border.svg | 9 +++++ public/emoji/2755_border.svg | 9 +++++ public/emoji/2795_border.svg | 7 ++++ public/emoji/2796_border.svg | 7 ++++ public/emoji/2797_border.svg | 11 ++++++ public/emoji/27b0_border.svg | 7 ++++ public/emoji/2b1b_border.svg | 7 ++++ public/emoji/2b1c_border.svg | 7 ++++ public/emoji/3030_border.svg | 7 ++++ 114 files changed, 1667 insertions(+) create mode 100644 public/emoji/1f327_border.svg create mode 100644 public/emoji/1f328_border.svg create mode 100644 public/emoji/1f329_border.svg create mode 100644 public/emoji/1f359_border.svg create mode 100644 public/emoji/1f35a_border.svg create mode 100644 public/emoji/1f365_border.svg create mode 100644 public/emoji/1f373_border.svg create mode 100644 public/emoji/1f393_border.svg create mode 100644 public/emoji/1f3a4_border.svg create mode 100644 public/emoji/1f3a5_border.svg create mode 100644 public/emoji/1f3a9_border.svg create mode 100644 public/emoji/1f3ae_border.svg create mode 100644 public/emoji/1f3b1_border.svg create mode 100644 public/emoji/1f3b3_border.svg create mode 100644 public/emoji/1f3bc_border.svg create mode 100644 public/emoji/1f3d0_border.svg create mode 100644 public/emoji/1f3f3_border.svg create mode 100644 public/emoji/1f3f4_border.svg create mode 100644 public/emoji/1f403_border.svg create mode 100644 public/emoji/1f40f_border.svg create mode 100644 public/emoji/1f410_border.svg create mode 100644 public/emoji/1f411_border.svg create mode 100644 public/emoji/1f413_border.svg create mode 100644 public/emoji/1f414_border.svg create mode 100644 public/emoji/1f41c_border.svg create mode 100644 public/emoji/1f440_border.svg create mode 100644 public/emoji/1f464_border.svg create mode 100644 public/emoji/1f465_border.svg create mode 100644 public/emoji/1f47b_border.svg create mode 100644 public/emoji/1f47d_border.svg create mode 100644 public/emoji/1f480_border.svg create mode 100644 public/emoji/1f482-1f3fb-200d-2640-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fb-200d-2642-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fb_border.svg create mode 100644 public/emoji/1f482-1f3fc-200d-2640-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fc-200d-2642-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fc_border.svg create mode 100644 public/emoji/1f482-1f3fd-200d-2640-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fd-200d-2642-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fd_border.svg create mode 100644 public/emoji/1f482-1f3fe-200d-2640-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fe-200d-2642-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3fe_border.svg create mode 100644 public/emoji/1f482-1f3ff-200d-2640-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3ff-200d-2642-fe0f_border.svg create mode 100644 public/emoji/1f482-1f3ff_border.svg create mode 100644 public/emoji/1f482-200d-2640-fe0f_border.svg create mode 100644 public/emoji/1f482-200d-2642-fe0f_border.svg create mode 100644 public/emoji/1f482_border.svg create mode 100644 public/emoji/1f4a3_border.svg create mode 100644 public/emoji/1f4a8_border.svg create mode 100644 public/emoji/1f4ac_border.svg create mode 100644 public/emoji/1f4ad_border.svg create mode 100644 public/emoji/1f4b1_border.svg create mode 100644 public/emoji/1f4b2_border.svg create mode 100644 public/emoji/1f4c3_border.svg create mode 100644 public/emoji/1f4de_border.svg create mode 100644 public/emoji/1f4f7_border.svg create mode 100644 public/emoji/1f4f8_border.svg create mode 100644 public/emoji/1f4f9_border.svg create mode 100644 public/emoji/1f4fc_border.svg create mode 100644 public/emoji/1f4fd_border.svg create mode 100644 public/emoji/1f507_border.svg create mode 100644 public/emoji/1f508_border.svg create mode 100644 public/emoji/1f509_border.svg create mode 100644 public/emoji/1f50a_border.svg create mode 100644 public/emoji/1f50c_border.svg create mode 100644 public/emoji/1f519_border.svg create mode 100644 public/emoji/1f51a_border.svg create mode 100644 public/emoji/1f51b_border.svg create mode 100644 public/emoji/1f51c_border.svg create mode 100644 public/emoji/1f51d_border.svg create mode 100644 public/emoji/1f52a_border.svg create mode 100644 public/emoji/1f54a_border.svg create mode 100644 public/emoji/1f54b_border.svg create mode 100644 public/emoji/1f573_border.svg create mode 100644 public/emoji/1f576_border.svg create mode 100644 public/emoji/1f577_border.svg create mode 100644 public/emoji/1f579_border.svg create mode 100644 public/emoji/1f58a_border.svg create mode 100644 public/emoji/1f58b_border.svg create mode 100644 public/emoji/1f5a4_border.svg create mode 100644 public/emoji/1f5e3_border.svg create mode 100644 public/emoji/1f983_border.svg create mode 100644 public/emoji/1f98d_border.svg create mode 100644 public/emoji/2122_border.svg create mode 100644 public/emoji/25aa_border.svg create mode 100644 public/emoji/25ab_border.svg create mode 100644 public/emoji/25fb_border.svg create mode 100644 public/emoji/25fc_border.svg create mode 100644 public/emoji/25fd_border.svg create mode 100644 public/emoji/25fe_border.svg create mode 100644 public/emoji/2601_border.svg create mode 100644 public/emoji/2620_border.svg create mode 100644 public/emoji/2660_border.svg create mode 100644 public/emoji/2663_border.svg create mode 100644 public/emoji/26aa_border.svg create mode 100644 public/emoji/26ab_border.svg create mode 100644 public/emoji/26be_border.svg create mode 100644 public/emoji/26f8_border.svg create mode 100644 public/emoji/2712_border.svg create mode 100644 public/emoji/2714_border.svg create mode 100644 public/emoji/2716_border.svg create mode 100644 public/emoji/2734_border.svg create mode 100644 public/emoji/2754_border.svg create mode 100644 public/emoji/2755_border.svg create mode 100644 public/emoji/2795_border.svg create mode 100644 public/emoji/2796_border.svg create mode 100644 public/emoji/2797_border.svg create mode 100644 public/emoji/27b0_border.svg create mode 100644 public/emoji/2b1b_border.svg create mode 100644 public/emoji/2b1c_border.svg create mode 100644 public/emoji/3030_border.svg (limited to 'lib') diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index 70919fbdb..0e7921ffc 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -1,5 +1,35 @@ # frozen_string_literal: true +def gen_border(codepoint) + input = Rails.root.join('public', 'emoji', "#{codepoint}.svg") + dest = Rails.root.join('public', 'emoji', "#{codepoint}_border.svg") + doc = File.open(input) { |f| Nokogiri::XML(f) } + svg = doc.at_css('svg') + if svg.key?('viewBox') + view_box = svg['viewBox'].split(' ').map(&:to_i) + view_box[0] -= 2 + view_box[1] -= 2 + view_box[2] += 4 + view_box[3] += 4 + svg['viewBox'] = view_box.join(' ') + end + g = Nokogiri::XML::Node.new 'g', doc + doc.css('svg > *').each do |elem| + border_elem = elem.dup + + border_elem.delete('fill') + + border_elem['stroke'] = 'white' + border_elem['stroke-linejoin'] = 'round' + border_elem['stroke-width'] = '4px' + + g.add_child(border_elem) + end + svg.prepend_child(g) + File.write(dest, doc.to_xml) + puts "Wrote bordered #{codepoint}.svg to #{dest}!" +end + def codepoints_to_filename(codepoints) codepoints.downcase.gsub(/\A[0]+/, '').tr(' ', '-') end @@ -23,8 +53,10 @@ namespace :emojis do HTTP.get(source).to_s.split("\n").each do |line| next if line.start_with? '#' + parts = line.split(';').map(&:strip) next if parts.size < 2 + codes << [parts[0], parts[1].start_with?('fully-qualified')] end @@ -55,4 +87,16 @@ namespace :emojis do File.write(dest, Oj.dump(map)) puts "Wrote emojo to destination! (#{dest})" end + + desc 'Generate emoji variants with white borders' + task :generate_borders do + src = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json') + emojis = '🎱🐜âšĢ🖤âŦ›â—ŧī¸â—žâ—ŧī¸âœ’ī¸â–Ēī¸đŸ’ŖđŸŽŗ📷📸â™Ŗī¸đŸ•ļī¸âœ´ī¸đŸ”ŒđŸ’‚‍♀ī¸đŸ“Ŋī¸đŸŗđŸĻđŸ’‚đŸ”ĒđŸ•ŗī¸đŸ•šī¸đŸ•‹đŸ–Šī¸đŸ–‹ī¸đŸ’‚‍♂ī¸đŸŽ¤đŸŽ“đŸŽĨđŸŽŧ♠ī¸đŸŽŠđŸĻƒđŸ“ŧ📹🎮🐃🏴đŸ‘Ŋ⚾🐔☁ī¸đŸ’¨đŸ•Šī¸đŸ‘€đŸĨđŸ‘ģ🐐❕❔⛸ī¸đŸŒŠī¸đŸ”ŠđŸ”‡đŸ“ƒđŸŒ§ī¸đŸđŸšđŸ™đŸ“đŸ‘đŸ’€â˜ ī¸đŸŒ¨ī¸đŸ”‰đŸ”ˆđŸ’Ŧ💭🏐đŸŗī¸âšĒâŦœâ—Ŋâ—ģī¸â–Ģī¸' + + map = Oj.load(File.read(src)) + + emojis.each_grapheme_cluster do |emoji| + gen_border map[emoji] + end + end end diff --git a/public/emoji/1f327_border.svg b/public/emoji/1f327_border.svg new file mode 100644 index 000000000..3298c8f87 --- /dev/null +++ b/public/emoji/1f327_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f328_border.svg b/public/emoji/1f328_border.svg new file mode 100644 index 000000000..254dc90de --- /dev/null +++ b/public/emoji/1f328_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f329_border.svg b/public/emoji/1f329_border.svg new file mode 100644 index 000000000..05c662ac4 --- /dev/null +++ b/public/emoji/1f329_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f359_border.svg b/public/emoji/1f359_border.svg new file mode 100644 index 000000000..6541681d8 --- /dev/null +++ b/public/emoji/1f359_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f35a_border.svg b/public/emoji/1f35a_border.svg new file mode 100644 index 000000000..d6621c590 --- /dev/null +++ b/public/emoji/1f35a_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f365_border.svg b/public/emoji/1f365_border.svg new file mode 100644 index 000000000..278cebd43 --- /dev/null +++ b/public/emoji/1f365_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f373_border.svg b/public/emoji/1f373_border.svg new file mode 100644 index 000000000..56b1ef9e6 --- /dev/null +++ b/public/emoji/1f373_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f393_border.svg b/public/emoji/1f393_border.svg new file mode 100644 index 000000000..1af6e6fdb --- /dev/null +++ b/public/emoji/1f393_border.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f3a4_border.svg b/public/emoji/1f3a4_border.svg new file mode 100644 index 000000000..78f546247 --- /dev/null +++ b/public/emoji/1f3a4_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f3a5_border.svg b/public/emoji/1f3a5_border.svg new file mode 100644 index 000000000..cb4415635 --- /dev/null +++ b/public/emoji/1f3a5_border.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f3a9_border.svg b/public/emoji/1f3a9_border.svg new file mode 100644 index 000000000..87671f0ee --- /dev/null +++ b/public/emoji/1f3a9_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f3ae_border.svg b/public/emoji/1f3ae_border.svg new file mode 100644 index 000000000..4a17797b1 --- /dev/null +++ b/public/emoji/1f3ae_border.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f3b1_border.svg b/public/emoji/1f3b1_border.svg new file mode 100644 index 000000000..59dc9e819 --- /dev/null +++ b/public/emoji/1f3b1_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f3b3_border.svg b/public/emoji/1f3b3_border.svg new file mode 100644 index 000000000..71daa085f --- /dev/null +++ b/public/emoji/1f3b3_border.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f3bc_border.svg b/public/emoji/1f3bc_border.svg new file mode 100644 index 000000000..f7aafddac --- /dev/null +++ b/public/emoji/1f3bc_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f3d0_border.svg b/public/emoji/1f3d0_border.svg new file mode 100644 index 000000000..c1804f2cb --- /dev/null +++ b/public/emoji/1f3d0_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f3f3_border.svg b/public/emoji/1f3f3_border.svg new file mode 100644 index 000000000..e7d03583b --- /dev/null +++ b/public/emoji/1f3f3_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f3f4_border.svg b/public/emoji/1f3f4_border.svg new file mode 100644 index 000000000..7251ad712 --- /dev/null +++ b/public/emoji/1f3f4_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f403_border.svg b/public/emoji/1f403_border.svg new file mode 100644 index 000000000..ed788427a --- /dev/null +++ b/public/emoji/1f403_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f40f_border.svg b/public/emoji/1f40f_border.svg new file mode 100644 index 000000000..fb4bbcfb3 --- /dev/null +++ b/public/emoji/1f40f_border.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f410_border.svg b/public/emoji/1f410_border.svg new file mode 100644 index 000000000..7a36382b5 --- /dev/null +++ b/public/emoji/1f410_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f411_border.svg b/public/emoji/1f411_border.svg new file mode 100644 index 000000000..dc4ddeb08 --- /dev/null +++ b/public/emoji/1f411_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f413_border.svg b/public/emoji/1f413_border.svg new file mode 100644 index 000000000..3391490df --- /dev/null +++ b/public/emoji/1f413_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f414_border.svg b/public/emoji/1f414_border.svg new file mode 100644 index 000000000..ad54bd1b8 --- /dev/null +++ b/public/emoji/1f414_border.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f41c_border.svg b/public/emoji/1f41c_border.svg new file mode 100644 index 000000000..929f7482a --- /dev/null +++ b/public/emoji/1f41c_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f440_border.svg b/public/emoji/1f440_border.svg new file mode 100644 index 000000000..f25c3ca40 --- /dev/null +++ b/public/emoji/1f440_border.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f464_border.svg b/public/emoji/1f464_border.svg new file mode 100644 index 000000000..c7393d6bd --- /dev/null +++ b/public/emoji/1f464_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f465_border.svg b/public/emoji/1f465_border.svg new file mode 100644 index 000000000..cc3732c4e --- /dev/null +++ b/public/emoji/1f465_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f47b_border.svg b/public/emoji/1f47b_border.svg new file mode 100644 index 000000000..80ac01215 --- /dev/null +++ b/public/emoji/1f47b_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f47d_border.svg b/public/emoji/1f47d_border.svg new file mode 100644 index 000000000..e1d4a54d7 --- /dev/null +++ b/public/emoji/1f47d_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f480_border.svg b/public/emoji/1f480_border.svg new file mode 100644 index 000000000..8546f7b00 --- /dev/null +++ b/public/emoji/1f480_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fb-200d-2640-fe0f_border.svg b/public/emoji/1f482-1f3fb-200d-2640-fe0f_border.svg new file mode 100644 index 000000000..7c7ff7949 --- /dev/null +++ b/public/emoji/1f482-1f3fb-200d-2640-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fb-200d-2642-fe0f_border.svg b/public/emoji/1f482-1f3fb-200d-2642-fe0f_border.svg new file mode 100644 index 000000000..e601eae22 --- /dev/null +++ b/public/emoji/1f482-1f3fb-200d-2642-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fb_border.svg b/public/emoji/1f482-1f3fb_border.svg new file mode 100644 index 000000000..98d025086 --- /dev/null +++ b/public/emoji/1f482-1f3fb_border.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fc-200d-2640-fe0f_border.svg b/public/emoji/1f482-1f3fc-200d-2640-fe0f_border.svg new file mode 100644 index 000000000..4542fbc40 --- /dev/null +++ b/public/emoji/1f482-1f3fc-200d-2640-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fc-200d-2642-fe0f_border.svg b/public/emoji/1f482-1f3fc-200d-2642-fe0f_border.svg new file mode 100644 index 000000000..e4cf68375 --- /dev/null +++ b/public/emoji/1f482-1f3fc-200d-2642-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fc_border.svg b/public/emoji/1f482-1f3fc_border.svg new file mode 100644 index 000000000..279f34362 --- /dev/null +++ b/public/emoji/1f482-1f3fc_border.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fd-200d-2640-fe0f_border.svg b/public/emoji/1f482-1f3fd-200d-2640-fe0f_border.svg new file mode 100644 index 000000000..d93566dcc --- /dev/null +++ b/public/emoji/1f482-1f3fd-200d-2640-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fd-200d-2642-fe0f_border.svg b/public/emoji/1f482-1f3fd-200d-2642-fe0f_border.svg new file mode 100644 index 000000000..bd4270dd3 --- /dev/null +++ b/public/emoji/1f482-1f3fd-200d-2642-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fd_border.svg b/public/emoji/1f482-1f3fd_border.svg new file mode 100644 index 000000000..1d40871a6 --- /dev/null +++ b/public/emoji/1f482-1f3fd_border.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fe-200d-2640-fe0f_border.svg b/public/emoji/1f482-1f3fe-200d-2640-fe0f_border.svg new file mode 100644 index 000000000..1f590fa5e --- /dev/null +++ b/public/emoji/1f482-1f3fe-200d-2640-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fe-200d-2642-fe0f_border.svg b/public/emoji/1f482-1f3fe-200d-2642-fe0f_border.svg new file mode 100644 index 000000000..b74e4930c --- /dev/null +++ b/public/emoji/1f482-1f3fe-200d-2642-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3fe_border.svg b/public/emoji/1f482-1f3fe_border.svg new file mode 100644 index 000000000..0024c77f8 --- /dev/null +++ b/public/emoji/1f482-1f3fe_border.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3ff-200d-2640-fe0f_border.svg b/public/emoji/1f482-1f3ff-200d-2640-fe0f_border.svg new file mode 100644 index 000000000..e426d8efa --- /dev/null +++ b/public/emoji/1f482-1f3ff-200d-2640-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3ff-200d-2642-fe0f_border.svg b/public/emoji/1f482-1f3ff-200d-2642-fe0f_border.svg new file mode 100644 index 000000000..3c4515c0f --- /dev/null +++ b/public/emoji/1f482-1f3ff-200d-2642-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-1f3ff_border.svg b/public/emoji/1f482-1f3ff_border.svg new file mode 100644 index 000000000..0183693a9 --- /dev/null +++ b/public/emoji/1f482-1f3ff_border.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-200d-2640-fe0f_border.svg b/public/emoji/1f482-200d-2640-fe0f_border.svg new file mode 100644 index 000000000..480318a6e --- /dev/null +++ b/public/emoji/1f482-200d-2640-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482-200d-2642-fe0f_border.svg b/public/emoji/1f482-200d-2642-fe0f_border.svg new file mode 100644 index 000000000..5c68070a7 --- /dev/null +++ b/public/emoji/1f482-200d-2642-fe0f_border.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f482_border.svg b/public/emoji/1f482_border.svg new file mode 100644 index 000000000..f4da528fb --- /dev/null +++ b/public/emoji/1f482_border.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f4a3_border.svg b/public/emoji/1f4a3_border.svg new file mode 100644 index 000000000..aac8f4443 --- /dev/null +++ b/public/emoji/1f4a3_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f4a8_border.svg b/public/emoji/1f4a8_border.svg new file mode 100644 index 000000000..c20a5cb3b --- /dev/null +++ b/public/emoji/1f4a8_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f4ac_border.svg b/public/emoji/1f4ac_border.svg new file mode 100644 index 000000000..3d71232f9 --- /dev/null +++ b/public/emoji/1f4ac_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f4ad_border.svg b/public/emoji/1f4ad_border.svg new file mode 100644 index 000000000..c887a7126 --- /dev/null +++ b/public/emoji/1f4ad_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f4b1_border.svg b/public/emoji/1f4b1_border.svg new file mode 100644 index 000000000..f5ef5e849 --- /dev/null +++ b/public/emoji/1f4b1_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f4b2_border.svg b/public/emoji/1f4b2_border.svg new file mode 100644 index 000000000..3bfe777e4 --- /dev/null +++ b/public/emoji/1f4b2_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f4c3_border.svg b/public/emoji/1f4c3_border.svg new file mode 100644 index 000000000..9e7b56241 --- /dev/null +++ b/public/emoji/1f4c3_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f4de_border.svg b/public/emoji/1f4de_border.svg new file mode 100644 index 000000000..2a8044d96 --- /dev/null +++ b/public/emoji/1f4de_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f4f7_border.svg b/public/emoji/1f4f7_border.svg new file mode 100644 index 000000000..60421f912 --- /dev/null +++ b/public/emoji/1f4f7_border.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f4f8_border.svg b/public/emoji/1f4f8_border.svg new file mode 100644 index 000000000..6bb518f54 --- /dev/null +++ b/public/emoji/1f4f8_border.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f4f9_border.svg b/public/emoji/1f4f9_border.svg new file mode 100644 index 000000000..8adae2f15 --- /dev/null +++ b/public/emoji/1f4f9_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f4fc_border.svg b/public/emoji/1f4fc_border.svg new file mode 100644 index 000000000..8b6081428 --- /dev/null +++ b/public/emoji/1f4fc_border.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f4fd_border.svg b/public/emoji/1f4fd_border.svg new file mode 100644 index 000000000..3b2050bae --- /dev/null +++ b/public/emoji/1f4fd_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f507_border.svg b/public/emoji/1f507_border.svg new file mode 100644 index 000000000..cd02481bd --- /dev/null +++ b/public/emoji/1f507_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f508_border.svg b/public/emoji/1f508_border.svg new file mode 100644 index 000000000..c920d89dc --- /dev/null +++ b/public/emoji/1f508_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f509_border.svg b/public/emoji/1f509_border.svg new file mode 100644 index 000000000..6881edb30 --- /dev/null +++ b/public/emoji/1f509_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f50a_border.svg b/public/emoji/1f50a_border.svg new file mode 100644 index 000000000..549811b69 --- /dev/null +++ b/public/emoji/1f50a_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f50c_border.svg b/public/emoji/1f50c_border.svg new file mode 100644 index 000000000..6e37ecd63 --- /dev/null +++ b/public/emoji/1f50c_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f519_border.svg b/public/emoji/1f519_border.svg new file mode 100644 index 000000000..801bafb8b --- /dev/null +++ b/public/emoji/1f519_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f51a_border.svg b/public/emoji/1f51a_border.svg new file mode 100644 index 000000000..057cf9820 --- /dev/null +++ b/public/emoji/1f51a_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f51b_border.svg b/public/emoji/1f51b_border.svg new file mode 100644 index 000000000..ccc8ed099 --- /dev/null +++ b/public/emoji/1f51b_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f51c_border.svg b/public/emoji/1f51c_border.svg new file mode 100644 index 000000000..3552cfa65 --- /dev/null +++ b/public/emoji/1f51c_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f51d_border.svg b/public/emoji/1f51d_border.svg new file mode 100644 index 000000000..a81b553f8 --- /dev/null +++ b/public/emoji/1f51d_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f52a_border.svg b/public/emoji/1f52a_border.svg new file mode 100644 index 000000000..0a9bdeab6 --- /dev/null +++ b/public/emoji/1f52a_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f54a_border.svg b/public/emoji/1f54a_border.svg new file mode 100644 index 000000000..895872f3e --- /dev/null +++ b/public/emoji/1f54a_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/1f54b_border.svg b/public/emoji/1f54b_border.svg new file mode 100644 index 000000000..5f6d6f202 --- /dev/null +++ b/public/emoji/1f54b_border.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f573_border.svg b/public/emoji/1f573_border.svg new file mode 100644 index 000000000..7a8cf732e --- /dev/null +++ b/public/emoji/1f573_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/1f576_border.svg b/public/emoji/1f576_border.svg new file mode 100644 index 000000000..4ad1315ef --- /dev/null +++ b/public/emoji/1f576_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f577_border.svg b/public/emoji/1f577_border.svg new file mode 100644 index 000000000..bf3b8c7eb --- /dev/null +++ b/public/emoji/1f577_border.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f579_border.svg b/public/emoji/1f579_border.svg new file mode 100644 index 000000000..f71237315 --- /dev/null +++ b/public/emoji/1f579_border.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f58a_border.svg b/public/emoji/1f58a_border.svg new file mode 100644 index 000000000..42a312534 --- /dev/null +++ b/public/emoji/1f58a_border.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f58b_border.svg b/public/emoji/1f58b_border.svg new file mode 100644 index 000000000..f0a6459ca --- /dev/null +++ b/public/emoji/1f58b_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/1f5a4_border.svg b/public/emoji/1f5a4_border.svg new file mode 100644 index 000000000..63aa792ce --- /dev/null +++ b/public/emoji/1f5a4_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/1f5e3_border.svg b/public/emoji/1f5e3_border.svg new file mode 100644 index 000000000..8920fb239 --- /dev/null +++ b/public/emoji/1f5e3_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/1f983_border.svg b/public/emoji/1f983_border.svg new file mode 100644 index 000000000..ccd557b04 --- /dev/null +++ b/public/emoji/1f983_border.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/1f98d_border.svg b/public/emoji/1f98d_border.svg new file mode 100644 index 000000000..1f022a9ba --- /dev/null +++ b/public/emoji/1f98d_border.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/emoji/2122_border.svg b/public/emoji/2122_border.svg new file mode 100644 index 000000000..f0fbee1b1 --- /dev/null +++ b/public/emoji/2122_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/25aa_border.svg b/public/emoji/25aa_border.svg new file mode 100644 index 000000000..220eb4345 --- /dev/null +++ b/public/emoji/25aa_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/25ab_border.svg b/public/emoji/25ab_border.svg new file mode 100644 index 000000000..b51e1a9cc --- /dev/null +++ b/public/emoji/25ab_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/25fb_border.svg b/public/emoji/25fb_border.svg new file mode 100644 index 000000000..24c48e17a --- /dev/null +++ b/public/emoji/25fb_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/25fc_border.svg b/public/emoji/25fc_border.svg new file mode 100644 index 000000000..345e972ed --- /dev/null +++ b/public/emoji/25fc_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/25fd_border.svg b/public/emoji/25fd_border.svg new file mode 100644 index 000000000..ec7278674 --- /dev/null +++ b/public/emoji/25fd_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/25fe_border.svg b/public/emoji/25fe_border.svg new file mode 100644 index 000000000..775bb6718 --- /dev/null +++ b/public/emoji/25fe_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2601_border.svg b/public/emoji/2601_border.svg new file mode 100644 index 000000000..6ab20d737 --- /dev/null +++ b/public/emoji/2601_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/2620_border.svg b/public/emoji/2620_border.svg new file mode 100644 index 000000000..8878828be --- /dev/null +++ b/public/emoji/2620_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/2660_border.svg b/public/emoji/2660_border.svg new file mode 100644 index 000000000..3ce65b4eb --- /dev/null +++ b/public/emoji/2660_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2663_border.svg b/public/emoji/2663_border.svg new file mode 100644 index 000000000..3fcf5c75e --- /dev/null +++ b/public/emoji/2663_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/26aa_border.svg b/public/emoji/26aa_border.svg new file mode 100644 index 000000000..d2cac5cad --- /dev/null +++ b/public/emoji/26aa_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/26ab_border.svg b/public/emoji/26ab_border.svg new file mode 100644 index 000000000..617df7493 --- /dev/null +++ b/public/emoji/26ab_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/26be_border.svg b/public/emoji/26be_border.svg new file mode 100644 index 000000000..25954deac --- /dev/null +++ b/public/emoji/26be_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/26f8_border.svg b/public/emoji/26f8_border.svg new file mode 100644 index 000000000..0df7ff2ff --- /dev/null +++ b/public/emoji/26f8_border.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/emoji/2712_border.svg b/public/emoji/2712_border.svg new file mode 100644 index 000000000..6e9e1c019 --- /dev/null +++ b/public/emoji/2712_border.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/emoji/2714_border.svg b/public/emoji/2714_border.svg new file mode 100644 index 000000000..a90dd10eb --- /dev/null +++ b/public/emoji/2714_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2716_border.svg b/public/emoji/2716_border.svg new file mode 100644 index 000000000..d5701be65 --- /dev/null +++ b/public/emoji/2716_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2734_border.svg b/public/emoji/2734_border.svg new file mode 100644 index 000000000..c74c6a511 --- /dev/null +++ b/public/emoji/2734_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2754_border.svg b/public/emoji/2754_border.svg new file mode 100644 index 000000000..1d6c4ecda --- /dev/null +++ b/public/emoji/2754_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/2755_border.svg b/public/emoji/2755_border.svg new file mode 100644 index 000000000..65ec57082 --- /dev/null +++ b/public/emoji/2755_border.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/emoji/2795_border.svg b/public/emoji/2795_border.svg new file mode 100644 index 000000000..14c2cf69b --- /dev/null +++ b/public/emoji/2795_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2796_border.svg b/public/emoji/2796_border.svg new file mode 100644 index 000000000..6ee64cae2 --- /dev/null +++ b/public/emoji/2796_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2797_border.svg b/public/emoji/2797_border.svg new file mode 100644 index 000000000..0bbf13ba2 --- /dev/null +++ b/public/emoji/2797_border.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/emoji/27b0_border.svg b/public/emoji/27b0_border.svg new file mode 100644 index 000000000..dec79f5c6 --- /dev/null +++ b/public/emoji/27b0_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2b1b_border.svg b/public/emoji/2b1b_border.svg new file mode 100644 index 000000000..b622c3510 --- /dev/null +++ b/public/emoji/2b1b_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/2b1c_border.svg b/public/emoji/2b1c_border.svg new file mode 100644 index 000000000..c633cc3de --- /dev/null +++ b/public/emoji/2b1c_border.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/emoji/3030_border.svg b/public/emoji/3030_border.svg new file mode 100644 index 000000000..635214d15 --- /dev/null +++ b/public/emoji/3030_border.svg @@ -0,0 +1,7 @@ + + + + + + + -- cgit