Пора в отпуск
6000 миль
за оформление карты
Подробнее
(function(w, d, promoUrl, loc) { var modal, box, closeModalBtn, isModalAnimation, body, html, scrollBarWidth, promoButton; var teaser = d.querySelector('.tinkoff-all-airlines'); if (!teaser) return false; initModal(); preloadImages(['https://leonardo.osnova.io/2755fcfd-f5aa-3496-f0b8-2066ac91e9fa/', 'https://leonardo.osnova.io/0006b8c0-6e01-4b3f-6765-45d1606a2c48/', 'https://leonardo.osnova.io/da12942b-f4f3-2560-40b3-a1c930f4b330/']).then(function() { setTimeout(function() { analyticsEvents(); teaser.classList.add('is-init'); teaser.addEventListener('click', openModal); onDestroy(); }, 100); }); function onDestroy() { var moduleAjaxify = window.Air && window.Air.get('module.ajaxify'); if (moduleAjaxify && moduleAjaxify.on) { moduleAjaxify.on('Before page changed', function() { window.removeEventListener('scroll', scrollHandler); hideModal(); if (teaser) { teaser.removeEventListener('click', openModal); } if (box) { box.removeEventListener('click', stopPropagation); } if (closeModalBtn) { closeModalBtn.removeEventListener('click', closeModalStop); } if (promoButton) { promoButton.removeEventListener('click', clickPromo); } if (modal) { modal.removeEventListener('click', closeModal); modal.remove(); } }); } }; function initModal() { body = d.querySelector('body'); html = d.documentElement; modal = d.querySelector('.tinkoff-all-airlines-promo'); box = d.querySelector('[data-tinkoff-all-airlines-box]'); closeModalBtn = d.querySelector('[data-tinkoff-all-airlines-close]'); isModalAnimation = false; scrollBarWidth = getScrollbarWidth(); box.addEventListener('click', stopPropagation); modal.addEventListener('click', closeModal); closeModalBtn.addEventListener('click', closeModalStop); promoButton = d.querySelector('.tinkoff-all-airlines-promo__button'); if (promoButton) { promoButton.setAttribute('href', promoUrl); promoButton.addEventListener('click', clickPromo); } body.appendChild(modal); }; function clickPromo() { sendEvent('Promo button'); }; function stopPropagation(e) { e.stopPropagation(); }; function closeModalStop(e) { e.preventDefault(); e.stopPropagation(); closeModal(); }; function openModal() { if (isModalAnimation) return false; isModalAnimation = true; sendEvent('Popup', 'Open'); body.style.overflow = 'hidden'; html.style.marginRight = scrollBarWidth + 'px'; modal.classList.remove('is-hidden'); setTimeout(function() { modal.classList.add('is-show'); setTimeout(function() { isModalAnimation = false; }, 300); }, 0); }; function closeModal() { if (isModalAnimation) return false; isModalAnimation = true; hideModal(); sendEvent('Popup', 'Close'); }; function hideModal() { modal.classList.remove('is-show'); setTimeout(function() { modal.classList.add('is-hidden'); body.style.overflow = 'auto'; html.style.marginRight = '0px'; isModalAnimation = false; }, 300); }; function isInViewport(elem) { var bounding = elem.getBoundingClientRect(); return ( bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth) ); }; function preloadImages(urls) { return Promise.all(urls.map(function(url) { return new Promise(function(resolve) { var image = new Image(); image.onload = resolve; image.src = url; }); })); }; function sendEvent(label, state) { state = state ? state : 'Click'; var value = 'Tinkoff All Airlines 650 (' + loc + ') — ' + label + ' — ' + state; console.log(value); if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function getScrollbarWidth() { var outer = d.createElement('div'); outer.style.visibility = 'hidden'; outer.style.overflow = 'scroll'; outer.style.msOverflowStyle = 'scrollbar'; d.body.appendChild(outer); var inner = d.createElement('div'); outer.appendChild(inner); var scrollbarWidth = (outer.offsetWidth - inner.offsetWidth); outer.parentNode.removeChild(outer); return scrollbarWidth; }; function analyticsEvents() { sendEvent('Teaser', 'init'); window.addEventListener('scroll', scrollHandler); scrollHandler(); }; function scrollHandler() { if (isScrolledIntoView(teaser)) { sendEvent('Teaser', 'Show'); window.removeEventListener('scroll', scrollHandler); } }; function isScrolledIntoView(el) { var rect = el.getBoundingClientRect(); var elemTop = rect.top; var elemBottom = rect.bottom; var isVisible = (elemTop >= 0) && (elemBottom <= w.innerHeight); return isVisible; }; }(window, document, 'https://www.tinkoff.ru/cards/credit-cards/all-airlines/promo/form/black-friday/?utm_source=vc0920_cc&utm_medium=ntv.fix&utm_campaign=allairlines.vcbf', 'entry-head'));

Как законно использовать Emoji в веб-приложениях?

Эмодзи сегодня плавно выходят за рамки мессенджеров и частных переписок, занимая, порой, важную роль в дизайне интерфейсов. Потому вопрос их законного использования в интерфейсе приложений возникает сам по себе.

В закладки

Все варианты использования эмодзи в приложении я условно разделил на две группы:

  1. User Generated Content — любой контент, создаваемый пользователями приложения: комментарии, сообщения, публикации и так далее. В данном случае мне не особо важно, как будут отображаться Emoji на разных платформах. Как пользователям привычно, так и будет рендериться самой операционной системой.
  2. User Interface — эмодзи, используемые в дизайне приложения. В этом случае мне важно, чтобы на всех платформах иконки и контроллы в виде смайлов выглядели одинаково. В идеале — так, как они выглядят в экосистеме Apple.
Хочу использовать эмодзи от Apple в виде PNG-изображения. Допустимо ли?

C первым пунктом проблем нет — любые эмодзи, встречающиеся в тексте, генерируются самой ОС и не используют сторонние шрифты/изображения.

Второй пункт находится под вопросом. Он-то и требует комментариев от специалистов (как с юридической точки зрения, так и с технической). Вот перечень возникших вопросов/противоречий:

  1. Шрифты San Francisco и New York от Apple распространяются по свободной лицензии при условии, что они будут использованы исключительно для дизайна макетов приложений для операционных систем Apple. Как обстоят дела с Emoji-сетом, используемым в iOS/MacOS?
  2. Могу ли я использовать Emoji от Apple, экспортировав их как PNG, в интерфейсе веб-проекта, который будет запускаться на различных платформах?

Ниже приведу пару примеров на данную тему, которые мне удалось найти. Но, надо сказать, примеры эти лишь ещё больше запутали меня в вопросе лицензирования Emoji.

Приложение Рокетбанка

В интерфейсе обновлённого приложения Рокетбанка эмодзи играют огромную роль. Они заменяют аватары пользователей, выступают в роли анимации загрузки, отображают статус транзакций и так далее.

Примечательно, что, судя по скриншотам Google Play, в Android-версии приложения используются Emoji от Apple. Если среди читателей VC найдутся представители команды Рокета, которые смогут прояснить ситуацию, будет здорово.

WhatsApp

WhatsApp на всех платформах использует emoji от Apple. Так я думал, пока не наткнулся на пару новостей о том, что команда мессенджера разработала собственный сет Emoji, который визуально крайне близок к смайлам от Apple.

Буду рад услышать любые комментарии на этот счёт. Спасибо.

{ "author_name": "Валерий Алексеев", "author_type": "self", "tags": [], "comments": 3, "likes": 1, "favorites": 12, "is_advertisement": false, "subsite_label": "ask", "id": 75333, "is_wide": false, "is_ugc": true, "date": "Mon, 15 Jul 2019 14:04:30 +0300", "is_special": false }
Объявление на vc.ru
0
3 комментария
Популярные
По порядку
0

Как символы Unicode можете использовать свободно, разумеется, отображение может отличаться на разных устройствах.

Могу ли я использовать Emoji от Apple, экспортировав их как PNG

Нет.

Ответить
0

"Эмодзи сегодня плавно выходят за рамки мессенджеров и частных переписок, занимая, порой, важную роль в дизайне интерфейсов."

- бОльшего маразма представить себе трудно. Пипец до чего дошли.

Ответить

Комментарии

null