diff --git a/phpBB/docs/CREDITS.txt b/phpBB/docs/CREDITS.txt
index 47621b2318..9155fc9a2b 100644
--- a/phpBB/docs/CREDITS.txt
+++ b/phpBB/docs/CREDITS.txt
@@ -106,5 +106,4 @@ MIT licensed:
Symfony2 (c) 2004-2011 Fabien Potencier, https://symfony.com/
Cookie Consent (c) 2015 Silktide Ltd, https://cookieconsent.insites.com
-Emoji by:
-Twemoji (c) 2018 Twitter, Inc, https://twemoji.twitter.com/
+HiDPI smilies by rednoah: https://github.com/rednoah/phpBB-smilies
diff --git a/phpBB/images/smilies/icon_arrow.svg b/phpBB/images/smilies/icon_arrow.svg
new file mode 100644
index 0000000000..4d190756ce
--- /dev/null
+++ b/phpBB/images/smilies/icon_arrow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_cool.svg b/phpBB/images/smilies/icon_cool.svg
new file mode 100644
index 0000000000..500729316d
--- /dev/null
+++ b/phpBB/images/smilies/icon_cool.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_cry.svg b/phpBB/images/smilies/icon_cry.svg
new file mode 100644
index 0000000000..e9312f9d7a
--- /dev/null
+++ b/phpBB/images/smilies/icon_cry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_biggrin.svg b/phpBB/images/smilies/icon_e_biggrin.svg
new file mode 100644
index 0000000000..6e3803be04
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_biggrin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_confused.svg b/phpBB/images/smilies/icon_e_confused.svg
new file mode 100644
index 0000000000..b9561e3204
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_confused.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_geek.svg b/phpBB/images/smilies/icon_e_geek.svg
new file mode 100644
index 0000000000..77af7d61f9
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_geek.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_sad.svg b/phpBB/images/smilies/icon_e_sad.svg
new file mode 100644
index 0000000000..69a323f155
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_sad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_smile.svg b/phpBB/images/smilies/icon_e_smile.svg
new file mode 100644
index 0000000000..c273c77f1f
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_smile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_surprised.svg b/phpBB/images/smilies/icon_e_surprised.svg
new file mode 100644
index 0000000000..ad5ce8bdc5
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_surprised.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_ugeek.svg b/phpBB/images/smilies/icon_e_ugeek.svg
new file mode 100644
index 0000000000..0ae02fcc76
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_ugeek.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_e_wink.svg b/phpBB/images/smilies/icon_e_wink.svg
new file mode 100644
index 0000000000..f07eaf36ac
--- /dev/null
+++ b/phpBB/images/smilies/icon_e_wink.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_eek.svg b/phpBB/images/smilies/icon_eek.svg
new file mode 100644
index 0000000000..d3bbc31ae9
--- /dev/null
+++ b/phpBB/images/smilies/icon_eek.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_evil.svg b/phpBB/images/smilies/icon_evil.svg
new file mode 100644
index 0000000000..2636a078ec
--- /dev/null
+++ b/phpBB/images/smilies/icon_evil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_exclaim.svg b/phpBB/images/smilies/icon_exclaim.svg
new file mode 100644
index 0000000000..6d14ccd2e0
--- /dev/null
+++ b/phpBB/images/smilies/icon_exclaim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_idea.svg b/phpBB/images/smilies/icon_idea.svg
new file mode 100644
index 0000000000..0f5ff849bb
--- /dev/null
+++ b/phpBB/images/smilies/icon_idea.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_lol.svg b/phpBB/images/smilies/icon_lol.svg
new file mode 100644
index 0000000000..93d0fe7643
--- /dev/null
+++ b/phpBB/images/smilies/icon_lol.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_mad.svg b/phpBB/images/smilies/icon_mad.svg
new file mode 100644
index 0000000000..1575f95c14
--- /dev/null
+++ b/phpBB/images/smilies/icon_mad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_mrgreen.svg b/phpBB/images/smilies/icon_mrgreen.svg
new file mode 100644
index 0000000000..a8157d4041
--- /dev/null
+++ b/phpBB/images/smilies/icon_mrgreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_neutral.svg b/phpBB/images/smilies/icon_neutral.svg
new file mode 100644
index 0000000000..2363cce865
--- /dev/null
+++ b/phpBB/images/smilies/icon_neutral.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_question.svg b/phpBB/images/smilies/icon_question.svg
new file mode 100644
index 0000000000..caa067b21c
--- /dev/null
+++ b/phpBB/images/smilies/icon_question.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_razz.svg b/phpBB/images/smilies/icon_razz.svg
new file mode 100644
index 0000000000..a959ffc79d
--- /dev/null
+++ b/phpBB/images/smilies/icon_razz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_redface.svg b/phpBB/images/smilies/icon_redface.svg
new file mode 100644
index 0000000000..0b333e519a
--- /dev/null
+++ b/phpBB/images/smilies/icon_redface.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_rolleyes.svg b/phpBB/images/smilies/icon_rolleyes.svg
new file mode 100644
index 0000000000..4d737dd4bc
--- /dev/null
+++ b/phpBB/images/smilies/icon_rolleyes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/images/smilies/icon_twisted.svg b/phpBB/images/smilies/icon_twisted.svg
new file mode 100644
index 0000000000..264129041a
--- /dev/null
+++ b/phpBB/images/smilies/icon_twisted.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql
index b0e553960f..13af5fa304 100644
--- a/phpBB/install/schemas/schema_data.sql
+++ b/phpBB/install/schemas/schema_data.sql
@@ -712,48 +712,48 @@ INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, icon_id, post_time, post
INSERT INTO phpbb_topics_posted (user_id, topic_id, topic_posted) VALUES (2, 1, 1);
# -- Smilies
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':D', 'icon_e_biggrin.gif', '{L_SMILIES_VERY_HAPPY}', 15, 17, 1);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-D', 'icon_e_biggrin.gif', '{L_SMILIES_VERY_HAPPY}', 15, 17, 2);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':grin:', 'icon_e_biggrin.gif', '{L_SMILIES_VERY_HAPPY}', 15, 17, 3);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':)', 'icon_e_smile.gif', '{L_SMILIES_SMILE}', 15, 17, 4);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-)', 'icon_e_smile.gif', '{L_SMILIES_SMILE}', 15, 17, 5);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':smile:', 'icon_e_smile.gif', '{L_SMILIES_SMILE}', 15, 17, 6);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (';)', 'icon_e_wink.gif', '{L_SMILIES_WINK}', 15, 17, 7);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (';-)', 'icon_e_wink.gif', '{L_SMILIES_WINK}', 15, 17, 8);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':wink:', 'icon_e_wink.gif', '{L_SMILIES_WINK}', 15, 17, 9);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':(', 'icon_e_sad.gif', '{L_SMILIES_SAD}', 15, 17, 10);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-(', 'icon_e_sad.gif', '{L_SMILIES_SAD}', 15, 17, 11);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':sad:', 'icon_e_sad.gif', '{L_SMILIES_SAD}', 15, 17, 12);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':o', 'icon_e_surprised.gif', '{L_SMILIES_SURPRISED}', 15, 17, 13);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-o', 'icon_e_surprised.gif', '{L_SMILIES_SURPRISED}', 15, 17, 14);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':eek:', 'icon_e_surprised.gif', '{L_SMILIES_SURPRISED}', 15, 17, 15);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':shock:', 'icon_eek.gif', '{L_SMILIES_SHOCKED}', 15, 17, 16);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':?', 'icon_e_confused.gif', '{L_SMILIES_CONFUSED}', 15, 17, 17);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-?', 'icon_e_confused.gif', '{L_SMILIES_CONFUSED}', 15, 17, 18);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':???:', 'icon_e_confused.gif', '{L_SMILIES_CONFUSED}', 15, 17, 19);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES ('8-)', 'icon_cool.gif', '{L_SMILIES_COOL}', 15, 17, 20);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':cool:', 'icon_cool.gif', '{L_SMILIES_COOL}', 15, 17, 21);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':lol:', 'icon_lol.gif', '{L_SMILIES_LAUGHING}', 15, 17, 22);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':x', 'icon_mad.gif', '{L_SMILIES_MAD}', 15, 17, 23);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-x', 'icon_mad.gif', '{L_SMILIES_MAD}', 15, 17, 24);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':mad:', 'icon_mad.gif', '{L_SMILIES_MAD}', 15, 17, 25);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':P', 'icon_razz.gif', '{L_SMILIES_RAZZ}', 15, 17, 26);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-P', 'icon_razz.gif', '{L_SMILIES_RAZZ}', 15, 17, 27);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':razz:', 'icon_razz.gif', '{L_SMILIES_RAZZ}', 15, 17, 28);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':oops:', 'icon_redface.gif', '{L_SMILIES_EMARRASSED}', 15, 17, 29);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':cry:', 'icon_cry.gif', '{L_SMILIES_CRYING}', 15, 17, 30);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':evil:', 'icon_evil.gif', '{L_SMILIES_EVIL}', 15, 17, 31);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':twisted:', 'icon_twisted.gif', '{L_SMILIES_TWISTED_EVIL}', 15, 17, 32);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':roll:', 'icon_rolleyes.gif', '{L_SMILIES_ROLLING_EYES}', 15, 17, 33);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':!:', 'icon_exclaim.gif', '{L_SMILIES_EXCLAMATION}', 15, 17, 34);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':?:', 'icon_question.gif', '{L_SMILIES_QUESTION}', 15, 17, 35);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':idea:', 'icon_idea.gif', '{L_SMILIES_IDEA}', 15, 17, 36);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':arrow:', 'icon_arrow.gif', '{L_SMILIES_ARROW}', 15, 17, 37);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':|', 'icon_neutral.gif', '{L_SMILIES_NEUTRAL}', 15, 17, 38);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-|', 'icon_neutral.gif', '{L_SMILIES_NEUTRAL}', 15, 17, 39);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':mrgreen:', 'icon_mrgreen.gif', '{L_SMILIES_MR_GREEN}', 15, 17, 40);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':geek:', 'icon_e_geek.gif', '{L_SMILIES_GEEK}', 17, 17, 41);
-INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':ugeek:', 'icon_e_ugeek.gif', '{L_SMILIES_UBER_GEEK}', 17, 18, 42);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':D', 'icon_e_biggrin.svg', '{L_SMILIES_VERY_HAPPY}', 15, 17, 1);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-D', 'icon_e_biggrin.svg', '{L_SMILIES_VERY_HAPPY}', 15, 17, 2);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':grin:', 'icon_e_biggrin.svg', '{L_SMILIES_VERY_HAPPY}', 15, 17, 3);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':)', 'icon_e_smile.svg', '{L_SMILIES_SMILE}', 15, 17, 4);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-)', 'icon_e_smile.svg', '{L_SMILIES_SMILE}', 15, 17, 5);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':smile:', 'icon_e_smile.svg', '{L_SMILIES_SMILE}', 15, 17, 6);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (';)', 'icon_e_wink.svg', '{L_SMILIES_WINK}', 15, 17, 7);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (';-)', 'icon_e_wink.svg', '{L_SMILIES_WINK}', 15, 17, 8);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':wink:', 'icon_e_wink.svg', '{L_SMILIES_WINK}', 15, 17, 9);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':(', 'icon_e_sad.svg', '{L_SMILIES_SAD}', 15, 17, 10);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-(', 'icon_e_sad.svg', '{L_SMILIES_SAD}', 15, 17, 11);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':sad:', 'icon_e_sad.svg', '{L_SMILIES_SAD}', 15, 17, 12);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':o', 'icon_e_surprised.svg', '{L_SMILIES_SURPRISED}', 15, 17, 13);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-o', 'icon_e_surprised.svg', '{L_SMILIES_SURPRISED}', 15, 17, 14);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':eek:', 'icon_e_surprised.svg', '{L_SMILIES_SURPRISED}', 15, 17, 15);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':shock:', 'icon_eek.svg', '{L_SMILIES_SHOCKED}', 15, 17, 16);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':?', 'icon_e_confused.svg', '{L_SMILIES_CONFUSED}', 15, 17, 17);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-?', 'icon_e_confused.svg', '{L_SMILIES_CONFUSED}', 15, 17, 18);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':???:', 'icon_e_confused.svg', '{L_SMILIES_CONFUSED}', 15, 17, 19);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES ('8-)', 'icon_cool.svg', '{L_SMILIES_COOL}', 15, 17, 20);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':cool:', 'icon_cool.svg', '{L_SMILIES_COOL}', 15, 17, 21);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':lol:', 'icon_lol.svg', '{L_SMILIES_LAUGHING}', 15, 17, 22);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':x', 'icon_mad.svg', '{L_SMILIES_MAD}', 15, 17, 23);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-x', 'icon_mad.svg', '{L_SMILIES_MAD}', 15, 17, 24);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':mad:', 'icon_mad.svg', '{L_SMILIES_MAD}', 15, 17, 25);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':P', 'icon_razz.svg', '{L_SMILIES_RAZZ}', 15, 17, 26);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-P', 'icon_razz.svg', '{L_SMILIES_RAZZ}', 15, 17, 27);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':razz:', 'icon_razz.svg', '{L_SMILIES_RAZZ}', 15, 17, 28);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':oops:', 'icon_redface.svg', '{L_SMILIES_EMARRASSED}', 15, 17, 29);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':cry:', 'icon_cry.svg', '{L_SMILIES_CRYING}', 15, 17, 30);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':evil:', 'icon_evil.svg', '{L_SMILIES_EVIL}', 15, 17, 31);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':twisted:', 'icon_twisted.svg', '{L_SMILIES_TWISTED_EVIL}', 15, 17, 32);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':roll:', 'icon_rolleyes.svg', '{L_SMILIES_ROLLING_EYES}', 15, 17, 33);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':!:', 'icon_exclaim.svg', '{L_SMILIES_EXCLAMATION}', 15, 17, 34);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':?:', 'icon_question.svg', '{L_SMILIES_QUESTION}', 15, 17, 35);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':idea:', 'icon_idea.svg', '{L_SMILIES_IDEA}', 15, 17, 36);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':arrow:', 'icon_arrow.svg', '{L_SMILIES_ARROW}', 15, 17, 37);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':|', 'icon_neutral.svg', '{L_SMILIES_NEUTRAL}', 15, 17, 38);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':-|', 'icon_neutral.svg', '{L_SMILIES_NEUTRAL}', 15, 17, 39);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':mrgreen:', 'icon_mrgreen.svg', '{L_SMILIES_MR_GREEN}', 15, 17, 40);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':geek:', 'icon_e_geek.svg', '{L_SMILIES_GEEK}', 17, 17, 41);
+INSERT INTO phpbb_smilies (code, smiley_url, emotion, smiley_width, smiley_height, smiley_order) VALUES (':ugeek:', 'icon_e_ugeek.svg', '{L_SMILIES_UBER_GEEK}', 17, 18, 42);
# -- icons
INSERT INTO phpbb_icons (icons_url, icons_width, icons_height, icons_order, display_on_posting) VALUES ('misc/fire.gif', 16, 16, 1, 1);
diff --git a/phpBB/phpbb/db/migration/data/v400/hidpi_smilies.php b/phpBB/phpbb/db/migration/data/v400/hidpi_smilies.php
new file mode 100644
index 0000000000..f51810f095
--- /dev/null
+++ b/phpBB/phpbb/db/migration/data/v400/hidpi_smilies.php
@@ -0,0 +1,89 @@
+
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * For full copyright and license information, please see
+ * the docs/CREDITS.txt file.
+ *
+ */
+
+namespace phpbb\db\migration\data\v400;
+
+use phpbb\db\migration\migration;
+
+class hidpi_smilies extends migration
+{
+ private array $default_smilies = [
+ 'icon_arrow',
+ 'icon_cool',
+ 'icon_cry',
+ 'icon_e_biggrin',
+ 'icon_e_confused',
+ 'icon_e_geek',
+ 'icon_e_sad',
+ 'icon_e_smile',
+ 'icon_e_surprised',
+ 'icon_e_ugeek',
+ 'icon_e_wink',
+ 'icon_eek',
+ 'icon_evil',
+ 'icon_exclaim',
+ 'icon_idea',
+ 'icon_lol',
+ 'icon_mad',
+ 'icon_mrgreen',
+ 'icon_neutral',
+ 'icon_question',
+ 'icon_razz',
+ 'icon_redface',
+ 'icon_rolleyes',
+ 'icon_twisted',
+ ];
+
+ public static function depends_on(): array
+ {
+ return [
+ '\phpbb\db\migration\data\v400\dev'
+ ];
+ }
+
+ public function update_data(): array
+ {
+ return [
+ ['custom', [[$this, 'gif_to_svg_smilies']]],
+ ];
+ }
+
+ public function revert_data(): array
+ {
+ return [
+ ['custom', [[$this, 'svg_to_gif_smilies']]],
+ ];
+ }
+
+ public function gif_to_svg_smilies(): void
+ {
+ foreach ($this->default_smilies as $smiley)
+ {
+ $sql = 'UPDATE ' . $this->tables['smilies'] . "
+ SET smiley_url = '" . $this->db->sql_escape($smiley) . ".svg'
+ WHERE smiley_url = '" . $this->db->sql_escape($smiley) . ".gif'";
+ $this->db->sql_query($sql);
+ }
+ }
+
+ public function svg_to_gif_smilies(): void
+ {
+ foreach ($this->default_smilies as $smiley)
+ {
+ $sql = 'UPDATE ' . $this->tables['smilies'] . "
+ SET smiley_url = '" . $this->db->sql_escape($smiley) . ".gif'
+ WHERE smiley_url = '" . $this->db->sql_escape($smiley) . ".svg'";
+ $this->db->sql_query($sql);
+ }
+ }
+}
diff --git a/phpBB/phpbb/textformatter/s9e/factory.php b/phpBB/phpbb/textformatter/s9e/factory.php
index 79521b753b..78f8cbe6c6 100644
--- a/phpBB/phpbb/textformatter/s9e/factory.php
+++ b/phpBB/phpbb/textformatter/s9e/factory.php
@@ -358,15 +358,7 @@ class factory implements \phpbb\textformatter\cache_interface
// Load the Emoji plugin and modify its tag's template to obey viewsmilies
$tag = $configurator->Emoji->getTag();
- $tag->template = '
-
-
-
-
-
-
- ';
- $tag->template = '' . str_replace('class="emoji"', 'class="emoji smilies"', $tag->template) . '';
+ $tag->template = '';
/**
* Modify the s9e\TextFormatter configurator after the default settings are set
diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css
index 66fff05404..59db92a032 100644
--- a/phpBB/styles/prosilver/theme/common.css
+++ b/phpBB/styles/prosilver/theme/common.css
@@ -1224,14 +1224,9 @@ ul.linklist:after,
content: "";
}
-/* stylelint-disable declaration-property-unit-allowed-list */
.emoji {
- width: 1em;
- min-width: 18px;
- height: 1em;
- min-height: 18px;
+ font-size: 17px;
}
-/* stylelint-enable declaration-property-unit-allowed-list */
.smilies {
vertical-align: text-bottom;
diff --git a/tests/functional/acp_smilies_test.php b/tests/functional/acp_smilies_test.php
index 955a00b488..c8aa1d9b7d 100644
--- a/tests/functional/acp_smilies_test.php
+++ b/tests/functional/acp_smilies_test.php
@@ -24,8 +24,8 @@ class phpbb_functional_acp_smilies_test extends phpbb_functional_test_case
// Create the BBCode
$crawler = self::request('GET', 'adm/index.php?i=acp_icons&sid=' . $this->sid . '&mode=smilies&action=edit&id=1');
$form = $crawler->selectButton('Submit')->form(array(
- 'code[icon_e_biggrin.gif]' => '>:D',
- 'emotion[icon_e_biggrin.gif]' => '>:D'
+ 'code[icon_e_biggrin.svg]' => '>:D',
+ 'emotion[icon_e_biggrin.svg]' => '>:D'
));
self::submit($form);
diff --git a/tests/text_formatter/s9e/default_formatting_test.php b/tests/text_formatter/s9e/default_formatting_test.php
index 97b04c2fb7..3f637676b3 100644
--- a/tests/text_formatter/s9e/default_formatting_test.php
+++ b/tests/text_formatter/s9e/default_formatting_test.php
@@ -310,11 +310,11 @@ class phpbb_textformatter_s9e_default_formatting_test extends phpbb_test_case
),
array(
"Emoji: \xF0\x9F\x98\x80",
- 'Emoji:
'
+ "Emoji: \xF0\x9F\x98\x80",
),
array(
"Emoji: \xF0\x9F\x98\x80",
- "Emoji: \xF0\x9F\x98\x80",
+ "Emoji: \xF0\x9F\x98\x80",
function ($container)
{
$container->get('text_formatter.renderer')->set_viewsmilies(false);
diff --git a/tests/text_processing/tickets_data/PHPBB3-15348.html b/tests/text_processing/tickets_data/PHPBB3-15348.html
index 33336083e3..564e6fda59 100644
--- a/tests/text_processing/tickets_data/PHPBB3-15348.html
+++ b/tests/text_processing/tickets_data/PHPBB3-15348.html
@@ -1 +1 @@
-
\ No newline at end of file
+
:ok:
\ No newline at end of file
diff --git a/tests/text_processing/tickets_data/PHPBB3-16074.html b/tests/text_processing/tickets_data/PHPBB3-16074.html
index 8b2e5aad8a..04d72697b8 100644
--- a/tests/text_processing/tickets_data/PHPBB3-16074.html
+++ b/tests/text_processing/tickets_data/PHPBB3-16074.html
@@ -1 +1 @@
-
\ No newline at end of file
+:man_judge: 👨⚖️
\ No newline at end of file