]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
ui: Use Google Noto Color Emoji for icons for categories/genres. (#4594).
authorE.Smith <31170571+azlm8t@users.noreply.github.com>
Sun, 26 Nov 2017 13:24:44 +0000 (13:24 +0000)
committerJaroslav Kysela <perex@perex.cz>
Wed, 29 Nov 2017 09:29:27 +0000 (10:29 +0100)
By default, several Linux distributions do not install and use fonts
with the characters we were using for our icons. So we replace them
with pre-rendered png images from Google Noto Color Emoji. We use the
png images (instead of the font) to ensure better compatibility between
different browsers and OSes.

The pre-generated icons are under an Apache 2.0 licence, which is a
different licence to the ttf font (that we don't use) which is a
SIL Open Font licence.

The names of the files are based on the unicode naming convention.

Issue: #4594.

159 files changed:
src/webui/extjs.c
src/webui/static/app/dvr.js
src/webui/static/app/epg.js
src/webui/static/app/ext.css
src/webui/static/app/tvheadend.js
src/webui/static/icons/hires/README [new file with mode: 0644]
src/webui/static/icons/hires/airplane.png [new symlink]
src/webui/static/icons/hires/ambulance.png [new symlink]
src/webui/static/icons/hires/american_football.png [new symlink]
src/webui/static/icons/hires/artist_pallette.png [new symlink]
src/webui/static/icons/hires/automobile.png [new symlink]
src/webui/static/icons/hires/baby.png [new symlink]
src/webui/static/icons/hires/ballot_box_with_ballot.png [new symlink]
src/webui/static/icons/hires/baseball.png [new symlink]
src/webui/static/icons/hires/basketball_and_hoop.png [new symlink]
src/webui/static/icons/hires/beach_with_umbrella.png [new symlink]
src/webui/static/icons/hires/bow_and_arrow.png [new symlink]
src/webui/static/icons/hires/boxing_glove.png [new symlink]
src/webui/static/icons/hires/cactus.png [new symlink]
src/webui/static/icons/hires/castle.png [new symlink]
src/webui/static/icons/hires/chart_with_upwards_trend.png [new symlink]
src/webui/static/icons/hires/clapper_board.png [new symlink]
src/webui/static/icons/hires/collision_symbol.png [new symlink]
src/webui/static/icons/hires/construction_worker.png [new symlink]
src/webui/static/icons/hires/cooking.png [new symlink]
src/webui/static/icons/hires/couch_and_lamp.png [new symlink]
src/webui/static/icons/hires/dancer.png [new symlink]
src/webui/static/icons/hires/elephant.png [new symlink]
src/webui/static/icons/hires/extraterrestrial_alien.png [new symlink]
src/webui/static/icons/hires/face_with_tears_of_joy.png [new symlink]
src/webui/static/icons/hires/family.png [new symlink]
src/webui/static/icons/hires/film_frames.png [new symlink]
src/webui/static/icons/hires/fishing_pole_and_fish.png [new symlink]
src/webui/static/icons/hires/game_die.png [new symlink]
src/webui/static/icons/hires/ghost.png [new symlink]
src/webui/static/icons/hires/graduation_cap.png [new symlink]
src/webui/static/icons/hires/grinning_face.png [new symlink]
src/webui/static/icons/hires/high_heeled_shoe.png [new symlink]
src/webui/static/icons/hires/horse_face.png [new symlink]
src/webui/static/icons/hires/house_with_garden.png [new symlink]
src/webui/static/icons/hires/ice_skate.png [new symlink]
src/webui/static/icons/hires/left_pointing_magnifying_glass.png [new symlink]
src/webui/static/icons/hires/link_symbol.png [new symlink]
src/webui/static/icons/hires/martial_arts_uniform.png [new symlink]
src/webui/static/icons/hires/microphone.png [new symlink]
src/webui/static/icons/hires/microscope.png [new symlink]
src/webui/static/icons/hires/military_medal.png [new symlink]
src/webui/static/icons/hires/money_with_wings.png [new symlink]
src/webui/static/icons/hires/musical_note.png [new symlink]
src/webui/static/icons/hires/newspaper.png [new symlink]
src/webui/static/icons/hires/no_one_under_eighteen_symbol.png [new symlink]
src/webui/static/icons/hires/noto [new symlink]
src/webui/static/icons/hires/paw_prints.png [new symlink]
src/webui/static/icons/hires/pencil.png [new symlink]
src/webui/static/icons/hires/performing_arts.png [new symlink]
src/webui/static/icons/hires/person_doing_cartwheel.png [new symlink]
src/webui/static/icons/hires/person_in_lotus_position.png [new symlink]
src/webui/static/icons/hires/person_lifting_weights.png [new symlink]
src/webui/static/icons/hires/personal_computer.png [new symlink]
src/webui/static/icons/hires/place_of_worship.png [new symlink]
src/webui/static/icons/hires/police_officer.png [new symlink]
src/webui/static/icons/hires/racing_car.png [new symlink]
src/webui/static/icons/hires/racing_motorcycle.png [new symlink]
src/webui/static/icons/hires/radio.png [new symlink]
src/webui/static/icons/hires/red_heart.png [new symlink]
src/webui/static/icons/hires/selfie.png [new symlink]
src/webui/static/icons/hires/shopping_trolley.png [new symlink]
src/webui/static/icons/hires/skier.png [new symlink]
src/webui/static/icons/hires/skull.png [new symlink]
src/webui/static/icons/hires/soccer_ball.png [new symlink]
src/webui/static/icons/hires/spade_suit.png [new symlink]
src/webui/static/icons/hires/speaking_head_in_silhouette.png [new symlink]
src/webui/static/icons/hires/speech_balloon.png [new symlink]
src/webui/static/icons/hires/sports_medal.png [new symlink]
src/webui/static/icons/hires/spy.png [new symlink]
src/webui/static/icons/hires/squared_new.png [new symlink]
src/webui/static/icons/hires/sun_behind_cloud.png [new symlink]
src/webui/static/icons/hires/swimmer.png [new symlink]
src/webui/static/icons/hires/television.png [new symlink]
src/webui/static/icons/hires/tennis_racquet_and_ball.png [new symlink]
src/webui/static/icons/hires/unicorn_face.png [new symlink]
src/webui/static/icons/hires/wrestlers.png [new symlink]
vendor/noto/LICENSE [new file with mode: 0644]
vendor/noto/URL [new file with mode: 0644]
vendor/noto/emoji_u1f195.png [new file with mode: 0644]
vendor/noto/emoji_u1f335.png [new file with mode: 0644]
vendor/noto/emoji_u1f393.png [new file with mode: 0644]
vendor/noto/emoji_u1f396.png [new file with mode: 0644]
vendor/noto/emoji_u1f39e.png [new file with mode: 0644]
vendor/noto/emoji_u1f3a3.png [new file with mode: 0644]
vendor/noto/emoji_u1f3a4.png [new file with mode: 0644]
vendor/noto/emoji_u1f3a8.png [new file with mode: 0644]
vendor/noto/emoji_u1f3ac.png [new file with mode: 0644]
vendor/noto/emoji_u1f3ad.png [new file with mode: 0644]
vendor/noto/emoji_u1f3b2.png [new file with mode: 0644]
vendor/noto/emoji_u1f3b5.png [new file with mode: 0644]
vendor/noto/emoji_u1f3be.png [new file with mode: 0644]
vendor/noto/emoji_u1f3c0.png [new file with mode: 0644]
vendor/noto/emoji_u1f3c5.png [new file with mode: 0644]
vendor/noto/emoji_u1f3c8.png [new file with mode: 0644]
vendor/noto/emoji_u1f3ca_200d_2642.png [new file with mode: 0644]
vendor/noto/emoji_u1f3cb_200d_2642.png [new file with mode: 0644]
vendor/noto/emoji_u1f3cd.png [new file with mode: 0644]
vendor/noto/emoji_u1f3ce.png [new file with mode: 0644]
vendor/noto/emoji_u1f3d6.png [new file with mode: 0644]
vendor/noto/emoji_u1f3e1.png [new file with mode: 0644]
vendor/noto/emoji_u1f3f0.png [new file with mode: 0644]
vendor/noto/emoji_u1f3f9.png [new file with mode: 0644]
vendor/noto/emoji_u1f418.png [new file with mode: 0644]
vendor/noto/emoji_u1f434.png [new file with mode: 0644]
vendor/noto/emoji_u1f43e.png [new file with mode: 0644]
vendor/noto/emoji_u1f460.png [new file with mode: 0644]
vendor/noto/emoji_u1f468_200d_1f373.png [new file with mode: 0644]
vendor/noto/emoji_u1f468_200d_1f469_200d_1f466.png [new file with mode: 0644]
vendor/noto/emoji_u1f46e_200d_2642.png [new file with mode: 0644]
vendor/noto/emoji_u1f476.png [new file with mode: 0644]
vendor/noto/emoji_u1f477_200d_2642.png [new file with mode: 0644]
vendor/noto/emoji_u1f47b.png [new file with mode: 0644]
vendor/noto/emoji_u1f47d.png [new file with mode: 0644]
vendor/noto/emoji_u1f480.png [new file with mode: 0644]
vendor/noto/emoji_u1f483.png [new file with mode: 0644]
vendor/noto/emoji_u1f4a5.png [new file with mode: 0644]
vendor/noto/emoji_u1f4ac.png [new file with mode: 0644]
vendor/noto/emoji_u1f4b8.png [new file with mode: 0644]
vendor/noto/emoji_u1f4bb.png [new file with mode: 0644]
vendor/noto/emoji_u1f4c8.png [new file with mode: 0644]
vendor/noto/emoji_u1f4f0.png [new file with mode: 0644]
vendor/noto/emoji_u1f4fa.png [new file with mode: 0644]
vendor/noto/emoji_u1f4fb.png [new file with mode: 0644]
vendor/noto/emoji_u1f50d.png [new file with mode: 0644]
vendor/noto/emoji_u1f517.png [new file with mode: 0644]
vendor/noto/emoji_u1f51e.png [new file with mode: 0644]
vendor/noto/emoji_u1f52c.png [new file with mode: 0644]
vendor/noto/emoji_u1f575_200d_2642.png [new file with mode: 0644]
vendor/noto/emoji_u1f5e3.png [new file with mode: 0644]
vendor/noto/emoji_u1f5f3.png [new file with mode: 0644]
vendor/noto/emoji_u1f600.png [new file with mode: 0644]
vendor/noto/emoji_u1f602.png [new file with mode: 0644]
vendor/noto/emoji_u1f691.png [new file with mode: 0644]
vendor/noto/emoji_u1f697.png [new file with mode: 0644]
vendor/noto/emoji_u1f6cb.png [new file with mode: 0644]
vendor/noto/emoji_u1f6d0.png [new file with mode: 0644]
vendor/noto/emoji_u1f6d2.png [new file with mode: 0644]
vendor/noto/emoji_u1f933.png [new file with mode: 0644]
vendor/noto/emoji_u1f938_200d_2640.png [new file with mode: 0644]
vendor/noto/emoji_u1f93c_200d_2642.png [new file with mode: 0644]
vendor/noto/emoji_u1f94a.png [new file with mode: 0644]
vendor/noto/emoji_u1f94b.png [new file with mode: 0644]
vendor/noto/emoji_u1f984.png [new file with mode: 0644]
vendor/noto/emoji_u1f9d8_200d_2640.png [new file with mode: 0644]
vendor/noto/emoji_u2660.png [new file with mode: 0644]
vendor/noto/emoji_u26bd.png [new file with mode: 0644]
vendor/noto/emoji_u26be.png [new file with mode: 0644]
vendor/noto/emoji_u26c5.png [new file with mode: 0644]
vendor/noto/emoji_u26f7.png [new file with mode: 0644]
vendor/noto/emoji_u26f8.png [new file with mode: 0644]
vendor/noto/emoji_u2708.png [new file with mode: 0644]
vendor/noto/emoji_u270f.png [new file with mode: 0644]
vendor/noto/emoji_u2764.png [new file with mode: 0644]

index 8713866436525774e9686fbdeac877547ed095cb..924f33c3db5640143a77c4b974ac26287a79c48f 100644 (file)
@@ -205,7 +205,9 @@ page_about(http_connection_t *hc, const char *remain, void *opaque)
   htsbuf_qprintf(hq, "<p>%s \n\
 <a target=\"_blank\" href=\"http://www.extjs.com/\">ExtJS</a>. \
 %s <a target=\"_blank\" href=\"http://www.famfamfam.com/lab/icons/silk/\">\
-FamFamFam</a>\n\
+FamFamFam</a>, "\
+"<a target=\"_blank\" href=\"https://www.google.com/get/noto/help/emoji/\">Google Noto Color Emoji</a> "\
+"<a target=\"_blank\" href=\"https://raw.githubusercontent.com/googlei18n/noto-emoji/master/LICENSE\">(Apache Licence v2.0)</a>\n\
 </p>\n",
     tvh_gettext_lang(lang, N_("Based on software from")),
     tvh_gettext_lang(lang, N_("Icons from")));
index a6b38505903996f77aaca435e1717712d09410dd..94cf7abea7e0473960494b63070d1779fcd4e859 100644 (file)
@@ -45,7 +45,7 @@ tvheadend.dvrDetails = function(uuid) {
         if (duplicate)
             content += '<div class="x-epg-meta"><font color="red"><span class="x-epg-prefix">' + _('Will be skipped') + '<br>' + _('because it is a rerun of:') + '</span>' + tvheadend.niceDate(duplicate * 1000) + '</font></div>';
 
-        var icons = tvheadend.getContentTypeIcons({"category" : category, "genre" : genre});
+        var icons = tvheadend.getContentTypeIcons({"category" : category, "genre" : genre}, "x-dialog-category-large-icon");
         if (icons)
             content += '<div class="x-epg-icons">' + icons + '</div>';
         var displayTitle = title;
index ee6cd662b5df5df2aa1e9ae6622034ff721e16c8..68085e261dad4d91abaeebfd4dea3ff2e5aee72c 100644 (file)
@@ -103,7 +103,7 @@ tvheadend.epgDetails = function(event) {
 
     if (chicon)
         content += '<div class="x-epg-left">';
-    var icons = tvheadend.getContentTypeIcons(event);
+    var icons = tvheadend.getContentTypeIcons(event, "x-dialog-category-large-icon");
     if (icons)
         content += '<div class="x-epg-icons">' + icons + '</div>';
     content += '<div class="x-epg-title">' + event.title;
index bcc40cb25d92691f57f7e73c0f29cf60819aacef..894b735b9654ad6d632820a46e6973255231257d 100644 (file)
     margin: 0;
 }
 
+/* Although our other icons are 16x16, our fonts are 12px and these
+   icons are displayed next to text instead of in a toolbar. So if we
+   set our size to 16x16 then they are too big for the grid, so we
+   make the icons slightly smaller to compensate.  We don't make them
+   exactly 12px since 13px seems to fit without extending the lines
+   visibly whereas 14px makes it quite a bit bigger.
+*/
+.x-grid-category-icon {
+}
+
+.x-grid-category-icon img {
+    width: 13px;
+    height: 13px;
+    margin-right: 0.1em;
+}
+
+.x-grid-category-icon img:hover{
+    transform: scale(4,4);
+    /* Our parent is overflow: hidden so we need position to break out and
+     * be visible.
+     */
+    position: absolute;
+    /* Need a higher z-index otherwise we are hidden by progress bar */
+    z-index: 10;
+}
+
+/* Larger icons used in dialog boxes */
+.x-dialog-category-large-icon {
+}
+
+.x-dialog-category-large-icon img {
+    width: 32px;
+    height: 32px;
+    margin-right: 0.1em;
+}
+
+.x-dialog-category-large-icon img:hover{
+    transform: scale(2, 2);
+    /* We need a transform-origin to avoid being clipped in a dialog box */
+    transform-origin: top left;
+}
+
 .x-epg-icons {
     float: left;
-    font-size: 20px;
     margin-left: 0.5em;
-    letter-spacing: 0.2em;
 }
 
 .x-epg-title {
index 29699bc5f698ca2079d70c36fc6df1847767ee3a..7af36fd298dd45dde744b670abd20089ef700147 100644 (file)
@@ -48,133 +48,145 @@ tvheadend.fromCSV = function(s) {
 // always end up displaying "Movie-Comedy" rather than having "Movie"
 // sometimes hidden in middle of other icons.
 //
-// Although we can insert the characters here, we use the hex
-// values because editors don't always work well with these
-// characters.
-//
-// The comments refer to the official unicode name
+// The names they map on to refer to the official unicode names
+// for the characters. These are used so if we change between
+// fonts it is easy to re-map them to a new font.
 //
 // These categories should _not_ be subject to internationalization
 // since many non-English xmltv providers appear to supply English
 // words for categories, presumably for compatibility with
 // mapping to a genre.
 var catmap_major = {
-  "movie" : "&#x1f39e;",        // Film frames
-  "news" : "&#x1f4f0;",         // Newspaper
-  "series" : "&#x1f4fa;",       // Television
-  "sports" : "&#x1f3c5;",       // Sports medal
+  "movie" : "clapper_board",
+  "news" : "newspaper",
+  "radio" : "radio",
+  "series" : "television",
+  "sports" : "sports_medal",
 };
 
 var catmap_minor = {
   // These are taken from the frequent categories in SD and then
-  // sorted by name. They display reasonably well on a modern
-  // font.
-  "action" : "&#x1f3f9;",          // Bow and Arrow
-  "adults only" : "&#x1f51e;",     // No one under eighteen symbol
-  "adventure" : "&#x1f3f9;",       // Bow and Arrow
-  "animals" : "&#x1f43e;",         // Paw prints
-  "animated" : "&#x270f;&#xFE0F;", // Pencil
-  "art" : "&#x1f3a8;",             // Artist pallette
-  "auction" : "&#x1f4b8",          // Money with wings
-  "auto racing" : "&#x1f3ce;",     // Racing car
-  "auto" : "&#x1f3ce;",            // Racing car
-  "baseball" : "&#x26BE;",         // Baseball
-  "basketball" : "&#1f3c0;",       // Basketball and hoop
-  "boxing" : "&#x1f94a;",          // Boxing glove
-  "bus./financial" : "&#x1f4c8;",  // Chart with upwards trend
-  "children" : "&#x1f476;",        // Baby
-  "comedy" : "&#x1f600;",          // Grinning face
-  "computers" : "&#x1f4bb;",       // Personal computer
-  "community" : "&#x1f46a;",       // Family
-  "cooking" : "&#x1f52a;",         // Cooking knife
-  "crime drama" : "&#x1f46e;",     // Police officer
-  "dance" : "&#x1f483;",           // Dancer
-  "educational" : "&#x1f393;",     // Graduation cap
-  "fantasy" : "&#x1f984;",         // Unicorn face
-  "fashion" : "&#x1f460;",         // High heeled shoe
-  "figure skating" : "&#x26F8;",   // Ice skate
-  "fishing" : "&#x1f3a3;",         // Fishing pole and fish
-  "football" : "&#x1f3c8;",        // American Football (not soccer)
-  "game show" : "&#x1f3b2;",       // Game die
-  "gymnastics" : "&#x1f938",       // Person doing cartwheel
-  "history" : "&#x1f3f0;",         // Castle
-  "holiday" : "&#x1f6eb;",         // Airplane departure
-  "horror" : "&#x1f480;",          // Skull
-  "horse" : "&#x1f434;",           // Horse face
-  "house/garden" : "&#x1f3e1;",    // House with garden
-  "interview" : "&#x1f4ac;",       // Speech balloon
-  "law" : "&#x1f46e;",             // Police officer
-  "martial arts" : "&#x1f94b;",    // Martial arts uniform
-  "medical" : "&#x1f691;",         // Ambulance
-  "military" : "&#x1f396;",        // Military medal
-  "miniseries" : "&#x1f517;",      // Link symbol
-  "motorcycle" : "&#x1f3cd;",      // Racing motorcycle
-  "music" : "&#x1f3b5;",           // Musical note
-  "musical" : "&#x1f3b5;",         // Musical note
-  "mystery" : "&#x1f50d",          // Left pointing magnifying glass
-  "nature" : "&#x1f418;",          // Elephant
-  "paranormal" : "&#x1f47b;",      // Ghost
-  "poker" : "&#x1f0b1;",           // Playing card ace of hearts
-  "politics" : "&#x1f5f3;",        // Ballot box with ballot
-  "pro wrestling" : "&#x1f93c;",   // Wrestlers
-  "reality" : "&#x1f4f8;",         // Camera with flash
-  "religious" : "&#x1f6d0;",       // Place of worship
-  "romance" : "&#x2764;&#xfe0f;",  // Red Heart
-  "romantic comedy" : "&#x2764;&#xfe0f;", // Red Heart
-  "science fiction" : "&#x1f47d;", // Extraterrestrial alien
-  "science" : "&#x1f52c;",         // Microscope
-  "shopping" : "&#x1f6cd;",        // Shopping bags
-  "sitcom": "&#x1f600;",           // Grinning face
-  "skiing" : "&#x26f7;",           // Skier
-  "soap" : "&#x1f754;",            // Alchemical symbol for soap
-  "soccer" : "&#x26BD;",           // Soccer ball
-  "sports talk" : "&#x1f4ac;",     // Speech balloon
-  "spy": "&#x1f575;",              // Spy
-  "standup" : "&#x1f3a4;",         // Microphone
-  "swimming" : "&#x1f3ca;",        // Swimmer
-  "talk" : "&#x1f4ac;",            // Speech balloon
-  "technology" : "&#x1f4bb;",      // Personal computer
-  "tennis" : "&#x1f3be;",          // Tennis racquet and ball
-  "theater" : "&#1f3ad;",          // Performing arts
-  "travel" : "&#x1f6eb;",          // Airplane departure
-  "war" : "&#x1f396;",             // Military medal
-  "weather" : "&#x26c5;",          // Sun behind cloud
-  "weightlifting" : "&#x1f3cb;",   // Person lifting weights
-  "western" : "&#x1f335;",         // Cactus
+  // sorted by name.
+  "action" : "collision_symbol",
+  "adults only" : "no_one_under_eighteen_symbol",
+  "adventure" : "bow_and_arrow",
+  "animals" : "paw_prints",
+  "animated" : "pencil",
+  "art" : "artist_pallette",
+  "auction" : "money_with_wings",
+  "auto racing" : "racing_car",
+  "auto" : "automobile",
+  "baseball" : "baseball",
+  "basketball" : "basketball_and_hoop",
+  "boxing" : "boxing_glove",
+  "bus./financial" : "chart_with_upwards_trend",
+  "children" : "baby",
+  "comedy" : "face_with_tears_of_joy",
+  "computers" : "personal_computer",
+  "community" : "family",
+  "cooking" : "cooking",
+  "crime drama" : "police_officer",
+  "dance" : "dancer",
+  "educational" : "graduation_cap",
+  "fantasy" : "unicorn_face",
+  "fashion" : "high_heeled_shoe",
+  "figure skating" : "ice_skate",
+  "fishing" : "fishing_pole_and_fish",
+  "football" : "american_football", // American Football (not soccer)
+  "game show" : "game_die",
+  "gymnastics" : "person_doing_cartwheel",
+  "history" : "castle",
+  "holiday" : "airplane",
+  "home improvement" : "construction_worker",
+  "horror" : "skull",
+  "horse" : "horse_face",
+  "house/garden" : "house_with_garden",
+  "interview" : "speaking_head_in_silhouette",
+  "law" : "police_officer",
+  "martial arts" : "martial_arts_uniform",
+  "medical" : "ambulance",
+  "military" : "military_medal",
+  "miniseries" : "link_symbol",
+  "mixed martial arts" : "martial_arts_uniform",
+  "motorcycle" : "racing_motorcycle",
+  "music" : "musical_note",
+  "musical" : "musical_note",
+  "mystery" : "left_pointing_magnifying_glass",
+  "nature" : "elephant",
+  "paranormal" : "ghost",
+  "poker" : "spade_suit",
+  "politics" : "ballot_box_with_ballot",
+  "pro wrestling" : "wrestlers",
+  "reality" : "selfie",
+  "religious" : "place_of_worship",
+  "romance" : "red_heart",
+  "romantic comedy" : "red_heart",
+  "science fiction" : "extraterrestrial_alien",
+  "science" : "microscope",
+  "shopping" : "shopping_trolley",
+  "sitcom": "grinning_face",
+  "skiing" : "skier",
+  "soap" : "couch_and_lamp",
+  "soccer" : "soccer_ball",
+  "sports talk" : "speaking_head_in_silhouette",
+  "spy": "spy",
+  "standup" : "microphone",
+  "swimming" : "swimmer",
+  "talk" : "speaking_head_in_silhouette",
+  "technology" : "personal_computer",
+  "tennis" : "tennis_racquet_and_ball",
+  "theater" : "performing_arts",
+  "travel" : "airplane",
+  "war" : "military_medal",
+  "weather" : "sun_behind_cloud",
+  "weightlifting" : "person_lifting_weights",
+  "western" : "cactus",
 };
 
 //  These are mappings for OTA genres
 var genre_major = {
   // And genre major-numbers in hex
-  "10" : "&#x1f4fa;",           // Television: can't distinguish movie / tv
-  "20" : "&#x1f4f0;",           // Newspaper
-  "30" : "&#x1f3b2;",           // Game die
-  "40" : "&#x1f3c5;",           // Sports medal
-  "50" : "&#x1f476;",           // Baby
-  "60" : "&#x1f3b5;",           // Musical note
-  "70" : "&#x1f3ad;",           // Performing arts
-  "80" : "&#x1f5f3;",           // Ballot box with ballot
-  "90" : "&#x1f393;",           // Graduation cap
-  "a0" : "&#x26fa;",            // Tent
+  "10" : "television",           // Television: can't distinguish movie / tv
+  "20" : "newspaper",
+  "30" : "game_die",
+  "40" : "sports_medal",
+  "50" : "baby",
+  "60" : "musical_note",
+  "70" : "performing_arts",
+  "80" : "ballot_box_with_ballot",
+  "90" : "graduation_cap",
+  "a0" : "beach_with_umbrella",
 };
 
 var genre_minor = {
-  "11" : "&#x1f575;",           // Spy
-  "12" : "&#x1f3f9;",           // Bow and Arrow
-  "13" : "&#x1f47d;",           // Extraterrestrial alien
-  "14" : "&#x1f600;",           // Grinning face
-  "15" : "&#x1f754;",           // Alchemical symbol for soap
-  "16" : "&#x2764;&#xfe0f;",    // Red Heart
-  "18" : "&#x1f51e;",           // No one under eighteen symbol
-  "33" : "&#x1f4ac;",           // Speech balloon
-  "43" : "&#x26bd;",            // Soccer ball
-  "44" : "&#x1f3be;",           // Tennis racquet and ball
-  "73" : "&#x1f6d0;",           // Place of worship
-  "91" : "&#x1f418;",           // Elephant
-  "a1" : "&#x1f6eb;",           // Airplane departure
-  "a5" : "&#x1f52a;",           // Cooking knife
-  "a6" : "&#x1f6d2;",           // Shopping trolley
-  "a7" : "&#x1f3e1;",           // House with garden
+  "11" : "spy",
+  "12" : "bow_and_arrow",
+  "13" : "extraterrestrial_alien",
+  "14" : "face_with_tears_of_joy",
+  "15" : "couch_and_lamp",
+  "16" : "red_heart",
+  "18" : "no_one_under_eighteen_symbol",
+  "24" : "speaking_head_in_silhouette",
+  "33" : "speaking_head_in_silhouette",
+  "43" : "soccer_ball",
+  "44" : "tennis_racquet_and_ball",
+  "47" : "racing_motorcycle",
+  "4a" : "horse_face",
+  "4b" : "martial_arts_uniform",
+  "73" : "place_of_worship",
+  "76" : "clapper_board",
+  "77" : "clapper_board",
+  "7b" : "high_heeled_shoe",
+  "91" : "elephant",
+  "92" : "personal_computer",
+  "93" : "ambulance",
+  "94" : "airplane",
+  "a1" : "airplane",
+  "a3" : "automobile",
+  "a4" : "person_in_lotus_position",
+  "a5" : "cooking",
+  "a6" : "shopping_trolley",
+  "a7" : "house_with_garden",
 };
 
 tvheadend.uniqueArray = function(arr) {
@@ -186,8 +198,22 @@ tvheadend.uniqueArray = function(arr) {
   return unique;
 }
 
+// For the images in "arr", generate an image path
+// to the hires icons.
+// So "baseball" might be mapped to img src=static/icons/hires/baseball.png.
+tvheadend.applyHighResIconPath = function(arr) {
+  var ret = [];
+  for ( var i = 0 ; i < arr.length ; ++i ) {
+    var elem = arr[i];
+    if (!elem)
+      continue;
+    var img = '<img src="static/icons/hires/' + elem + '.png">';
+    ret.push(img);
+  }
+  return ret;
+}
 
-tvheadend.getContentTypeIcons = function(rec) {
+tvheadend.getContentTypeIcons = function(rec, style) {
   var ret_major = [];
   var ret_minor = [];
   var cat = rec.category
@@ -228,10 +254,23 @@ tvheadend.getContentTypeIcons = function(rec) {
     }
   }
 
-  var ret = "";
+  var ret_new = [];
   if ('new' in rec && rec.new)
-    ret += "&#x1f195;";         // Squared New
-  return ret + tvheadend.uniqueArray(ret_major).join("") + tvheadend.uniqueArray(ret_minor).join("");
+    ret_new = ["squared_new"];
+
+  // If user hasn't specified a style then we provide
+  // a default style which has small icons to be consistent
+  // with other icons.
+  if (!style)
+    style = "x-grid-category-icon";
+
+  // Now map the icon names to the appropriate path in the server.
+  // So given 'skier' we will map it to an img tag with the
+  // src pointing to ..../skier.png
+  return '<span class="' + style + '">' +
+    tvheadend.applyHighResIconPath(ret_new).join("") +
+    tvheadend.applyHighResIconPath(tvheadend.uniqueArray(ret_major)).join("") +
+    tvheadend.applyHighResIconPath(tvheadend.uniqueArray(ret_minor)).join("") + '</span>';
 }
 
 tvheadend.displayCategoryIcon = function(value, meta, record, ri, ci, store) {
diff --git a/src/webui/static/icons/hires/README b/src/webui/static/icons/hires/README
new file mode 100644 (file)
index 0000000..e318ba5
--- /dev/null
@@ -0,0 +1,12 @@
+These fonts are used for displaying icons in the UI.
+
+Currently this uses the Google noto font with mappings
+in the tvheadend.js.
+
+If adding more mappings then see the icon list at:
+https://www.google.com/get/noto/help/emoji/
+
+The names of the files are based on the official unicode name.
+In Emacs you could use "M-x insert-char" to insert the character
+and then "M-x describe-char" to describe it and it will tell
+you the official name.
diff --git a/src/webui/static/icons/hires/airplane.png b/src/webui/static/icons/hires/airplane.png
new file mode 120000 (symlink)
index 0000000..09a3ec5
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u2708.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/ambulance.png b/src/webui/static/icons/hires/ambulance.png
new file mode 120000 (symlink)
index 0000000..40d3977
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f691.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/american_football.png b/src/webui/static/icons/hires/american_football.png
new file mode 120000 (symlink)
index 0000000..280ed8b
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3c8.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/artist_pallette.png b/src/webui/static/icons/hires/artist_pallette.png
new file mode 120000 (symlink)
index 0000000..250da6b
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3a8.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/automobile.png b/src/webui/static/icons/hires/automobile.png
new file mode 120000 (symlink)
index 0000000..7f90be7
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f697.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/baby.png b/src/webui/static/icons/hires/baby.png
new file mode 120000 (symlink)
index 0000000..5773755
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f476.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/ballot_box_with_ballot.png b/src/webui/static/icons/hires/ballot_box_with_ballot.png
new file mode 120000 (symlink)
index 0000000..53d8375
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f5f3.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/baseball.png b/src/webui/static/icons/hires/baseball.png
new file mode 120000 (symlink)
index 0000000..3ba2de7
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u26be.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/basketball_and_hoop.png b/src/webui/static/icons/hires/basketball_and_hoop.png
new file mode 120000 (symlink)
index 0000000..e4ed070
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3c0.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/beach_with_umbrella.png b/src/webui/static/icons/hires/beach_with_umbrella.png
new file mode 120000 (symlink)
index 0000000..4f46305
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3d6.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/bow_and_arrow.png b/src/webui/static/icons/hires/bow_and_arrow.png
new file mode 120000 (symlink)
index 0000000..17725c9
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3f9.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/boxing_glove.png b/src/webui/static/icons/hires/boxing_glove.png
new file mode 120000 (symlink)
index 0000000..a744e37
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f94a.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/cactus.png b/src/webui/static/icons/hires/cactus.png
new file mode 120000 (symlink)
index 0000000..4b8e03f
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f335.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/castle.png b/src/webui/static/icons/hires/castle.png
new file mode 120000 (symlink)
index 0000000..65f35b3
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3f0.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/chart_with_upwards_trend.png b/src/webui/static/icons/hires/chart_with_upwards_trend.png
new file mode 120000 (symlink)
index 0000000..34306a9
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4c8.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/clapper_board.png b/src/webui/static/icons/hires/clapper_board.png
new file mode 120000 (symlink)
index 0000000..5b620e8
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3ac.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/collision_symbol.png b/src/webui/static/icons/hires/collision_symbol.png
new file mode 120000 (symlink)
index 0000000..0c95438
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4a5.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/construction_worker.png b/src/webui/static/icons/hires/construction_worker.png
new file mode 120000 (symlink)
index 0000000..6ebbb52
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f477_200d_2642.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/cooking.png b/src/webui/static/icons/hires/cooking.png
new file mode 120000 (symlink)
index 0000000..c5b591d
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f468_200d_1f373.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/couch_and_lamp.png b/src/webui/static/icons/hires/couch_and_lamp.png
new file mode 120000 (symlink)
index 0000000..7514dc5
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f6cb.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/dancer.png b/src/webui/static/icons/hires/dancer.png
new file mode 120000 (symlink)
index 0000000..051149c
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f483.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/elephant.png b/src/webui/static/icons/hires/elephant.png
new file mode 120000 (symlink)
index 0000000..cf5460a
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f418.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/extraterrestrial_alien.png b/src/webui/static/icons/hires/extraterrestrial_alien.png
new file mode 120000 (symlink)
index 0000000..2e9611f
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f47d.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/face_with_tears_of_joy.png b/src/webui/static/icons/hires/face_with_tears_of_joy.png
new file mode 120000 (symlink)
index 0000000..de153e7
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f602.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/family.png b/src/webui/static/icons/hires/family.png
new file mode 120000 (symlink)
index 0000000..84f60e1
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f468_200d_1f469_200d_1f466.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/film_frames.png b/src/webui/static/icons/hires/film_frames.png
new file mode 120000 (symlink)
index 0000000..f093e44
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f39e.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/fishing_pole_and_fish.png b/src/webui/static/icons/hires/fishing_pole_and_fish.png
new file mode 120000 (symlink)
index 0000000..30784dd
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3a3.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/game_die.png b/src/webui/static/icons/hires/game_die.png
new file mode 120000 (symlink)
index 0000000..06ee61e
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3b2.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/ghost.png b/src/webui/static/icons/hires/ghost.png
new file mode 120000 (symlink)
index 0000000..0c373b7
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f47b.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/graduation_cap.png b/src/webui/static/icons/hires/graduation_cap.png
new file mode 120000 (symlink)
index 0000000..41adca2
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f393.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/grinning_face.png b/src/webui/static/icons/hires/grinning_face.png
new file mode 120000 (symlink)
index 0000000..0e759c5
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f600.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/high_heeled_shoe.png b/src/webui/static/icons/hires/high_heeled_shoe.png
new file mode 120000 (symlink)
index 0000000..9e6012e
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f460.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/horse_face.png b/src/webui/static/icons/hires/horse_face.png
new file mode 120000 (symlink)
index 0000000..b655999
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f434.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/house_with_garden.png b/src/webui/static/icons/hires/house_with_garden.png
new file mode 120000 (symlink)
index 0000000..c4ac170
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3e1.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/ice_skate.png b/src/webui/static/icons/hires/ice_skate.png
new file mode 120000 (symlink)
index 0000000..82bf204
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u26f8.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/left_pointing_magnifying_glass.png b/src/webui/static/icons/hires/left_pointing_magnifying_glass.png
new file mode 120000 (symlink)
index 0000000..7f69474
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f50d.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/link_symbol.png b/src/webui/static/icons/hires/link_symbol.png
new file mode 120000 (symlink)
index 0000000..43a25f8
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f517.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/martial_arts_uniform.png b/src/webui/static/icons/hires/martial_arts_uniform.png
new file mode 120000 (symlink)
index 0000000..49caf86
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f94b.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/microphone.png b/src/webui/static/icons/hires/microphone.png
new file mode 120000 (symlink)
index 0000000..0f39058
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3a4.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/microscope.png b/src/webui/static/icons/hires/microscope.png
new file mode 120000 (symlink)
index 0000000..a76b09c
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f52c.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/military_medal.png b/src/webui/static/icons/hires/military_medal.png
new file mode 120000 (symlink)
index 0000000..aa105b4
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f396.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/money_with_wings.png b/src/webui/static/icons/hires/money_with_wings.png
new file mode 120000 (symlink)
index 0000000..5e4cd8a
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4b8.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/musical_note.png b/src/webui/static/icons/hires/musical_note.png
new file mode 120000 (symlink)
index 0000000..2a30b0c
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3b5.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/newspaper.png b/src/webui/static/icons/hires/newspaper.png
new file mode 120000 (symlink)
index 0000000..211d6e0
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4f0.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/no_one_under_eighteen_symbol.png b/src/webui/static/icons/hires/no_one_under_eighteen_symbol.png
new file mode 120000 (symlink)
index 0000000..36ab2ac
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f51e.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/noto b/src/webui/static/icons/hires/noto
new file mode 120000 (symlink)
index 0000000..8883e21
--- /dev/null
@@ -0,0 +1 @@
+../../../../../vendor/noto
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/paw_prints.png b/src/webui/static/icons/hires/paw_prints.png
new file mode 120000 (symlink)
index 0000000..bd9e3cb
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f43e.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/pencil.png b/src/webui/static/icons/hires/pencil.png
new file mode 120000 (symlink)
index 0000000..8348419
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u270f.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/performing_arts.png b/src/webui/static/icons/hires/performing_arts.png
new file mode 120000 (symlink)
index 0000000..59e8f62
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3ad.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/person_doing_cartwheel.png b/src/webui/static/icons/hires/person_doing_cartwheel.png
new file mode 120000 (symlink)
index 0000000..83f9dce
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f938_200d_2640.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/person_in_lotus_position.png b/src/webui/static/icons/hires/person_in_lotus_position.png
new file mode 120000 (symlink)
index 0000000..3459146
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f9d8_200d_2640.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/person_lifting_weights.png b/src/webui/static/icons/hires/person_lifting_weights.png
new file mode 120000 (symlink)
index 0000000..d08dda2
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3cb_200d_2642.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/personal_computer.png b/src/webui/static/icons/hires/personal_computer.png
new file mode 120000 (symlink)
index 0000000..d9bf684
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4bb.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/place_of_worship.png b/src/webui/static/icons/hires/place_of_worship.png
new file mode 120000 (symlink)
index 0000000..da843f4
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f6d0.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/police_officer.png b/src/webui/static/icons/hires/police_officer.png
new file mode 120000 (symlink)
index 0000000..5959590
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f46e_200d_2642.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/racing_car.png b/src/webui/static/icons/hires/racing_car.png
new file mode 120000 (symlink)
index 0000000..c7ff7ed
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3ce.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/racing_motorcycle.png b/src/webui/static/icons/hires/racing_motorcycle.png
new file mode 120000 (symlink)
index 0000000..b256f63
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3cd.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/radio.png b/src/webui/static/icons/hires/radio.png
new file mode 120000 (symlink)
index 0000000..97e48b0
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4fb.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/red_heart.png b/src/webui/static/icons/hires/red_heart.png
new file mode 120000 (symlink)
index 0000000..c860890
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u2764.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/selfie.png b/src/webui/static/icons/hires/selfie.png
new file mode 120000 (symlink)
index 0000000..8e58f23
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f933.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/shopping_trolley.png b/src/webui/static/icons/hires/shopping_trolley.png
new file mode 120000 (symlink)
index 0000000..7cb966a
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f6d2.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/skier.png b/src/webui/static/icons/hires/skier.png
new file mode 120000 (symlink)
index 0000000..701904b
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u26f7.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/skull.png b/src/webui/static/icons/hires/skull.png
new file mode 120000 (symlink)
index 0000000..63bcb06
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f480.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/soccer_ball.png b/src/webui/static/icons/hires/soccer_ball.png
new file mode 120000 (symlink)
index 0000000..147c3e4
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u26bd.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/spade_suit.png b/src/webui/static/icons/hires/spade_suit.png
new file mode 120000 (symlink)
index 0000000..e92a27a
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u2660.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/speaking_head_in_silhouette.png b/src/webui/static/icons/hires/speaking_head_in_silhouette.png
new file mode 120000 (symlink)
index 0000000..9fba0bc
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f5e3.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/speech_balloon.png b/src/webui/static/icons/hires/speech_balloon.png
new file mode 120000 (symlink)
index 0000000..004f1dd
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4ac.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/sports_medal.png b/src/webui/static/icons/hires/sports_medal.png
new file mode 120000 (symlink)
index 0000000..dee69f5
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3c5.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/spy.png b/src/webui/static/icons/hires/spy.png
new file mode 120000 (symlink)
index 0000000..079a648
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f575_200d_2642.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/squared_new.png b/src/webui/static/icons/hires/squared_new.png
new file mode 120000 (symlink)
index 0000000..a6046d7
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f195.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/sun_behind_cloud.png b/src/webui/static/icons/hires/sun_behind_cloud.png
new file mode 120000 (symlink)
index 0000000..b570fb5
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u26c5.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/swimmer.png b/src/webui/static/icons/hires/swimmer.png
new file mode 120000 (symlink)
index 0000000..664f34e
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3ca_200d_2642.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/television.png b/src/webui/static/icons/hires/television.png
new file mode 120000 (symlink)
index 0000000..d8b883b
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f4fa.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/tennis_racquet_and_ball.png b/src/webui/static/icons/hires/tennis_racquet_and_ball.png
new file mode 120000 (symlink)
index 0000000..aa690e0
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f3be.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/unicorn_face.png b/src/webui/static/icons/hires/unicorn_face.png
new file mode 120000 (symlink)
index 0000000..ec7372a
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f984.png
\ No newline at end of file
diff --git a/src/webui/static/icons/hires/wrestlers.png b/src/webui/static/icons/hires/wrestlers.png
new file mode 120000 (symlink)
index 0000000..e2f0e72
--- /dev/null
@@ -0,0 +1 @@
+noto/emoji_u1f93c_200d_2642.png
\ No newline at end of file
diff --git a/vendor/noto/LICENSE b/vendor/noto/LICENSE
new file mode 100644 (file)
index 0000000..261eeb9
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/noto/URL b/vendor/noto/URL
new file mode 100644 (file)
index 0000000..2d61b01
--- /dev/null
@@ -0,0 +1,5 @@
+Icons in this directory are taken from this repository:
+https://github.com/googlei18n/noto-emoji
+And they are the hires pre-generated icons in the png/128 sub-directory.
+They are subject to the Apache 2 licence.
+
diff --git a/vendor/noto/emoji_u1f195.png b/vendor/noto/emoji_u1f195.png
new file mode 100644 (file)
index 0000000..23ead73
Binary files /dev/null and b/vendor/noto/emoji_u1f195.png differ
diff --git a/vendor/noto/emoji_u1f335.png b/vendor/noto/emoji_u1f335.png
new file mode 100644 (file)
index 0000000..74fd7bf
Binary files /dev/null and b/vendor/noto/emoji_u1f335.png differ
diff --git a/vendor/noto/emoji_u1f393.png b/vendor/noto/emoji_u1f393.png
new file mode 100644 (file)
index 0000000..5acca83
Binary files /dev/null and b/vendor/noto/emoji_u1f393.png differ
diff --git a/vendor/noto/emoji_u1f396.png b/vendor/noto/emoji_u1f396.png
new file mode 100644 (file)
index 0000000..42e98dd
Binary files /dev/null and b/vendor/noto/emoji_u1f396.png differ
diff --git a/vendor/noto/emoji_u1f39e.png b/vendor/noto/emoji_u1f39e.png
new file mode 100644 (file)
index 0000000..a40b3ad
Binary files /dev/null and b/vendor/noto/emoji_u1f39e.png differ
diff --git a/vendor/noto/emoji_u1f3a3.png b/vendor/noto/emoji_u1f3a3.png
new file mode 100644 (file)
index 0000000..2296a58
Binary files /dev/null and b/vendor/noto/emoji_u1f3a3.png differ
diff --git a/vendor/noto/emoji_u1f3a4.png b/vendor/noto/emoji_u1f3a4.png
new file mode 100644 (file)
index 0000000..108de91
Binary files /dev/null and b/vendor/noto/emoji_u1f3a4.png differ
diff --git a/vendor/noto/emoji_u1f3a8.png b/vendor/noto/emoji_u1f3a8.png
new file mode 100644 (file)
index 0000000..5fdb01b
Binary files /dev/null and b/vendor/noto/emoji_u1f3a8.png differ
diff --git a/vendor/noto/emoji_u1f3ac.png b/vendor/noto/emoji_u1f3ac.png
new file mode 100644 (file)
index 0000000..5de1eb0
Binary files /dev/null and b/vendor/noto/emoji_u1f3ac.png differ
diff --git a/vendor/noto/emoji_u1f3ad.png b/vendor/noto/emoji_u1f3ad.png
new file mode 100644 (file)
index 0000000..34813ff
Binary files /dev/null and b/vendor/noto/emoji_u1f3ad.png differ
diff --git a/vendor/noto/emoji_u1f3b2.png b/vendor/noto/emoji_u1f3b2.png
new file mode 100644 (file)
index 0000000..797bbf5
Binary files /dev/null and b/vendor/noto/emoji_u1f3b2.png differ
diff --git a/vendor/noto/emoji_u1f3b5.png b/vendor/noto/emoji_u1f3b5.png
new file mode 100644 (file)
index 0000000..641c340
Binary files /dev/null and b/vendor/noto/emoji_u1f3b5.png differ
diff --git a/vendor/noto/emoji_u1f3be.png b/vendor/noto/emoji_u1f3be.png
new file mode 100644 (file)
index 0000000..4fa8326
Binary files /dev/null and b/vendor/noto/emoji_u1f3be.png differ
diff --git a/vendor/noto/emoji_u1f3c0.png b/vendor/noto/emoji_u1f3c0.png
new file mode 100644 (file)
index 0000000..d48b1b6
Binary files /dev/null and b/vendor/noto/emoji_u1f3c0.png differ
diff --git a/vendor/noto/emoji_u1f3c5.png b/vendor/noto/emoji_u1f3c5.png
new file mode 100644 (file)
index 0000000..4cc926f
Binary files /dev/null and b/vendor/noto/emoji_u1f3c5.png differ
diff --git a/vendor/noto/emoji_u1f3c8.png b/vendor/noto/emoji_u1f3c8.png
new file mode 100644 (file)
index 0000000..5444627
Binary files /dev/null and b/vendor/noto/emoji_u1f3c8.png differ
diff --git a/vendor/noto/emoji_u1f3ca_200d_2642.png b/vendor/noto/emoji_u1f3ca_200d_2642.png
new file mode 100644 (file)
index 0000000..7ca5faa
Binary files /dev/null and b/vendor/noto/emoji_u1f3ca_200d_2642.png differ
diff --git a/vendor/noto/emoji_u1f3cb_200d_2642.png b/vendor/noto/emoji_u1f3cb_200d_2642.png
new file mode 100644 (file)
index 0000000..b830c10
Binary files /dev/null and b/vendor/noto/emoji_u1f3cb_200d_2642.png differ
diff --git a/vendor/noto/emoji_u1f3cd.png b/vendor/noto/emoji_u1f3cd.png
new file mode 100644 (file)
index 0000000..fc71ee3
Binary files /dev/null and b/vendor/noto/emoji_u1f3cd.png differ
diff --git a/vendor/noto/emoji_u1f3ce.png b/vendor/noto/emoji_u1f3ce.png
new file mode 100644 (file)
index 0000000..c3a20fb
Binary files /dev/null and b/vendor/noto/emoji_u1f3ce.png differ
diff --git a/vendor/noto/emoji_u1f3d6.png b/vendor/noto/emoji_u1f3d6.png
new file mode 100644 (file)
index 0000000..c1c49df
Binary files /dev/null and b/vendor/noto/emoji_u1f3d6.png differ
diff --git a/vendor/noto/emoji_u1f3e1.png b/vendor/noto/emoji_u1f3e1.png
new file mode 100644 (file)
index 0000000..cbec190
Binary files /dev/null and b/vendor/noto/emoji_u1f3e1.png differ
diff --git a/vendor/noto/emoji_u1f3f0.png b/vendor/noto/emoji_u1f3f0.png
new file mode 100644 (file)
index 0000000..c6ca556
Binary files /dev/null and b/vendor/noto/emoji_u1f3f0.png differ
diff --git a/vendor/noto/emoji_u1f3f9.png b/vendor/noto/emoji_u1f3f9.png
new file mode 100644 (file)
index 0000000..c3a1222
Binary files /dev/null and b/vendor/noto/emoji_u1f3f9.png differ
diff --git a/vendor/noto/emoji_u1f418.png b/vendor/noto/emoji_u1f418.png
new file mode 100644 (file)
index 0000000..ee49fd1
Binary files /dev/null and b/vendor/noto/emoji_u1f418.png differ
diff --git a/vendor/noto/emoji_u1f434.png b/vendor/noto/emoji_u1f434.png
new file mode 100644 (file)
index 0000000..5185228
Binary files /dev/null and b/vendor/noto/emoji_u1f434.png differ
diff --git a/vendor/noto/emoji_u1f43e.png b/vendor/noto/emoji_u1f43e.png
new file mode 100644 (file)
index 0000000..b449dd1
Binary files /dev/null and b/vendor/noto/emoji_u1f43e.png differ
diff --git a/vendor/noto/emoji_u1f460.png b/vendor/noto/emoji_u1f460.png
new file mode 100644 (file)
index 0000000..b19d073
Binary files /dev/null and b/vendor/noto/emoji_u1f460.png differ
diff --git a/vendor/noto/emoji_u1f468_200d_1f373.png b/vendor/noto/emoji_u1f468_200d_1f373.png
new file mode 100644 (file)
index 0000000..00360b3
Binary files /dev/null and b/vendor/noto/emoji_u1f468_200d_1f373.png differ
diff --git a/vendor/noto/emoji_u1f468_200d_1f469_200d_1f466.png b/vendor/noto/emoji_u1f468_200d_1f469_200d_1f466.png
new file mode 100644 (file)
index 0000000..2dbbcd1
Binary files /dev/null and b/vendor/noto/emoji_u1f468_200d_1f469_200d_1f466.png differ
diff --git a/vendor/noto/emoji_u1f46e_200d_2642.png b/vendor/noto/emoji_u1f46e_200d_2642.png
new file mode 100644 (file)
index 0000000..afc1d87
Binary files /dev/null and b/vendor/noto/emoji_u1f46e_200d_2642.png differ
diff --git a/vendor/noto/emoji_u1f476.png b/vendor/noto/emoji_u1f476.png
new file mode 100644 (file)
index 0000000..8b69da1
Binary files /dev/null and b/vendor/noto/emoji_u1f476.png differ
diff --git a/vendor/noto/emoji_u1f477_200d_2642.png b/vendor/noto/emoji_u1f477_200d_2642.png
new file mode 100644 (file)
index 0000000..5dfbd56
Binary files /dev/null and b/vendor/noto/emoji_u1f477_200d_2642.png differ
diff --git a/vendor/noto/emoji_u1f47b.png b/vendor/noto/emoji_u1f47b.png
new file mode 100644 (file)
index 0000000..5a5a28d
Binary files /dev/null and b/vendor/noto/emoji_u1f47b.png differ
diff --git a/vendor/noto/emoji_u1f47d.png b/vendor/noto/emoji_u1f47d.png
new file mode 100644 (file)
index 0000000..8ab535f
Binary files /dev/null and b/vendor/noto/emoji_u1f47d.png differ
diff --git a/vendor/noto/emoji_u1f480.png b/vendor/noto/emoji_u1f480.png
new file mode 100644 (file)
index 0000000..8a8f42a
Binary files /dev/null and b/vendor/noto/emoji_u1f480.png differ
diff --git a/vendor/noto/emoji_u1f483.png b/vendor/noto/emoji_u1f483.png
new file mode 100644 (file)
index 0000000..d86b3e1
Binary files /dev/null and b/vendor/noto/emoji_u1f483.png differ
diff --git a/vendor/noto/emoji_u1f4a5.png b/vendor/noto/emoji_u1f4a5.png
new file mode 100644 (file)
index 0000000..dc825cc
Binary files /dev/null and b/vendor/noto/emoji_u1f4a5.png differ
diff --git a/vendor/noto/emoji_u1f4ac.png b/vendor/noto/emoji_u1f4ac.png
new file mode 100644 (file)
index 0000000..d7463b8
Binary files /dev/null and b/vendor/noto/emoji_u1f4ac.png differ
diff --git a/vendor/noto/emoji_u1f4b8.png b/vendor/noto/emoji_u1f4b8.png
new file mode 100644 (file)
index 0000000..416eb53
Binary files /dev/null and b/vendor/noto/emoji_u1f4b8.png differ
diff --git a/vendor/noto/emoji_u1f4bb.png b/vendor/noto/emoji_u1f4bb.png
new file mode 100644 (file)
index 0000000..7b53ca5
Binary files /dev/null and b/vendor/noto/emoji_u1f4bb.png differ
diff --git a/vendor/noto/emoji_u1f4c8.png b/vendor/noto/emoji_u1f4c8.png
new file mode 100644 (file)
index 0000000..9a3dd65
Binary files /dev/null and b/vendor/noto/emoji_u1f4c8.png differ
diff --git a/vendor/noto/emoji_u1f4f0.png b/vendor/noto/emoji_u1f4f0.png
new file mode 100644 (file)
index 0000000..5c9e139
Binary files /dev/null and b/vendor/noto/emoji_u1f4f0.png differ
diff --git a/vendor/noto/emoji_u1f4fa.png b/vendor/noto/emoji_u1f4fa.png
new file mode 100644 (file)
index 0000000..84d3205
Binary files /dev/null and b/vendor/noto/emoji_u1f4fa.png differ
diff --git a/vendor/noto/emoji_u1f4fb.png b/vendor/noto/emoji_u1f4fb.png
new file mode 100644 (file)
index 0000000..c60a0cc
Binary files /dev/null and b/vendor/noto/emoji_u1f4fb.png differ
diff --git a/vendor/noto/emoji_u1f50d.png b/vendor/noto/emoji_u1f50d.png
new file mode 100644 (file)
index 0000000..fb3466e
Binary files /dev/null and b/vendor/noto/emoji_u1f50d.png differ
diff --git a/vendor/noto/emoji_u1f517.png b/vendor/noto/emoji_u1f517.png
new file mode 100644 (file)
index 0000000..c802a0b
Binary files /dev/null and b/vendor/noto/emoji_u1f517.png differ
diff --git a/vendor/noto/emoji_u1f51e.png b/vendor/noto/emoji_u1f51e.png
new file mode 100644 (file)
index 0000000..d55c516
Binary files /dev/null and b/vendor/noto/emoji_u1f51e.png differ
diff --git a/vendor/noto/emoji_u1f52c.png b/vendor/noto/emoji_u1f52c.png
new file mode 100644 (file)
index 0000000..d8b8ae4
Binary files /dev/null and b/vendor/noto/emoji_u1f52c.png differ
diff --git a/vendor/noto/emoji_u1f575_200d_2642.png b/vendor/noto/emoji_u1f575_200d_2642.png
new file mode 100644 (file)
index 0000000..432eb85
Binary files /dev/null and b/vendor/noto/emoji_u1f575_200d_2642.png differ
diff --git a/vendor/noto/emoji_u1f5e3.png b/vendor/noto/emoji_u1f5e3.png
new file mode 100644 (file)
index 0000000..1eafe2a
Binary files /dev/null and b/vendor/noto/emoji_u1f5e3.png differ
diff --git a/vendor/noto/emoji_u1f5f3.png b/vendor/noto/emoji_u1f5f3.png
new file mode 100644 (file)
index 0000000..b27b240
Binary files /dev/null and b/vendor/noto/emoji_u1f5f3.png differ
diff --git a/vendor/noto/emoji_u1f600.png b/vendor/noto/emoji_u1f600.png
new file mode 100644 (file)
index 0000000..cf89017
Binary files /dev/null and b/vendor/noto/emoji_u1f600.png differ
diff --git a/vendor/noto/emoji_u1f602.png b/vendor/noto/emoji_u1f602.png
new file mode 100644 (file)
index 0000000..cbb52f6
Binary files /dev/null and b/vendor/noto/emoji_u1f602.png differ
diff --git a/vendor/noto/emoji_u1f691.png b/vendor/noto/emoji_u1f691.png
new file mode 100644 (file)
index 0000000..82f5d5e
Binary files /dev/null and b/vendor/noto/emoji_u1f691.png differ
diff --git a/vendor/noto/emoji_u1f697.png b/vendor/noto/emoji_u1f697.png
new file mode 100644 (file)
index 0000000..7d67a39
Binary files /dev/null and b/vendor/noto/emoji_u1f697.png differ
diff --git a/vendor/noto/emoji_u1f6cb.png b/vendor/noto/emoji_u1f6cb.png
new file mode 100644 (file)
index 0000000..8054345
Binary files /dev/null and b/vendor/noto/emoji_u1f6cb.png differ
diff --git a/vendor/noto/emoji_u1f6d0.png b/vendor/noto/emoji_u1f6d0.png
new file mode 100644 (file)
index 0000000..62cbfdd
Binary files /dev/null and b/vendor/noto/emoji_u1f6d0.png differ
diff --git a/vendor/noto/emoji_u1f6d2.png b/vendor/noto/emoji_u1f6d2.png
new file mode 100644 (file)
index 0000000..aedf3c3
Binary files /dev/null and b/vendor/noto/emoji_u1f6d2.png differ
diff --git a/vendor/noto/emoji_u1f933.png b/vendor/noto/emoji_u1f933.png
new file mode 100644 (file)
index 0000000..08f8572
Binary files /dev/null and b/vendor/noto/emoji_u1f933.png differ
diff --git a/vendor/noto/emoji_u1f938_200d_2640.png b/vendor/noto/emoji_u1f938_200d_2640.png
new file mode 100644 (file)
index 0000000..9233960
Binary files /dev/null and b/vendor/noto/emoji_u1f938_200d_2640.png differ
diff --git a/vendor/noto/emoji_u1f93c_200d_2642.png b/vendor/noto/emoji_u1f93c_200d_2642.png
new file mode 100644 (file)
index 0000000..7e2a703
Binary files /dev/null and b/vendor/noto/emoji_u1f93c_200d_2642.png differ
diff --git a/vendor/noto/emoji_u1f94a.png b/vendor/noto/emoji_u1f94a.png
new file mode 100644 (file)
index 0000000..17be53c
Binary files /dev/null and b/vendor/noto/emoji_u1f94a.png differ
diff --git a/vendor/noto/emoji_u1f94b.png b/vendor/noto/emoji_u1f94b.png
new file mode 100644 (file)
index 0000000..4d2db12
Binary files /dev/null and b/vendor/noto/emoji_u1f94b.png differ
diff --git a/vendor/noto/emoji_u1f984.png b/vendor/noto/emoji_u1f984.png
new file mode 100644 (file)
index 0000000..cb82725
Binary files /dev/null and b/vendor/noto/emoji_u1f984.png differ
diff --git a/vendor/noto/emoji_u1f9d8_200d_2640.png b/vendor/noto/emoji_u1f9d8_200d_2640.png
new file mode 100644 (file)
index 0000000..8fca920
Binary files /dev/null and b/vendor/noto/emoji_u1f9d8_200d_2640.png differ
diff --git a/vendor/noto/emoji_u2660.png b/vendor/noto/emoji_u2660.png
new file mode 100644 (file)
index 0000000..f696f0b
Binary files /dev/null and b/vendor/noto/emoji_u2660.png differ
diff --git a/vendor/noto/emoji_u26bd.png b/vendor/noto/emoji_u26bd.png
new file mode 100644 (file)
index 0000000..debad3f
Binary files /dev/null and b/vendor/noto/emoji_u26bd.png differ
diff --git a/vendor/noto/emoji_u26be.png b/vendor/noto/emoji_u26be.png
new file mode 100644 (file)
index 0000000..fd6a31b
Binary files /dev/null and b/vendor/noto/emoji_u26be.png differ
diff --git a/vendor/noto/emoji_u26c5.png b/vendor/noto/emoji_u26c5.png
new file mode 100644 (file)
index 0000000..590bb7e
Binary files /dev/null and b/vendor/noto/emoji_u26c5.png differ
diff --git a/vendor/noto/emoji_u26f7.png b/vendor/noto/emoji_u26f7.png
new file mode 100644 (file)
index 0000000..ab5c784
Binary files /dev/null and b/vendor/noto/emoji_u26f7.png differ
diff --git a/vendor/noto/emoji_u26f8.png b/vendor/noto/emoji_u26f8.png
new file mode 100644 (file)
index 0000000..6724046
Binary files /dev/null and b/vendor/noto/emoji_u26f8.png differ
diff --git a/vendor/noto/emoji_u2708.png b/vendor/noto/emoji_u2708.png
new file mode 100644 (file)
index 0000000..5a10b3b
Binary files /dev/null and b/vendor/noto/emoji_u2708.png differ
diff --git a/vendor/noto/emoji_u270f.png b/vendor/noto/emoji_u270f.png
new file mode 100644 (file)
index 0000000..ad2c651
Binary files /dev/null and b/vendor/noto/emoji_u270f.png differ
diff --git a/vendor/noto/emoji_u2764.png b/vendor/noto/emoji_u2764.png
new file mode 100644 (file)
index 0000000..f11655f
Binary files /dev/null and b/vendor/noto/emoji_u2764.png differ