From: E.Smith <31170571+azlm8t@users.noreply.github.com> Date: Sun, 26 Nov 2017 13:24:44 +0000 (+0000) Subject: ui: Use Google Noto Color Emoji for icons for categories/genres. (#4594). X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85c6c08c99b63c4e9aee59ff9fb040d3eb3456e6;p=thirdparty%2Ftvheadend.git ui: Use Google Noto Color Emoji for icons for categories/genres. (#4594). 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. --- diff --git a/src/webui/extjs.c b/src/webui/extjs.c index 871386643..924f33c3d 100644 --- a/src/webui/extjs.c +++ b/src/webui/extjs.c @@ -205,7 +205,9 @@ page_about(http_connection_t *hc, const char *remain, void *opaque) htsbuf_qprintf(hq, "

%s \n\ ExtJS. \ %s \ -FamFamFam\n\ +FamFamFam, "\ +"Google Noto Color Emoji "\ +"(Apache Licence v2.0)\n\

\n", tvh_gettext_lang(lang, N_("Based on software from")), tvh_gettext_lang(lang, N_("Icons from"))); diff --git a/src/webui/static/app/dvr.js b/src/webui/static/app/dvr.js index a6b385059..94cf7abea 100644 --- a/src/webui/static/app/dvr.js +++ b/src/webui/static/app/dvr.js @@ -45,7 +45,7 @@ tvheadend.dvrDetails = function(uuid) { if (duplicate) content += '
' + _('Will be skipped') + '
' + _('because it is a rerun of:') + '
' + tvheadend.niceDate(duplicate * 1000) + '
'; - var icons = tvheadend.getContentTypeIcons({"category" : category, "genre" : genre}); + var icons = tvheadend.getContentTypeIcons({"category" : category, "genre" : genre}, "x-dialog-category-large-icon"); if (icons) content += '
' + icons + '
'; var displayTitle = title; diff --git a/src/webui/static/app/epg.js b/src/webui/static/app/epg.js index ee6cd662b..68085e261 100644 --- a/src/webui/static/app/epg.js +++ b/src/webui/static/app/epg.js @@ -103,7 +103,7 @@ tvheadend.epgDetails = function(event) { if (chicon) content += '
'; - var icons = tvheadend.getContentTypeIcons(event); + var icons = tvheadend.getContentTypeIcons(event, "x-dialog-category-large-icon"); if (icons) content += '
' + icons + '
'; content += '
' + event.title; diff --git a/src/webui/static/app/ext.css b/src/webui/static/app/ext.css index bcc40cb25..894b735b9 100644 --- a/src/webui/static/app/ext.css +++ b/src/webui/static/app/ext.css @@ -667,11 +667,51 @@ 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 { diff --git a/src/webui/static/app/tvheadend.js b/src/webui/static/app/tvheadend.js index 29699bc5f..7af36fd29 100644 --- a/src/webui/static/app/tvheadend.js +++ b/src/webui/static/app/tvheadend.js @@ -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" : "🎞", // Film frames - "news" : "📰", // Newspaper - "series" : "📺", // Television - "sports" : "🏅", // 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" : "🏹", // Bow and Arrow - "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" : "🏎", // Racing car - "baseball" : "⚾", // Baseball - "basketball" : "f3c0;", // Basketball and hoop - "boxing" : "🥊", // Boxing glove - "bus./financial" : "📈", // Chart with upwards trend - "children" : "👶", // Baby - "comedy" : "😀", // Grinning face - "computers" : "💻", // Personal computer - "community" : "👪", // Family - "cooking" : "🔪", // Cooking knife - "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 (not soccer) - "game show" : "🎲", // Game die - "gymnastics" : "🤸", // Person doing cartwheel - "history" : "🏰", // Castle - "holiday" : "🛫", // Airplane departure - "horror" : "💀", // Skull - "horse" : "🐴", // Horse face - "house/garden" : "🏡", // House with garden - "interview" : "💬", // Speech balloon - "law" : "👮", // Police officer - "martial arts" : "🥋", // Martial arts uniform - "medical" : "🚑", // Ambulance - "military" : "🎖", // Military medal - "miniseries" : "🔗", // Link symbol - "motorcycle" : "🏍", // Racing motorcycle - "music" : "🎵", // Musical note - "musical" : "🎵", // Musical note - "mystery" : "🔍", // Left pointing magnifying glass - "nature" : "🐘", // Elephant - "paranormal" : "👻", // Ghost - "poker" : "🂱", // Playing card ace of hearts - "politics" : "🗳", // Ballot box with ballot - "pro wrestling" : "🤼", // Wrestlers - "reality" : "📸", // Camera with flash - "religious" : "🛐", // Place of worship - "romance" : "❤️", // Red Heart - "romantic comedy" : "❤️", // Red Heart - "science fiction" : "👽", // Extraterrestrial alien - "science" : "🔬", // Microscope - "shopping" : "🛍", // Shopping bags - "sitcom": "😀", // Grinning face - "skiing" : "⛷", // Skier - "soap" : "🝔", // Alchemical symbol for soap - "soccer" : "⚽", // Soccer ball - "sports talk" : "💬", // Speech balloon - "spy": "🕵", // Spy - "standup" : "🎤", // Microphone - "swimming" : "🏊", // Swimmer - "talk" : "💬", // Speech balloon - "technology" : "💻", // Personal computer - "tennis" : "🎾", // Tennis racquet and ball - "theater" : "f3ad;", // Performing arts - "travel" : "🛫", // Airplane departure - "war" : "🎖", // Military medal - "weather" : "⛅", // Sun behind cloud - "weightlifting" : "🏋", // Person lifting weights - "western" : "🌵", // 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" : "📺", // 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" : "⛺", // 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" : "🕵", // Spy - "12" : "🏹", // Bow and Arrow - "13" : "👽", // Extraterrestrial alien - "14" : "😀", // Grinning face - "15" : "🝔", // Alchemical symbol for soap - "16" : "❤️", // Red Heart - "18" : "🔞", // No one under eighteen symbol - "33" : "💬", // Speech balloon - "43" : "⚽", // Soccer ball - "44" : "🎾", // Tennis racquet and ball - "73" : "🛐", // Place of worship - "91" : "🐘", // Elephant - "a1" : "🛫", // Airplane departure - "a5" : "🔪", // Cooking knife - "a6" : "🛒", // Shopping trolley - "a7" : "🏡", // 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 = ''; + 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 += "🆕"; // 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 '' + + tvheadend.applyHighResIconPath(ret_new).join("") + + tvheadend.applyHighResIconPath(tvheadend.uniqueArray(ret_major)).join("") + + tvheadend.applyHighResIconPath(tvheadend.uniqueArray(ret_minor)).join("") + ''; } 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 index 000000000..e318ba588 --- /dev/null +++ b/src/webui/static/icons/hires/README @@ -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 index 000000000..09a3ec572 --- /dev/null +++ b/src/webui/static/icons/hires/airplane.png @@ -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 index 000000000..40d397708 --- /dev/null +++ b/src/webui/static/icons/hires/ambulance.png @@ -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 index 000000000..280ed8bd4 --- /dev/null +++ b/src/webui/static/icons/hires/american_football.png @@ -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 index 000000000..250da6b0f --- /dev/null +++ b/src/webui/static/icons/hires/artist_pallette.png @@ -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 index 000000000..7f90be737 --- /dev/null +++ b/src/webui/static/icons/hires/automobile.png @@ -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 index 000000000..577375544 --- /dev/null +++ b/src/webui/static/icons/hires/baby.png @@ -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 index 000000000..53d8375de --- /dev/null +++ b/src/webui/static/icons/hires/ballot_box_with_ballot.png @@ -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 index 000000000..3ba2de74f --- /dev/null +++ b/src/webui/static/icons/hires/baseball.png @@ -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 index 000000000..e4ed0706c --- /dev/null +++ b/src/webui/static/icons/hires/basketball_and_hoop.png @@ -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 index 000000000..4f4630542 --- /dev/null +++ b/src/webui/static/icons/hires/beach_with_umbrella.png @@ -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 index 000000000..17725c9c2 --- /dev/null +++ b/src/webui/static/icons/hires/bow_and_arrow.png @@ -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 index 000000000..a744e3703 --- /dev/null +++ b/src/webui/static/icons/hires/boxing_glove.png @@ -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 index 000000000..4b8e03fea --- /dev/null +++ b/src/webui/static/icons/hires/cactus.png @@ -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 index 000000000..65f35b31d --- /dev/null +++ b/src/webui/static/icons/hires/castle.png @@ -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 index 000000000..34306a945 --- /dev/null +++ b/src/webui/static/icons/hires/chart_with_upwards_trend.png @@ -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 index 000000000..5b620e810 --- /dev/null +++ b/src/webui/static/icons/hires/clapper_board.png @@ -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 index 000000000..0c95438ea --- /dev/null +++ b/src/webui/static/icons/hires/collision_symbol.png @@ -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 index 000000000..6ebbb52a8 --- /dev/null +++ b/src/webui/static/icons/hires/construction_worker.png @@ -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 index 000000000..c5b591da0 --- /dev/null +++ b/src/webui/static/icons/hires/cooking.png @@ -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 index 000000000..7514dc5c6 --- /dev/null +++ b/src/webui/static/icons/hires/couch_and_lamp.png @@ -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 index 000000000..051149c6d --- /dev/null +++ b/src/webui/static/icons/hires/dancer.png @@ -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 index 000000000..cf5460a3a --- /dev/null +++ b/src/webui/static/icons/hires/elephant.png @@ -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 index 000000000..2e9611fcc --- /dev/null +++ b/src/webui/static/icons/hires/extraterrestrial_alien.png @@ -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 index 000000000..de153e7a2 --- /dev/null +++ b/src/webui/static/icons/hires/face_with_tears_of_joy.png @@ -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 index 000000000..84f60e12c --- /dev/null +++ b/src/webui/static/icons/hires/family.png @@ -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 index 000000000..f093e4440 --- /dev/null +++ b/src/webui/static/icons/hires/film_frames.png @@ -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 index 000000000..30784dd7c --- /dev/null +++ b/src/webui/static/icons/hires/fishing_pole_and_fish.png @@ -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 index 000000000..06ee61e24 --- /dev/null +++ b/src/webui/static/icons/hires/game_die.png @@ -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 index 000000000..0c373b786 --- /dev/null +++ b/src/webui/static/icons/hires/ghost.png @@ -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 index 000000000..41adca2a7 --- /dev/null +++ b/src/webui/static/icons/hires/graduation_cap.png @@ -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 index 000000000..0e759c59d --- /dev/null +++ b/src/webui/static/icons/hires/grinning_face.png @@ -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 index 000000000..9e6012e33 --- /dev/null +++ b/src/webui/static/icons/hires/high_heeled_shoe.png @@ -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 index 000000000..b655999f4 --- /dev/null +++ b/src/webui/static/icons/hires/horse_face.png @@ -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 index 000000000..c4ac170aa --- /dev/null +++ b/src/webui/static/icons/hires/house_with_garden.png @@ -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 index 000000000..82bf204ad --- /dev/null +++ b/src/webui/static/icons/hires/ice_skate.png @@ -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 index 000000000..7f69474b8 --- /dev/null +++ b/src/webui/static/icons/hires/left_pointing_magnifying_glass.png @@ -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 index 000000000..43a25f8f1 --- /dev/null +++ b/src/webui/static/icons/hires/link_symbol.png @@ -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 index 000000000..49caf86a4 --- /dev/null +++ b/src/webui/static/icons/hires/martial_arts_uniform.png @@ -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 index 000000000..0f3905896 --- /dev/null +++ b/src/webui/static/icons/hires/microphone.png @@ -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 index 000000000..a76b09c1e --- /dev/null +++ b/src/webui/static/icons/hires/microscope.png @@ -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 index 000000000..aa105b444 --- /dev/null +++ b/src/webui/static/icons/hires/military_medal.png @@ -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 index 000000000..5e4cd8aeb --- /dev/null +++ b/src/webui/static/icons/hires/money_with_wings.png @@ -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 index 000000000..2a30b0cf4 --- /dev/null +++ b/src/webui/static/icons/hires/musical_note.png @@ -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 index 000000000..211d6e0a2 --- /dev/null +++ b/src/webui/static/icons/hires/newspaper.png @@ -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 index 000000000..36ab2acd7 --- /dev/null +++ b/src/webui/static/icons/hires/no_one_under_eighteen_symbol.png @@ -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 index 000000000..8883e2116 --- /dev/null +++ b/src/webui/static/icons/hires/noto @@ -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 index 000000000..bd9e3cb07 --- /dev/null +++ b/src/webui/static/icons/hires/paw_prints.png @@ -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 index 000000000..83484190e --- /dev/null +++ b/src/webui/static/icons/hires/pencil.png @@ -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 index 000000000..59e8f62b5 --- /dev/null +++ b/src/webui/static/icons/hires/performing_arts.png @@ -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 index 000000000..83f9dce36 --- /dev/null +++ b/src/webui/static/icons/hires/person_doing_cartwheel.png @@ -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 index 000000000..34591461d --- /dev/null +++ b/src/webui/static/icons/hires/person_in_lotus_position.png @@ -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 index 000000000..d08dda2c8 --- /dev/null +++ b/src/webui/static/icons/hires/person_lifting_weights.png @@ -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 index 000000000..d9bf684c7 --- /dev/null +++ b/src/webui/static/icons/hires/personal_computer.png @@ -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 index 000000000..da843f4d5 --- /dev/null +++ b/src/webui/static/icons/hires/place_of_worship.png @@ -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 index 000000000..59595906b --- /dev/null +++ b/src/webui/static/icons/hires/police_officer.png @@ -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 index 000000000..c7ff7edb0 --- /dev/null +++ b/src/webui/static/icons/hires/racing_car.png @@ -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 index 000000000..b256f630d --- /dev/null +++ b/src/webui/static/icons/hires/racing_motorcycle.png @@ -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 index 000000000..97e48b0a1 --- /dev/null +++ b/src/webui/static/icons/hires/radio.png @@ -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 index 000000000..c8608902f --- /dev/null +++ b/src/webui/static/icons/hires/red_heart.png @@ -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 index 000000000..8e58f2381 --- /dev/null +++ b/src/webui/static/icons/hires/selfie.png @@ -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 index 000000000..7cb966a65 --- /dev/null +++ b/src/webui/static/icons/hires/shopping_trolley.png @@ -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 index 000000000..701904b7d --- /dev/null +++ b/src/webui/static/icons/hires/skier.png @@ -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 index 000000000..63bcb06bc --- /dev/null +++ b/src/webui/static/icons/hires/skull.png @@ -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 index 000000000..147c3e470 --- /dev/null +++ b/src/webui/static/icons/hires/soccer_ball.png @@ -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 index 000000000..e92a27a28 --- /dev/null +++ b/src/webui/static/icons/hires/spade_suit.png @@ -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 index 000000000..9fba0bc6d --- /dev/null +++ b/src/webui/static/icons/hires/speaking_head_in_silhouette.png @@ -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 index 000000000..004f1dd2f --- /dev/null +++ b/src/webui/static/icons/hires/speech_balloon.png @@ -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 index 000000000..dee69f5d3 --- /dev/null +++ b/src/webui/static/icons/hires/sports_medal.png @@ -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 index 000000000..079a64865 --- /dev/null +++ b/src/webui/static/icons/hires/spy.png @@ -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 index 000000000..a6046d73e --- /dev/null +++ b/src/webui/static/icons/hires/squared_new.png @@ -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 index 000000000..b570fb512 --- /dev/null +++ b/src/webui/static/icons/hires/sun_behind_cloud.png @@ -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 index 000000000..664f34e44 --- /dev/null +++ b/src/webui/static/icons/hires/swimmer.png @@ -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 index 000000000..d8b883b3d --- /dev/null +++ b/src/webui/static/icons/hires/television.png @@ -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 index 000000000..aa690e0d3 --- /dev/null +++ b/src/webui/static/icons/hires/tennis_racquet_and_ball.png @@ -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 index 000000000..ec7372acf --- /dev/null +++ b/src/webui/static/icons/hires/unicorn_face.png @@ -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 index 000000000..e2f0e7205 --- /dev/null +++ b/src/webui/static/icons/hires/wrestlers.png @@ -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 index 000000000..261eeb9e9 --- /dev/null +++ b/vendor/noto/LICENSE @@ -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 index 000000000..2d61b01a6 --- /dev/null +++ b/vendor/noto/URL @@ -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 index 000000000..23ead7314 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 index 000000000..74fd7bfa9 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 index 000000000..5acca8355 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 index 000000000..42e98dd37 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 index 000000000..a40b3addd 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 index 000000000..2296a5862 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 index 000000000..108de91e0 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 index 000000000..5fdb01bc1 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 index 000000000..5de1eb044 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 index 000000000..34813ff63 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 index 000000000..797bbf50f 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 index 000000000..641c34022 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 index 000000000..4fa832633 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 index 000000000..d48b1b6fe 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 index 000000000..4cc926f10 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 index 000000000..54446272b 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 index 000000000..7ca5faa43 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 index 000000000..b830c106a 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 index 000000000..fc71ee390 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 index 000000000..c3a20fb02 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 index 000000000..c1c49df85 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 index 000000000..cbec190d9 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 index 000000000..c6ca55610 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 index 000000000..c3a12221d 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 index 000000000..ee49fd1e0 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 index 000000000..5185228c7 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 index 000000000..b449dd192 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 index 000000000..b19d073b3 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 index 000000000..00360b397 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 index 000000000..2dbbcd192 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 index 000000000..afc1d871e 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 index 000000000..8b69da1a9 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 index 000000000..5dfbd560c 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 index 000000000..5a5a28d4e 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 index 000000000..8ab535f8c 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 index 000000000..8a8f42aaa 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 index 000000000..d86b3e10f 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 index 000000000..dc825cc56 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 index 000000000..d7463b8ef 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 index 000000000..416eb5383 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 index 000000000..7b53ca520 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 index 000000000..9a3dd65d8 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 index 000000000..5c9e13987 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 index 000000000..84d320510 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 index 000000000..c60a0cc89 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 index 000000000..fb3466ea2 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 index 000000000..c802a0ba0 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 index 000000000..d55c51646 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 index 000000000..d8b8ae472 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 index 000000000..432eb850e 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 index 000000000..1eafe2ab4 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 index 000000000..b27b240ca 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 index 000000000..cf890175b 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 index 000000000..cbb52f6fb 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 index 000000000..82f5d5ee4 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 index 000000000..7d67a391d 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 index 000000000..8054345b5 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 index 000000000..62cbfdd14 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 index 000000000..aedf3c32b 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 index 000000000..08f85720a 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 index 000000000..923396019 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 index 000000000..7e2a70391 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 index 000000000..17be53c5c 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 index 000000000..4d2db128d 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 index 000000000..cb8272559 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 index 000000000..8fca920d4 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 index 000000000..f696f0bf4 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 index 000000000..debad3fbb 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 index 000000000..fd6a31b52 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 index 000000000..590bb7ea1 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 index 000000000..ab5c78441 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 index 000000000..672404614 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 index 000000000..5a10b3b53 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 index 000000000..ad2c651aa 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 index 000000000..f11655fbd Binary files /dev/null and b/vendor/noto/emoji_u2764.png differ