diff --git a/src/gui/text/coretext/qcoretextfontdatabase.mm b/src/gui/text/coretext/qcoretextfontdatabase.mm index 2197c83f293..fc551cdba76 100644 --- a/src/gui/text/coretext/qcoretextfontdatabase.mm +++ b/src/gui/text/coretext/qcoretextfontdatabase.mm @@ -327,6 +327,7 @@ struct FontDescription { QFont::Stretch stretch; qreal pointSize; bool fixedPitch; + bool colorFont; QSupportedWritingSystems writingSystems; }; @@ -359,6 +360,9 @@ static void getFontDescription(CTFontDescriptorRef font, FontDescription *fd) fd->style = QFont::StyleNormal; fd->stretch = QFont::Unstretched; fd->fixedPitch = false; + fd->colorFont = false; + + if (QCFType tempFont = CTFontCreateWithFontDescriptor(font, 0.0, 0)) { uint tag = QFont::Tag("OS/2").value(); @@ -393,6 +397,9 @@ static void getFontDescription(CTFontDescriptorRef font, FontDescription *fd) if (CFNumberRef symbolic = (CFNumberRef) CFDictionaryGetValue(styles, kCTFontSymbolicTrait)) { int d; if (CFNumberGetValue(symbolic, kCFNumberSInt32Type, &d)) { + if (d & kCTFontColorGlyphsTrait) + fd->colorFont = true; + if (d & kCTFontMonoSpaceTrait) fd->fixedPitch = true; if (d & kCTFontExpandedTrait) @@ -451,7 +458,7 @@ void QCoreTextFontDatabase::populateFromDescriptor(CTFontDescriptorRef font, con CFRetain(font); QPlatformFontDatabase::registerFont(family, fd.styleName, fd.foundryName, fd.weight, fd.style, fd.stretch, true /* antialiased */, true /* scalable */, 0 /* pixelSize, ignored as font is scalable */, - fd.fixedPitch, fd.writingSystems, (void *)font); + fd.fixedPitch, fd.colorFont, fd.writingSystems, (void *)font); } static NSString * const kQtFontDataAttribute = @"QtFontDataAttribute"; @@ -629,7 +636,18 @@ CTFontDescriptorRef descriptorForStyle(QFont::StyleHint styleHint) } } -QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const +QStringList QCoreTextFontDatabase::fallbacksForScript(QFontDatabasePrivate::ExtendedScript script) const +{ + if (script == QFontDatabasePrivate::Script_Emoji) + return QStringList{} << QStringLiteral(".Apple Color Emoji UI"); + else + return QStringList{}; +} + +QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const { Q_UNUSED(style); @@ -639,7 +657,7 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo QMacAutoReleasePool pool; - QStringList fallbackList; + QStringList fallbackList = fallbacksForScript(script); QCFType fallbackFonts = fallbacksForFamily(family); if (!fallbackFonts || !CFArrayGetCount(fallbackFonts)) { @@ -702,32 +720,34 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo fallbackList.append(QStringLiteral("Apple Symbols")); // Some Noto* fonts are not automatically enumerated by system, despite being the main // fonts for their writing system. - QString hardcodedFont = m_hardcodedFallbackFonts.value(script); - if (!hardcodedFont.isEmpty() && !fallbackList.contains(hardcodedFont)) { - if (!isFamilyPopulated(hardcodedFont)) { - if (!m_privateFamilies.contains(hardcodedFont)) { - QCFType familyDescriptor = descriptorForFamily(hardcodedFont); - QCFType matchingFonts = CTFontDescriptorCreateMatchingFontDescriptors(familyDescriptor, nullptr); - if (matchingFonts) { - const int numFonts = CFArrayGetCount(matchingFonts); - for (int i = 0; i < numFonts; ++i) - const_cast(this)->populateFromDescriptor(CTFontDescriptorRef(CFArrayGetValueAtIndex(matchingFonts, i)), - hardcodedFont); + if (script < int(QChar::ScriptCount)) { + QString hardcodedFont = m_hardcodedFallbackFonts.value(QChar::Script(script)); + if (!hardcodedFont.isEmpty() && !fallbackList.contains(hardcodedFont)) { + if (!isFamilyPopulated(hardcodedFont)) { + if (!m_privateFamilies.contains(hardcodedFont)) { + QCFType familyDescriptor = descriptorForFamily(hardcodedFont); + QCFType matchingFonts = CTFontDescriptorCreateMatchingFontDescriptors(familyDescriptor, nullptr); + if (matchingFonts) { + const int numFonts = CFArrayGetCount(matchingFonts); + for (int i = 0; i < numFonts; ++i) + const_cast(this)->populateFromDescriptor(CTFontDescriptorRef(CFArrayGetValueAtIndex(matchingFonts, i)), + hardcodedFont); - fallbackList.append(hardcodedFont); + fallbackList.append(hardcodedFont); + } + + // Register as private family even if the font is not found, in order to avoid + // redoing the check later. In later calls, the font will then just be ignored. + m_privateFamilies.insert(hardcodedFont); } - - // Register as private family even if the font is not found, in order to avoid - // redoing the check later. In later calls, the font will then just be ignored. - m_privateFamilies.insert(hardcodedFont); + } else { + fallbackList.append(hardcodedFont); } - } else { - fallbackList.append(hardcodedFont); } } #endif - extern QStringList qt_sort_families_by_writing_system(QChar::Script, const QStringList &); + extern QStringList qt_sort_families_by_writing_system(QFontDatabasePrivate::ExtendedScript, const QStringList &); fallbackList = qt_sort_families_by_writing_system(script, fallbackList); qCDebug(lcQpaFonts).nospace() << "Fallback families ordered by script " << script << ": " << fallbackList; diff --git a/src/gui/text/coretext/qcoretextfontdatabase_p.h b/src/gui/text/coretext/qcoretextfontdatabase_p.h index eeea9ad6407..5c8a6ad3b74 100644 --- a/src/gui/text/coretext/qcoretextfontdatabase_p.h +++ b/src/gui/text/coretext/qcoretextfontdatabase_p.h @@ -39,7 +39,7 @@ public: void populateFamily(const QString &familyName) override; void invalidate() override; - QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const override; + QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QFontDatabasePrivate::ExtendedScript script) const override; QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName, QFontDatabasePrivate::ApplicationFont *applicationFont = nullptr) override; void releaseHandle(void *handle) override; bool isPrivateFontFamily(const QString &family) const override; @@ -55,6 +55,7 @@ private: void populateThemeFonts(); void populateFromDescriptor(CTFontDescriptorRef font, const QString &familyName = QString(), QFontDatabasePrivate::ApplicationFont *applicationFont = nullptr); static CFArrayRef fallbacksForFamily(const QString &family); + QStringList fallbacksForScript(QFontDatabasePrivate::ExtendedScript script) const; QHash m_themeFonts; QHash>> m_systemFontDescriptors; diff --git a/src/gui/text/freetype/qfreetypefontdatabase.cpp b/src/gui/text/freetype/qfreetypefontdatabase.cpp index 37381096a25..66c6a510e5d 100644 --- a/src/gui/text/freetype/qfreetypefontdatabase.cpp +++ b/src/gui/text/freetype/qfreetypefontdatabase.cpp @@ -101,6 +101,7 @@ void QFreeTypeFontDatabase::addNamedInstancesForFace(void *face_, QFont::Stretch stretch, QFont::Style style, bool fixedPitch, + bool isColor, const QSupportedWritingSystems &writingSystems, const QByteArray &fileName, const QByteArray &fontData) @@ -181,6 +182,7 @@ void QFreeTypeFontDatabase::addNamedInstancesForFace(void *face_, true, 0, fixedPitch, + isColor, writingSystems, variantFontFile); } @@ -222,6 +224,12 @@ QStringList QFreeTypeFontDatabase::addTTFile(const QByteArray &fontData, const Q } numFaces = face->num_faces; +#if (FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) >= 20501 + bool isColor = FT_HAS_COLOR(face); +#else + bool isColor = false; +#endif + QFont::Weight weight = QFont::Normal; QFont::Style style = QFont::StyleNormal; @@ -335,9 +343,9 @@ QStringList QFreeTypeFontDatabase::addTTFile(const QByteArray &fontData, const Q applicationFont->properties.append(properties); } - registerFont(family, styleName, QString(), weight, style, stretch, true, true, 0, fixedPitch, writingSystems, fontFile); + registerFont(family, styleName, QString(), weight, style, stretch, true, true, 0, fixedPitch, isColor, writingSystems, fontFile); - addNamedInstancesForFace(face, index, family, styleName, weight, stretch, style, fixedPitch, writingSystems, file, fontData); + addNamedInstancesForFace(face, index, family, styleName, weight, stretch, style, fixedPitch, isColor, writingSystems, file, fontData); families.append(family); diff --git a/src/gui/text/freetype/qfreetypefontdatabase_p.h b/src/gui/text/freetype/qfreetypefontdatabase_p.h index 5fcec585d29..bc5cdbffa9f 100644 --- a/src/gui/text/freetype/qfreetypefontdatabase_p.h +++ b/src/gui/text/freetype/qfreetypefontdatabase_p.h @@ -47,7 +47,7 @@ public: static void addNamedInstancesForFace(void *face, int faceIndex, const QString &family, const QString &styleName, QFont::Weight weight, QFont::Stretch stretch, - QFont::Style style, bool fixedPitch, + QFont::Style style, bool fixedPitch, bool isColor, const QSupportedWritingSystems &writingSystems, const QByteArray &fileName, const QByteArray &fontData); diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index b62574154ef..b45e93f37b2 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -383,13 +383,13 @@ void QFontPrivate::unsetFeature(QFont::Tag tag) QFontEngineData::QFontEngineData() : ref(0), fontCacheId(QFontCache::instance()->id()) { - memset(engines, 0, QChar::ScriptCount * sizeof(QFontEngine *)); + memset(engines, 0, QFontDatabasePrivate::ScriptCount * sizeof(QFontEngine *)); } QFontEngineData::~QFontEngineData() { Q_ASSERT(ref.loadRelaxed() == 0); - for (int i = 0; i < QChar::ScriptCount; ++i) { + for (int i = 0; i < QFontDatabasePrivate::ScriptCount; ++i) { if (engines[i]) { if (!engines[i]->ref.deref()) delete engines[i]; @@ -2681,8 +2681,10 @@ void QFont::clearFeatures() d->features.clear(); } -extern QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, - QFont::StyleHint styleHint, QChar::Script script); +extern QStringList qt_fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script); /*! \fn QString QFont::defaultFamily() const @@ -2694,8 +2696,10 @@ extern QStringList qt_fallbacksForFamily(const QString &family, QFont::Style sty */ QString QFont::defaultFamily() const { - const QStringList fallbacks = qt_fallbacksForFamily(QString(), QFont::StyleNormal - , QFont::StyleHint(d->request.styleHint), QChar::Script_Common); + const QStringList fallbacks = qt_fallbacksForFamily(QString(), + QFont::StyleNormal, + QFont::StyleHint(d->request.styleHint), + QFontDatabasePrivate::Script_Common); if (!fallbacks.isEmpty()) return fallbacks.first(); return QString(); @@ -3402,7 +3406,7 @@ void QFontCache::clear() end = engineDataCache.end(); while (it != end) { QFontEngineData *data = it.value(); - for (int i = 0; i < QChar::ScriptCount; ++i) { + for (int i = 0; i < QFontDatabasePrivate::ScriptCount; ++i) { if (data->engines[i]) { if (!data->engines[i]->ref.deref()) { Q_ASSERT(engineCacheCount.value(data->engines[i]) == 0); diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h index 2261f58d5f3..d1509e4a251 100644 --- a/src/gui/text/qfont_p.h +++ b/src/gui/text/qfont_p.h @@ -24,6 +24,7 @@ #include "QtCore/qstringlist.h" #include #include "private/qfixed_p.h" +#include "private/qfontdatabase_p.h" QT_BEGIN_NAMESPACE @@ -153,8 +154,7 @@ public: QAtomicInt ref; const int fontCacheId; - QFontEngine *engines[QChar::ScriptCount]; - + QFontEngine *engines[QFontDatabasePrivate::ScriptCount]; private: Q_DISABLE_COPY_MOVE(QFontEngineData) }; diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 28a504117a7..398fb70d232 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -413,6 +413,8 @@ static bool familySupportsWritingSystem(QtFontFamily *family, size_t writingSyst Q_GUI_EXPORT QFontDatabase::WritingSystem qt_writing_system_for_script(int script) { + if (script >= QChar::ScriptCount) + return QFontDatabase::Any; return QFontDatabase::WritingSystem(std::find(scriptForWritingSystem, scriptForWritingSystem + QFontDatabase::WritingSystemsCount, script) - scriptForWritingSystem); @@ -537,7 +539,7 @@ QFontDatabasePrivate *QFontDatabasePrivate::instance() void qt_registerFont(const QString &familyName, const QString &stylename, const QString &foundryname, int weight, QFont::Style style, int stretch, bool antialiased, - bool scalable, int pixelSize, bool fixedPitch, + bool scalable, int pixelSize, bool fixedPitch, bool colorFont, const QSupportedWritingSystems &writingSystems, void *handle) { auto *d = QFontDatabasePrivate::instance(); @@ -549,6 +551,7 @@ void qt_registerFont(const QString &familyName, const QString &stylename, styleKey.stretch = stretch; QtFontFamily *f = d->family(familyName, QFontDatabasePrivate::EnsureCreated); f->fixedPitch = fixedPitch; + f->colorFont = colorFont; for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) { if (writingSystems.supported(QFontDatabase::WritingSystem(i))) @@ -620,7 +623,10 @@ bool qt_isFontFamilyPopulated(const QString &familyName) Default implementation returns a list of fonts for which \a style and \a script support has been reported during the font database population. */ -QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const +QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const { Q_UNUSED(family); Q_UNUSED(styleHint); @@ -659,7 +665,10 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo return preferredFallbacks + otherFallbacks; } -static QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) +static QStringList fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) { QMutexLocker locker(fontDatabaseMutex()); auto *db = QFontDatabasePrivate::ensureFontDatabase(); @@ -670,7 +679,7 @@ static QStringList fallbacksForFamily(const QString &family, QFont::Style style, return *fallbacks; // make sure that the db has all fallback families - QStringList userFallbacks = db->applicationFallbackFontFamilies.value(script == QChar::Script_Latin ? QChar::Script_Common : script); + QStringList userFallbacks = db->applicationFallbackFontFamilies(script == QFontDatabasePrivate::Script_Latin ? QFontDatabasePrivate::Script_Common : script); QStringList retList = userFallbacks + QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fallbacksForFamily(family,style,styleHint,script); QStringList::iterator i; @@ -693,7 +702,7 @@ static QStringList fallbacksForFamily(const QString &family, QFont::Style style, return retList; } -QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) +QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QFontDatabasePrivate::ExtendedScript script) { QMutexLocker locker(fontDatabaseMutex()); return fallbacksForFamily(family, style, styleHint, script); @@ -722,10 +731,10 @@ QFontEngine *QFontDatabasePrivate::loadSingleEngine(int script, QFontCache::Key key(def,script); QFontEngine *engine = fontCache->findEngine(key); if (!engine) { - const bool cacheForCommonScript = script != QChar::Script_Common + const bool cacheForCommonScript = script != QFontDatabasePrivate::Script_Common && (family->writingSystems[QFontDatabase::Latin] & QtFontFamily::Supported) != 0; - if (Q_LIKELY(cacheForCommonScript)) { + if (Q_LIKELY(cacheForCommonScript) && script < QChar::ScriptCount) { // fast path: check if engine was loaded for another script key.script = QChar::Script_Common; engine = fontCache->findEngine(key); @@ -757,7 +766,7 @@ QFontEngine *QFontDatabasePrivate::loadSingleEngine(int script, engine = pfdb->fontEngine(def, size->handle); if (engine) { // Also check for OpenType tables when using complex scripts - if (!engine->supportsScript(QChar::Script(script))) { + if (script < QChar::ScriptCount && !engine->supportsScript(QChar::Script(script))) { qCInfo(lcFontDb, "OpenType support missing for \"%ls\", script %d", qUtf16Printable(def.families.constFirst()), script); if (engine->ref.loadRelaxed() == 0) @@ -789,7 +798,8 @@ QFontEngine *QFontDatabasePrivate::loadEngine(int script, const QFontDef &reques Q_TRACE(QFontDatabase_loadEngine, request.families.join(QLatin1Char(';')), request.pointSize); QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); - QFontEngineMulti *pfMultiEngine = pfdb->fontEngineMulti(engine, QChar::Script(script)); + QFontEngineMulti *pfMultiEngine = pfdb->fontEngineMulti(engine, + QFontDatabasePrivate::ExtendedScript(script)); if (!request.fallBackFamilies.isEmpty()) { QStringList fallbacks = request.fallBackFamilies; @@ -797,7 +807,10 @@ QFontEngine *QFontDatabasePrivate::loadEngine(int script, const QFontDef &reques if (styleHint == QFont::AnyStyle && request.fixedPitch) styleHint = QFont::TypeWriter; - fallbacks += fallbacksForFamily(family->name, QFont::Style(style->key.style), styleHint, QChar::Script(script)); + fallbacks += fallbacksForFamily(family->name, + QFont::Style(style->key.style), + styleHint, + QFontDatabasePrivate::ExtendedScript(script)); pfMultiEngine->setFallbackFamiliesList(fallbacks); } @@ -877,8 +890,10 @@ unsigned int QFontDatabasePrivate::bestFoundry(int script, unsigned int score, i desc->style = nullptr; desc->size = nullptr; - - qCDebug(lcFontMatch, " REMARK: looking for best foundry for family '%s' [%d]", family->name.toLatin1().constData(), family->count); + qCDebug(lcFontMatch, " REMARK: looking for best foundry for family '%s'%s [%d]", + family->name.toLatin1().constData(), + family->colorFont ? " (color font)" : "", + family->count); for (int x = 0; x < family->count; ++x) { QtFontFoundry *foundry = family->foundries[x]; @@ -1068,6 +1083,10 @@ int QFontDatabasePrivate::match(int script, const QFontDef &request, const QStri if (writingSystem != QFontDatabase::Any && !familySupportsWritingSystem(test.family, writingSystem)) continue; + // Check if we require a color font and check for match + if (script == QFontDatabasePrivate::Script_Emoji && !test.family->colorFont) + continue; + // as we know the script is supported, we can be sure // to find a matching font here. unsigned int newscore = @@ -2202,6 +2221,48 @@ bool QFontDatabasePrivate::isApplicationFont(const QString &fileName) return false; } +void QFontDatabasePrivate::setApplicationFallbackFontFamilies(ExtendedScript script, const QStringList &familyNames) +{ + applicationFallbackFontFamiliesHash[script] = familyNames; + + QFontCache::instance()->clear(); + fallbacksCache.clear(); +} + +QStringList QFontDatabasePrivate::applicationFallbackFontFamilies(ExtendedScript script) +{ + return applicationFallbackFontFamiliesHash.value(script); +} + +bool QFontDatabasePrivate::removeApplicationFallbackFontFamily(ExtendedScript script, const QString &familyName) +{ + auto it = applicationFallbackFontFamiliesHash.find(script); + if (it != applicationFallbackFontFamiliesHash.end()) { + if (it->removeAll(familyName) > 0) { + if (it->isEmpty()) + it = applicationFallbackFontFamiliesHash.erase(it); + QFontCache::instance()->clear(); + fallbacksCache.clear(); + return true; + } + } + + return false; +} + +void QFontDatabasePrivate::addApplicationFallbackFontFamily(ExtendedScript script, const QString &familyName) +{ + auto it = applicationFallbackFontFamiliesHash.find(script); + if (it == applicationFallbackFontFamiliesHash.end()) + it = applicationFallbackFontFamiliesHash.insert(script, QStringList{}); + + it->prepend(familyName); + + QFontCache::instance()->clear(); + fallbacksCache.clear(); +} + + /*! \since 4.2 @@ -2398,7 +2459,7 @@ void QFontDatabase::addApplicationFallbackFontFamily(QChar::Script script, const { QMutexLocker locker(fontDatabaseMutex()); - if (script < QChar::Script_Common) { + if (script < QChar::Script_Common || script >= QChar::ScriptCount) { qCWarning(lcFontDb) << "Invalid script passed to addApplicationFallbackFontFamily:" << script; return; } @@ -2407,14 +2468,7 @@ void QFontDatabase::addApplicationFallbackFontFamily(QChar::Script script, const script = QChar::Script_Common; auto *db = QFontDatabasePrivate::instance(); - auto it = db->applicationFallbackFontFamilies.find(script); - if (it == db->applicationFallbackFontFamilies.end()) - it = db->applicationFallbackFontFamilies.insert(script, QStringList{}); - - it->prepend(familyName); - - QFontCache::instance()->clear(); - db->fallbacksCache.clear(); + db->addApplicationFallbackFontFamily(QFontDatabasePrivate::ExtendedScript(script), familyName); } /*! @@ -2431,7 +2485,7 @@ bool QFontDatabase::removeApplicationFallbackFontFamily(QChar::Script script, co { QMutexLocker locker(fontDatabaseMutex()); - if (script < QChar::Script_Common) { + if (script < QChar::Script_Common || script >= QChar::ScriptCount) { qCWarning(lcFontDb) << "Invalid script passed to removeApplicationFallbackFontFamily:" << script; return false; } @@ -2440,18 +2494,8 @@ bool QFontDatabase::removeApplicationFallbackFontFamily(QChar::Script script, co script = QChar::Script_Common; auto *db = QFontDatabasePrivate::instance(); - auto it = db->applicationFallbackFontFamilies.find(script); - if (it != db->applicationFallbackFontFamilies.end()) { - if (it->removeAll(familyName) > 0) { - if (it->isEmpty()) - it = db->applicationFallbackFontFamilies.erase(it); - QFontCache::instance()->clear(); - db->fallbacksCache.clear(); - return true; - } - } - - return false; + return db->removeApplicationFallbackFontFamily(QFontDatabasePrivate::ExtendedScript(script), + familyName); } /*! @@ -2471,7 +2515,7 @@ void QFontDatabase::setApplicationFallbackFontFamilies(QChar::Script script, con { QMutexLocker locker(fontDatabaseMutex()); - if (script < QChar::Script_Common) { + if (script < QChar::Script_Common || script >= QChar::ScriptCount) { qCWarning(lcFontDb) << "Invalid script passed to setApplicationFallbackFontFamilies:" << script; return; } @@ -2480,10 +2524,8 @@ void QFontDatabase::setApplicationFallbackFontFamilies(QChar::Script script, con script = QChar::Script_Common; auto *db = QFontDatabasePrivate::instance(); - db->applicationFallbackFontFamilies[script] = familyNames; - - QFontCache::instance()->clear(); - db->fallbacksCache.clear(); + db->setApplicationFallbackFontFamilies(QFontDatabasePrivate::ExtendedScript(script), + familyNames); } /*! @@ -2498,11 +2540,81 @@ QStringList QFontDatabase::applicationFallbackFontFamilies(QChar::Script script) { QMutexLocker locker(fontDatabaseMutex()); + if (script >= QChar::ScriptCount) { + qCWarning(lcFontDb) << "Invalid script passed to applicationFallbackFontFamilies:" << script; + return QStringList{}; + } + if (script == QChar::Script_Latin) script = QChar::Script_Common; auto *db = QFontDatabasePrivate::instance(); - return db->applicationFallbackFontFamilies.value(script); + return db->applicationFallbackFontFamilies(QFontDatabasePrivate::ExtendedScript(script)); +} + +/*! + \since 6.9 + + Adds \a familyName as an application-defined emoji font. + + For displaying multi-color emojis or emoji sequences, Qt will by default prefer the system + default emoji font. Sometimes the application may want to override the default, either to + achieve a specific visual style or to show emojis that are not supported by the system. + + \sa removeApplicationEmojiFontFamily, setApplicationEmojiFontFamilies(), applicationEmojiFontFamilies(), addApplicationFallbackFontFamily() +*/ +void QFontDatabase::addApplicationEmojiFontFamily(const QString &familyName) +{ + QMutexLocker locker(fontDatabaseMutex()); + auto *db = QFontDatabasePrivate::instance(); + db->addApplicationFallbackFontFamily(QFontDatabasePrivate::Script_Emoji, familyName); +} + +/*! + \since 6.9 + + Removes \a familyName from the list of application-defined emoji fonts, + provided that it has previously been added with \l{addApplicationEmojiFontFamily()}. + + Returns true if the family name was in the list and false if it was not. + + \sa addApplicationEmojiFontFamily(), setApplicationEmojiFontFamilies(), applicationEmojiFontFamilies(), removeApplicationFallbackFontFamily() +*/ +bool QFontDatabase::removeApplicationEmojiFontFamily(const QString &familyName) +{ + QMutexLocker locker(fontDatabaseMutex()); + auto *db = QFontDatabasePrivate::instance(); + return db->removeApplicationFallbackFontFamily(QFontDatabasePrivate::Script_Emoji, + familyName); +} + +/*! + \since 6.9 + + Sets the list of application-defined emoji fonts to \a familyNames. + + \sa addApplicationEmojiFontFamily(), removeApplicationEmojiFontFamily(), applicationEmojiFontFamilies(), setApplicationFallbackFontFamilies() +*/ +void QFontDatabase::setApplicationEmojiFontFamilies(const QStringList &familyNames) +{ + QMutexLocker locker(fontDatabaseMutex()); + auto *db = QFontDatabasePrivate::instance(); + db->setApplicationFallbackFontFamilies(QFontDatabasePrivate::Script_Emoji, + familyNames); +} + +/*! + \since 6.9 + + Returns the list of application-defined emoji font families. + + \sa addApplicationEmojiFontFamily(), removeApplicationEmojiFontFamily(), setApplicationEmojiFontFamilies(), applicationFallbackFontFamilies() +*/ +QStringList QFontDatabase::applicationEmojiFontFamilies() +{ + QMutexLocker locker(fontDatabaseMutex()); + auto *db = QFontDatabasePrivate::instance(); + return db->applicationFallbackFontFamilies(QFontDatabasePrivate::Script_Emoji); } /*! @@ -2559,12 +2671,27 @@ QFontEngine *QFontDatabasePrivate::findFont(const QFontDef &req, QtFontDesc desc; QList blackListed; unsigned int score = UINT_MAX; - int index = match(multi ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed, &score); + + // 1. + // We start by looking up the family name and finding the best style/foundry. For multi fonts + // we always want the requested font to be on top, even if it does not support the selected + // script, since the fallback mechanism will handle this later. For NoFontMerging fonts, we pass + // in the script in order to prefer foundries that support the script. If none is found, we will + // retry with Script_Common later. Note that Script_Emoji is special. This means the Unicode + // algorithm has determined that we should use a color font. If the selected font is not + // a color font, we use the fall back mechanism to find one, since we want to prefer *any* color + // font over a non-color font in this case. + int index = match(multi && script != QFontDatabasePrivate::Script_Emoji ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed, &score); + + // 2. + // If no font was found or it was not a perfect match, we let the database populate family + // aliases and try again. if (score > 0 && QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFamilyAliases(family_name)) { // We populated family aliases (e.g. localized families), so try again - index = match(multi ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed); + index = match(multi && script != QFontDatabasePrivate::Script_Emoji ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed); } + // 3. // If we do not find a match and NoFontMerging is set, use the requested font even if it does // not support the script. // @@ -2589,6 +2716,10 @@ QFontEngine *QFontDatabasePrivate::findFont(const QFontDef &req, qCDebug(lcFontMatch, " NO MATCH FOUND\n"); } + // 4. + // If no font matching the script + family exists, we go via the fallback mechanism. This + // happens when the family does not exist or if we want a color font and the requested font + // is not. if (!engine) { if (!requestFamily.isEmpty()) { QFont::StyleHint styleHint = QFont::StyleHint(request.styleHint); @@ -2599,32 +2730,49 @@ QFontEngine *QFontDatabasePrivate::findFont(const QFontDef &req, + fallbacksForFamily(requestFamily, QFont::Style(request.style), styleHint, - QChar::Script(script)); + QFontDatabasePrivate::ExtendedScript(script)); if (script > QChar::Script_Common) fallbacks += QString(); // Find the first font matching the specified script. - for (int i = 0; !engine && i < fallbacks.size(); i++) { - QFontDef def = request; - def.families = QStringList(fallbacks.at(i)); - QFontCache::Key key(def, script, multi ? 1 : 0); - engine = fontCache->findEngine(key); - if (!engine) { - QtFontDesc desc; - do { - index = match(multi ? QChar::Script_Common : script, def, def.families.constFirst(), ""_L1, &desc, blackListed); - if (index >= 0) { - QFontDef loadDef = def; - if (loadDef.families.isEmpty()) - loadDef.families = QStringList(desc.family->name); - engine = loadEngine(script, loadDef, desc.family, desc.foundry, desc.style, desc.size); - if (engine) - initFontDef(desc, loadDef, &engine->fontDef, multi); - else - blackListed.append(index); - } - } while (index >= 0 && !engine); + auto findMatchingFallback = [&](int xscript) { + for (int i = 0; !engine && i < fallbacks.size(); i++) { + QFontDef def = request; + + def.families = QStringList(fallbacks.at(i)); + QFontCache::Key key(def, xscript, multi ? 1 : 0); + engine = fontCache->findEngine(key); + if (!engine) { + QtFontDesc desc; + do { + index = match(xscript, + def, + def.families.constFirst(), + ""_L1, + &desc, + blackListed); + + if (index >= 0) { + QFontDef loadDef = def; + if (loadDef.families.isEmpty()) + loadDef.families = QStringList(desc.family->name); + engine = loadEngine(xscript, loadDef, desc.family, desc.foundry, desc.style, desc.size); + if (engine) + initFontDef(desc, loadDef, &engine->fontDef, multi); + else + blackListed.append(index); + } + } while (index >= 0 && !engine); + } } - } + }; + + findMatchingFallback(multi && script != QFontDatabasePrivate::Script_Emoji ? QChar::Script_Common: script); + + // If we are looking for a color font and there are no color fonts on the system, + // we will end up here, for one final pass. This is a rare occurrence so we accept + // and extra pass on the fallbacks for this. + if (!engine && script == QFontDatabasePrivate::Script_Emoji) + findMatchingFallback(QChar::Script_Common); } if (!engine) { @@ -2721,7 +2869,7 @@ void QFontDatabasePrivate::load(const QFontPrivate *d, int script) Q_ASSERT(fe); if (fe->symbol || (d->request.styleStrategy & QFont::NoFontMerging)) { - for (int i = 0; i < QChar::ScriptCount; ++i) { + for (int i = 0; i < QFontDatabasePrivate::ScriptCount; ++i) { if (!d->engineData->engines[i]) { d->engineData->engines[i] = fe; fe->ref.ref(); @@ -2738,11 +2886,13 @@ QString QFontDatabasePrivate::resolveFontFamilyAlias(const QString &family) return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(family); } -Q_GUI_EXPORT QStringList qt_sort_families_by_writing_system(QChar::Script script, const QStringList &families) +Q_GUI_EXPORT QStringList qt_sort_families_by_writing_system(QFontDatabasePrivate::ExtendedScript script, + const QStringList &families) { size_t writingSystem = qt_writing_system_for_script(script); - if (writingSystem == QFontDatabase::Any - || writingSystem >= QFontDatabase::WritingSystemsCount) { + if (script != QFontDatabasePrivate::Script_Emoji + && (writingSystem == QFontDatabase::Any + || writingSystem >= QFontDatabase::WritingSystemsCount)) { return families; } @@ -2762,7 +2912,8 @@ Q_GUI_EXPORT QStringList qt_sort_families_by_writing_system(QChar::Script script uint order = i; if (testFamily == nullptr - || !familySupportsWritingSystem(testFamily, writingSystem)) { + || (script == QFontDatabasePrivate::Script_Emoji && !testFamily->colorFont) + || (script != QFontDatabasePrivate::Script_Emoji && !familySupportsWritingSystem(testFamily, writingSystem))) { order |= 1u << 31; } diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h index 91a534265e7..cd5cc9729f7 100644 --- a/src/gui/text/qfontdatabase.h +++ b/src/gui/text/qfontdatabase.h @@ -117,6 +117,11 @@ public: static void setApplicationFallbackFontFamilies(QChar::Script, const QStringList &familyNames); static QStringList applicationFallbackFontFamilies(QChar::Script script); + static void addApplicationEmojiFontFamily(const QString &familyName); + static bool removeApplicationEmojiFontFamily(const QString &familyName); + static void setApplicationEmojiFontFamilies(const QStringList &familyNames); + static QStringList applicationEmojiFontFamilies(); + static QFont systemFont(SystemFont type); }; diff --git a/src/gui/text/qfontdatabase_p.h b/src/gui/text/qfontdatabase_p.h index 72fda436e80..58feb9457b9 100644 --- a/src/gui/text/qfontdatabase_p.h +++ b/src/gui/text/qfontdatabase_p.h @@ -33,7 +33,7 @@ struct QtFontFallbacksCacheKey QString family; QFont::Style style; QFont::StyleHint styleHint; - QChar::Script script; + int script; }; inline bool operator==(const QtFontFallbacksCacheKey &lhs, const QtFontFallbacksCacheKey &rhs) noexcept @@ -155,6 +155,7 @@ struct Q_GUI_EXPORT QtFontFamily : populated(false), fixedPitch(false), + colorFont(false), name(n), count(0), foundries(nullptr) { memset(writingSystems, 0, sizeof(writingSystems)); @@ -167,6 +168,7 @@ struct Q_GUI_EXPORT QtFontFamily bool populated : 1; bool fixedPitch : 1; + bool colorFont : 1; QString name; QStringList aliases; @@ -202,13 +204,21 @@ public: EnsurePopulated }; + // Expands QChar::Script by adding a special "script" for emoji sequences + enum ExtendedScript { + Script_Common = QChar::Script_Common, + Script_Latin = QChar::Script_Latin, + Script_Emoji = QChar::ScriptCount, + ScriptCount + }; + QtFontFamily *family(const QString &f, FamilyRequestFlags flags = EnsurePopulated); int count; QtFontFamily **families; bool populated = false; - QHash applicationFallbackFontFamilies; + QHash applicationFallbackFontFamiliesHash; QCache fallbacksCache; struct ApplicationFont { @@ -236,21 +246,30 @@ public: int addAppFont(const QByteArray &fontData, const QString &fileName); bool isApplicationFont(const QString &fileName); + void setApplicationFallbackFontFamilies(ExtendedScript script, const QStringList &familyNames); + QStringList applicationFallbackFontFamilies(ExtendedScript script); + bool removeApplicationFallbackFontFamily(ExtendedScript script, const QString &familyName); + void addApplicationFallbackFontFamily(ExtendedScript script, const QString &familyName); + static QFontDatabasePrivate *instance(); static void parseFontName(const QString &name, QString &foundry, QString &family); static QString resolveFontFamilyAlias(const QString &family); static QFontEngine *findFont(const QFontDef &request, - int script /* QChar::Script */, + int script /* QFontDatabasePrivate::ExtendedScript */, bool preferScriptOverFamily = false); - static void load(const QFontPrivate *d, int script /* QChar::Script */); + static void load(const QFontPrivate *d, int script /* QFontDatabasePrivate::ExtendedScript */); static QFontDatabasePrivate *ensureFontDatabase(); void invalidate(); private: - static int match(int script, const QFontDef &request, const QString &family_name, - const QString &foundry_name, QtFontDesc *desc, const QList &blacklistedFamilies, + static int match(int script, + const QFontDef &request, + const QString &family_name, + const QString &foundry_name, + QtFontDesc *desc, + const QList &blacklistedFamilies, unsigned int *resultingScore = nullptr); static unsigned int bestFoundry(int script, unsigned int score, int styleStrategy, diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index ed2f4ac54fd..e5e6f3b8cbf 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -1747,7 +1747,7 @@ QFontEngineMulti::~QFontEngineMulti() } } -QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script); +QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QFontDatabasePrivate::ExtendedScript script); void QFontEngineMulti::ensureFallbackFamiliesQueried() { @@ -1757,7 +1757,7 @@ void QFontEngineMulti::ensureFallbackFamiliesQueried() setFallbackFamiliesList(qt_fallbacksForFamily(fontDef.families.constFirst(), QFont::Style(fontDef.style), styleHint, - QChar::Script(m_script))); + QFontDatabasePrivate::ExtendedScript(m_script))); } void QFontEngineMulti::setFallbackFamiliesList(const QStringList &fallbackFamilies) @@ -1805,7 +1805,7 @@ QFontEngine *QFontEngineMulti::loadEngine(int at) // info about the actual script of the characters may have been discarded, // so we do not check for writing system support, but instead just load // the family indiscriminately. - if (QFontEngine *engine = QFontDatabasePrivate::findFont(request, QChar::Script_Common)) { + if (QFontEngine *engine = QFontDatabasePrivate::findFont(request, QFontDatabasePrivate::Script_Common)) { engine->fontDef.weight = request.weight; if (request.style > QFont::StyleNormal) engine->fontDef.style = request.style; @@ -2381,7 +2381,7 @@ QFontEngine *QFontEngineMulti::createMultiFontEngine(QFontEngine *fe, int script ++it; } if (!engine) { - engine = QGuiApplicationPrivate::instance()->platformIntegration()->fontDatabase()->fontEngineMulti(fe, QChar::Script(script)); + engine = QGuiApplicationPrivate::instance()->platformIntegration()->fontDatabase()->fontEngineMulti(fe, QFontDatabasePrivate::ExtendedScript(script)); fc->insertEngine(key, engine, /* insertMulti */ !faceIsLocal); } Q_ASSERT(engine); diff --git a/src/gui/text/qplatformfontdatabase.cpp b/src/gui/text/qplatformfontdatabase.cpp index a146254f68a..3d3f3c30985 100644 --- a/src/gui/text/qplatformfontdatabase.cpp +++ b/src/gui/text/qplatformfontdatabase.cpp @@ -24,7 +24,7 @@ Q_LOGGING_CATEGORY(lcQpaFonts, "qt.qpa.fonts") void qt_registerFont(const QString &familyname, const QString &stylename, const QString &foundryname, int weight, QFont::Style style, int stretch, bool antialiased, - bool scalable, int pixelSize, bool fixedPitch, + bool scalable, int pixelSize, bool fixedPitch, bool colorFont, const QSupportedWritingSystems &writingSystems, void *hanlde); void qt_registerFontFamily(const QString &familyName); @@ -55,7 +55,7 @@ bool qt_isFontFamilyPopulated(const QString &familyName); void QPlatformFontDatabase::registerFont(const QString &familyname, const QString &stylename, const QString &foundryname, QFont::Weight weight, QFont::Style style, QFont::Stretch stretch, bool antialiased, - bool scalable, int pixelSize, bool fixedPitch, + bool scalable, int pixelSize, bool fixedPitch, bool colorFont, const QSupportedWritingSystems &writingSystems, void *usrPtr) { if (scalable) @@ -63,7 +63,7 @@ void QPlatformFontDatabase::registerFont(const QString &familyname, const QStrin qt_registerFont(familyname, stylename, foundryname, weight, style, stretch, antialiased, scalable, pixelSize, - fixedPitch, writingSystems, usrPtr); + fixedPitch, colorFont, writingSystems, usrPtr); } /*! @@ -271,7 +271,8 @@ void QPlatformFontDatabase::invalidate() option to fall back to the fonts given by \a fallbacks if \a fontEngine does not support a certain character. */ -QFontEngineMulti *QPlatformFontDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) +QFontEngineMulti *QPlatformFontDatabase::fontEngineMulti(QFontEngine *fontEngine, + QFontDatabasePrivate::ExtendedScript script) { return new QFontEngineMulti(fontEngine, script); } diff --git a/src/gui/text/qplatformfontdatabase.h b/src/gui/text/qplatformfontdatabase.h index f8f4d3bfaea..407ecbc27c1 100644 --- a/src/gui/text/qplatformfontdatabase.h +++ b/src/gui/text/qplatformfontdatabase.h @@ -20,7 +20,6 @@ #include #include #include -#include #include QT_BEGIN_NAMESPACE @@ -72,12 +71,12 @@ public: virtual void populateFamily(const QString &familyName); virtual void invalidate(); - virtual QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; + virtual QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QFontDatabasePrivate::ExtendedScript script) const; virtual QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName, QFontDatabasePrivate::ApplicationFont *font = nullptr); virtual QFontEngine *fontEngine(const QFontDef &fontDef, void *handle); virtual QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference); - virtual QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script); + virtual QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QFontDatabasePrivate::ExtendedScript script); virtual void releaseHandle(void *handle); virtual QString fontDir() const; @@ -99,7 +98,7 @@ public: static void registerFont(const QString &familyname, const QString &stylename, const QString &foundryname, QFont::Weight weight, QFont::Style style, QFont::Stretch stretch, bool antialiased, - bool scalable, int pixelSize, bool fixedPitch, + bool scalable, int pixelSize, bool fixedPitch, bool colorFont, const QSupportedWritingSystems &writingSystems, void *handle); static void registerFontFamily(const QString &familyName); diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index e3af305760e..99ed6127eb3 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1409,8 +1409,8 @@ void QTextEngine::shapeText(int item) const QFont font = f.font(); # if QT_CONFIG(harfbuzz) kerningEnabled = font.kerning(); - shapingEnabled = QFontEngine::scriptRequiresOpenType(QChar::Script(si.analysis.script)) - || (font.styleStrategy() & QFont::PreferNoShaping) == 0; + shapingEnabled = (si.analysis.script < QChar::ScriptCount && QFontEngine::scriptRequiresOpenType(QChar::Script(si.analysis.script))) + || (font.styleStrategy() & QFont::PreferNoShaping) == 0; # endif wordSpacing = QFixed::fromReal(font.wordSpacing()); letterSpacing = QFixed::fromReal(font.letterSpacing()); @@ -1422,8 +1422,8 @@ void QTextEngine::shapeText(int item) const QFont font = this->font(si); #if QT_CONFIG(harfbuzz) kerningEnabled = font.d->kerning; - shapingEnabled = QFontEngine::scriptRequiresOpenType(QChar::Script(si.analysis.script)) - || (font.d->request.styleStrategy & QFont::PreferNoShaping) == 0; + shapingEnabled = (si.analysis.script < QChar::ScriptCount && QFontEngine::scriptRequiresOpenType(QChar::Script(si.analysis.script))) + || (font.d->request.styleStrategy & QFont::PreferNoShaping) == 0; #endif letterSpacingIsAbsolute = font.d->letterSpacingIsAbsolute; letterSpacing = font.d->letterSpacing; @@ -1619,7 +1619,9 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, hb_segment_properties_t props = HB_SEGMENT_PROPERTIES_DEFAULT; props.direction = si.analysis.bidiLevel % 2 ? HB_DIRECTION_RTL : HB_DIRECTION_LTR; - QChar::Script script = QChar::Script(si.analysis.script); + QChar::Script script = si.analysis.script < QChar::ScriptCount + ? QChar::Script(si.analysis.script) + : QChar::Script_Common; props.script = hb_qt_script_to_script(script); // ### TODO get_default_for_script? props.language = hb_language_get_default(); // use default language from locale @@ -1923,8 +1925,38 @@ void QTextEngine::validate() const layoutData->string.insert(specialData->preeditPosition, specialData->preeditText); } +#if !defined(QT_NO_EMOJISEGMENTER) +namespace { + + enum CharacterCategory { + EMOJI = 0, + EMOJI_TEXT_PRESENTATION = 1, + EMOJI_EMOJI_PRESENTATION = 2, + EMOJI_MODIFIER_BASE = 3, + EMOJI_MODIFIER = 4, + EMOJI_VS_BASE = 5, + REGIONAL_INDICATOR = 6, + KEYCAP_BASE = 7, + COMBINING_ENCLOSING_KEYCAP = 8, + COMBINING_ENCLOSING_CIRCLE_BACKSLASH = 9, + ZWJ = 10, + VS15 = 11, + VS16 = 12, + TAG_BASE = 13, + TAG_SEQUENCE = 14, + TAG_TERM = 15, + OTHER = 16 + }; + + typedef CharacterCategory *emoji_text_iter_t; + + #include "../../3rdparty/emoji-segmenter/emoji_presentation_scanner.c" +} +#endif + void QTextEngine::itemize() const { + static bool disableEmojiSegmenter = qEnvironmentVariableIntValue("QT_DISABLE_EMOJI_SEGMENTER") > 0; validate(); if (layoutData->items.size()) return; @@ -1954,9 +1986,76 @@ void QTextEngine::itemize() const } } +#if !defined(QT_NO_EMOJISEGMENTER) + QVarLengthArray categorizedString; + if (!disableEmojiSegmenter) { + // Parse emoji sequences + for (int i = 0; i < length; ++i) { + const QChar &c = string[i]; + const bool isSurrogate = c.isHighSurrogate() && i < length - 1; + const char32_t ucs4 = isSurrogate + ? QChar::surrogateToUcs4(c, string[++i]) + : c.unicode(); + const QUnicodeTables::Properties *p = QUnicodeTables::properties(ucs4); + + if (ucs4 == 0x20E3) + categorizedString.append(CharacterCategory::COMBINING_ENCLOSING_KEYCAP); + else if (ucs4 == 0x20E0) + categorizedString.append(CharacterCategory::COMBINING_ENCLOSING_CIRCLE_BACKSLASH); + else if (ucs4 == 0xFE0E) + categorizedString.append(CharacterCategory::VS15); + else if (ucs4 == 0xFE0F) + categorizedString.append(CharacterCategory::VS16); + else if (ucs4 == 0x200D) + categorizedString.append(CharacterCategory::ZWJ); + else if (ucs4 == 0x1F3F4) + categorizedString.append(CharacterCategory::TAG_BASE); + else if (ucs4 == 0xE007F) + categorizedString.append(CharacterCategory::TAG_TERM); + else if ((ucs4 >= 0xE0030 && ucs4 <= 0xE0039) || (ucs4 >= 0xE0061 && ucs4 <= 0xE007A)) + categorizedString.append(CharacterCategory::TAG_SEQUENCE); + else if (ucs4 >= 0x1F1E6 && ucs4 <= 0x1F1FF) + categorizedString.append(CharacterCategory::REGIONAL_INDICATOR); + // emoji_keycap_sequence = [0-9#*] \x{FE0F 20E3} + else if ((ucs4 >= 0x0030 && ucs4 <= 0x0039) || ucs4 == 0x0023 || ucs4 == 0x002A) + categorizedString.append(CharacterCategory::KEYCAP_BASE); + else if (p->emojiFlags & uchar(QUnicodeTables::EmojiFlags::Emoji_Modifier_Base)) + categorizedString.append(CharacterCategory::EMOJI_MODIFIER_BASE); + else if (p->emojiFlags & uchar(QUnicodeTables::EmojiFlags::Emoji_Modifier)) + categorizedString.append(CharacterCategory::EMOJI_MODIFIER); + else if (p->emojiFlags & uchar(QUnicodeTables::EmojiFlags::Emoji_Presentation)) + categorizedString.append(CharacterCategory::EMOJI_EMOJI_PRESENTATION); + // If it's in the emoji list and doesn't have the emoji presentation, it is text + // presentation. + else if (p->emojiFlags & uchar(QUnicodeTables::EmojiFlags::Emoji)) + categorizedString.append(CharacterCategory::EMOJI_TEXT_PRESENTATION); + else + categorizedString.append(CharacterCategory::OTHER); + } + } +#endif + const ushort *uc = string; const ushort *e = uc + length; + +#if !defined(QT_NO_EMOJISEGMENTER) + const emoji_text_iter_t categoriesStart = categorizedString.data(); + const emoji_text_iter_t categoriesEnd = categoriesStart + categorizedString.size(); + + emoji_text_iter_t categoryIt = categoriesStart; + + bool isEmoji = false; + bool hasVs = false; + emoji_text_iter_t nextIt = categoryIt; +#endif + while (uc < e) { +#if !defined(QT_NO_EMOJISEGMENTER) + // Find next emoji sequence + if (!disableEmojiSegmenter && categoryIt == nextIt) + nextIt = scan_emoji_presentation(categoryIt, categoriesEnd, &isEmoji, &hasVs); +#endif + switch (*uc) { case QChar::ObjectReplacementCharacter: { @@ -1996,7 +2095,27 @@ void QTextEngine::itemize() const default: analysis->flags = QScriptAnalysis::None; break; + }; + +#if !defined(QT_NO_EMOJISEGMENTER) + if (!disableEmojiSegmenter) { + if (isEmoji) { + static_assert(QChar::ScriptCount < USHRT_MAX); + analysis->script = QFontDatabasePrivate::Script_Emoji; + } + + if (QChar::isHighSurrogate(*uc) && (uc + 1) < e && QChar::isLowSurrogate(*(uc + 1))) { + if (isEmoji) + (analysis + 1)->script = QFontDatabasePrivate::Script_Emoji; + + ++uc; + ++analysis; + } + + ++categoryIt; } +#endif + ++uc; ++analysis; } diff --git a/src/gui/text/unix/qfontconfigdatabase.cpp b/src/gui/text/unix/qfontconfigdatabase.cpp index 123364ab8b5..5294278369f 100644 --- a/src/gui/text/unix/qfontconfigdatabase.cpp +++ b/src/gui/text/unix/qfontconfigdatabase.cpp @@ -475,6 +475,12 @@ static void populateFromPattern(FcPattern *pattern, FcPatternGetDouble (pattern, FC_PIXEL_SIZE, 0, &pixel_size); bool fixedPitch = spacing_value >= FC_MONO; + + FcBool colorFont = false; +#ifdef FC_COLOR + FcPatternGetBool(pattern, FC_COLOR, 1, &colorFont); +#endif + // Note: stretch should really be an int but registerFont incorrectly uses an enum QFont::Stretch stretch = QFont::Stretch(stretchFromFcWidth(width_value)); QString styleName = style_value ? QString::fromUtf8((const char *) style_value) : QString(); @@ -490,7 +496,7 @@ static void populateFromPattern(FcPattern *pattern, applicationFont->properties.append(properties); } - QPlatformFontDatabase::registerFont(familyName,styleName,QLatin1StringView((const char *)foundry_value),weight,style,stretch,antialias,scalable,pixel_size,fixedPitch,writingSystems,fontFile); + QPlatformFontDatabase::registerFont(familyName,styleName,QLatin1StringView((const char *)foundry_value),weight,style,stretch,antialias,scalable,pixel_size,fixedPitch,colorFont,writingSystems,fontFile); if (applicationFont != nullptr && face != nullptr && db != nullptr) { db->addNamedInstancesForFace(face, indexValue, @@ -500,6 +506,7 @@ static void populateFromPattern(FcPattern *pattern, stretch, style, fixedPitch, + colorFont, writingSystems, QByteArray((const char*)file_value), applicationFont->data); @@ -536,7 +543,7 @@ static void populateFromPattern(FcPattern *pattern, applicationFont->properties.append(properties); } FontFile *altFontFile = new FontFile(*fontFile); - QPlatformFontDatabase::registerFont(altFamilyName, altStyleName, QLatin1StringView((const char *)foundry_value),weight,style,stretch,antialias,scalable,pixel_size,fixedPitch,writingSystems,altFontFile); + QPlatformFontDatabase::registerFont(altFamilyName, altStyleName, QLatin1StringView((const char *)foundry_value),weight,style,stretch,antialias,scalable,pixel_size,fixedPitch,colorFont,writingSystems,altFontFile); } else { QPlatformFontDatabase::registerAliasToFontFamily(familyName, altFamilyName); } @@ -613,9 +620,9 @@ void QFontconfigDatabase::populateFontDatabase() while (f->qtname) { QString familyQtName = QString::fromLatin1(f->qtname); - registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleNormal,QFont::Unstretched,true,true,0,f->fixed,ws,nullptr); - registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleItalic,QFont::Unstretched,true,true,0,f->fixed,ws,nullptr); - registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleOblique,QFont::Unstretched,true,true,0,f->fixed,ws,nullptr); + registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleNormal,QFont::Unstretched,true,true,false,0,f->fixed,ws,nullptr); + registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleItalic,QFont::Unstretched,true,true,false,0,f->fixed,ws,nullptr); + registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleOblique,QFont::Unstretched,true,true,false,0,f->fixed,ws,nullptr); ++f; } @@ -634,7 +641,7 @@ void QFontconfigDatabase::invalidate() FcConfigAppFontClear(nullptr); } -QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) +QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QFontDatabasePrivate::ExtendedScript script) { return new QFontEngineMultiFontConfig(fontEngine, script); } @@ -758,7 +765,10 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QByteArray &fontData, qreal p return engine; } -QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const +QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const { QStringList fallbackFamilies; FcPattern *pattern = FcPatternCreate(); @@ -771,6 +781,14 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont value.u.s = (const FcChar8 *)cs.data(); FcPatternAdd(pattern,FC_FAMILY,value,true); +#ifdef FC_COLOR + if (script == QFontDatabasePrivate::Script_Emoji) { + FcPatternAddBool(pattern, FC_COLOR, true); + value.u.s = (const FcChar8 *)"emoji"; + FcPatternAddWeak(pattern, FC_FAMILY, value, FcTrue); + } +#endif + int slant_value = FC_SLANT_ROMAN; if (style == QFont::StyleItalic) slant_value = FC_SLANT_ITALIC; @@ -778,8 +796,8 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont slant_value = FC_SLANT_OBLIQUE; FcPatternAddInteger(pattern, FC_SLANT, slant_value); - Q_ASSERT(uint(script) < QChar::ScriptCount); - if (*specialLanguages[script] != '\0') { + Q_ASSERT(uint(script) < QFontDatabasePrivate::ScriptCount); + if (uint(script) < QChar::ScriptCount && *specialLanguages[script] != '\0') { FcLangSet *ls = FcLangSetCreate(); FcLangSetAdd(ls, (const FcChar8*)specialLanguages[script]); FcPatternAddLangSet(pattern, FC_LANG, ls); diff --git a/src/gui/text/unix/qfontconfigdatabase_p.h b/src/gui/text/unix/qfontconfigdatabase_p.h index dd7a70a375e..40de891922b 100644 --- a/src/gui/text/unix/qfontconfigdatabase_p.h +++ b/src/gui/text/unix/qfontconfigdatabase_p.h @@ -29,10 +29,14 @@ public: void populateFontDatabase() override; void invalidate() override; bool supportsVariableApplicationFonts() const override; - QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) override; + QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, + QFontDatabasePrivate::ExtendedScript script) override; QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) override; QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) override; - QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const override; + QStringList fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const override; QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName, QFontDatabasePrivate::ApplicationFont *applicationFont = nullptr) override; QString resolveFontFamilyAlias(const QString &family) const override; QFont defaultFont() const override; diff --git a/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp b/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp index 610cd1d64b0..f2671b6ccf8 100644 --- a/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp +++ b/src/gui/text/windows/qwindowsdirectwritefontdatabase.cpp @@ -138,9 +138,9 @@ void QWindowsDirectWriteFontDatabase::populateFamily(const QString &familyName) for (uint j = 0; j < matchingFonts->GetFontCount(); ++j) { DirectWriteScope font; if (SUCCEEDED(matchingFonts->GetFont(j, &font))) { - DirectWriteScope font1; - if (!SUCCEEDED(font->QueryInterface(__uuidof(IDWriteFont1), - reinterpret_cast(&font1)))) { + DirectWriteScope font2; + if (!SUCCEEDED(font->QueryInterface(__uuidof(IDWriteFont2), + reinterpret_cast(&font2)))) { qCWarning(lcQpaFonts) << "COM object does not support IDWriteFont1"; continue; } @@ -149,7 +149,7 @@ void QWindowsDirectWriteFontDatabase::populateFamily(const QString &familyName) QString englishLocaleFamilyName; DirectWriteScope fontFamily2; - if (SUCCEEDED(font1->GetFontFamily(&fontFamily2))) { + if (SUCCEEDED(font2->GetFontFamily(&fontFamily2))) { DirectWriteScope names; if (SUCCEEDED(fontFamily2->GetFamilyNames(&names))) { defaultLocaleFamilyName = hasDefaultLocale ? localeString(*names, defaultLocale) : QString(); @@ -162,14 +162,15 @@ void QWindowsDirectWriteFontDatabase::populateFamily(const QString &familyName) { DirectWriteScope names; - if (SUCCEEDED(font1->GetFaceNames(&names))) { + if (SUCCEEDED(font2->GetFaceNames(&names))) { QString defaultLocaleStyleName = hasDefaultLocale ? localeString(*names, defaultLocale) : QString(); QString englishLocaleStyleName = localeString(*names, englishLocale); - QFont::Stretch stretch = fromDirectWriteStretch(font1->GetStretch()); - QFont::Style style = fromDirectWriteStyle(font1->GetStyle()); - QFont::Weight weight = fromDirectWriteWeight(font1->GetWeight()); - bool fixed = font1->IsMonospacedFont(); + QFont::Stretch stretch = fromDirectWriteStretch(font2->GetStretch()); + QFont::Style style = fromDirectWriteStyle(font2->GetStyle()); + QFont::Weight weight = fromDirectWriteWeight(font2->GetWeight()); + bool fixed = font2->IsMonospacedFont(); + bool color = font2->IsColorFont(); qCDebug(lcQpaFonts) << "Family" << familyName << "has english variant" << englishLocaleStyleName << ", in default locale:" << defaultLocaleStyleName << stretch << style << weight << fixed; @@ -190,6 +191,7 @@ void QWindowsDirectWriteFontDatabase::populateFamily(const QString &familyName) scalable, size, fixed, + color, writingSystems, new FontHandle(*face, englishLocaleFamilyName)); } @@ -205,6 +207,7 @@ void QWindowsDirectWriteFontDatabase::populateFamily(const QString &familyName) scalable, size, fixed, + color, writingSystems, new FontHandle(*face, defaultLocaleFamilyName)); } @@ -290,18 +293,20 @@ bool QWindowsDirectWriteFontDatabase::populateFamilyAliases(const QString &missi DirectWriteScope font; if (SUCCEEDED(fontCollection->GetFontFromFontFace(*directWriteFontFace, &font))) { - DirectWriteScope font1; - if (SUCCEEDED(font->QueryInterface(__uuidof(IDWriteFont1), - reinterpret_cast(&font1)))) { + DirectWriteScope font2; + if (SUCCEEDED(font->QueryInterface(__uuidof(IDWriteFont2), + reinterpret_cast(&font2)))) { DirectWriteScope names; - if (SUCCEEDED(font1->GetFaceNames(&names))) { + if (SUCCEEDED(font2->GetFaceNames(&names))) { wchar_t englishLocale[] = L"en-us"; QString englishLocaleStyleName = localeString(*names, englishLocale); - QFont::Stretch stretch = fromDirectWriteStretch(font1->GetStretch()); - QFont::Style style = fromDirectWriteStyle(font1->GetStyle()); - QFont::Weight weight = fromDirectWriteWeight(font1->GetWeight()); - bool fixed = font1->IsMonospacedFont(); + QFont::Stretch stretch = fromDirectWriteStretch(font2->GetStretch()); + QFont::Style style = fromDirectWriteStyle(font2->GetStyle()); + QFont::Weight weight = fromDirectWriteWeight(font2->GetWeight()); + bool fixed = font2->IsMonospacedFont(); + bool isColorFont = font2->IsColorFont(); + QSupportedWritingSystems writingSystems = supportedWritingSystems(*directWriteFontFace); @@ -316,6 +321,7 @@ bool QWindowsDirectWriteFontDatabase::populateFamilyAliases(const QString &missi true, 0xffff, fixed, + isColorFont, writingSystems, new FontHandle(*directWriteFontFace, missingFamily)); @@ -407,9 +413,13 @@ QFontEngine *QWindowsDirectWriteFontDatabase::fontEngine(const QFontDef &fontDef return fontEngine; } -QStringList QWindowsDirectWriteFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const +QStringList QWindowsDirectWriteFontDatabase::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const { QStringList result; + result.append(QWindowsFontDatabaseBase::familiesForScript(script)); result.append(familyForStyleHint(styleHint)); result.append(extraTryFontsForFamily(family)); result.append(QPlatformFontDatabase::fallbacksForFamily(family, style, styleHint, script)); @@ -516,6 +526,7 @@ QStringList QWindowsDirectWriteFontDatabase::addApplicationFont(const QByteArray QFont::Style style = fromDirectWriteStyle(face3->GetStyle()); QFont::Weight weight = fromDirectWriteWeight(face3->GetWeight()); bool fixed = face3->IsMonospacedFont(); + bool color = face3->IsColorFont(); qCDebug(lcQpaFonts) << "\tFont names:" << englishLocaleFamilyName << ", " << defaultLocaleFamilyName << ", style names:" << englishLocaleStyleName << ", " << defaultLocaleStyleName @@ -545,6 +556,7 @@ QStringList QWindowsDirectWriteFontDatabase::addApplicationFont(const QByteArray scalable, size, fixed, + color, writingSystems, new FontHandle(face, englishLocaleFamilyName)); } @@ -570,6 +582,7 @@ QStringList QWindowsDirectWriteFontDatabase::addApplicationFont(const QByteArray scalable, size, fixed, + color, writingSystems, new FontHandle(face, defaultLocaleFamilyName)); } @@ -595,6 +608,7 @@ QStringList QWindowsDirectWriteFontDatabase::addApplicationFont(const QByteArray scalable, size, fixed, + color, writingSystems, new FontHandle(face, englishLocaleGdiCompatibleFamilyName)); } @@ -620,6 +634,7 @@ QStringList QWindowsDirectWriteFontDatabase::addApplicationFont(const QByteArray scalable, size, fixed, + color, writingSystems, new FontHandle(face, defaultLocaleGdiCompatibleFamilyName)); } @@ -645,6 +660,7 @@ QStringList QWindowsDirectWriteFontDatabase::addApplicationFont(const QByteArray scalable, size, fixed, + color, writingSystems, new FontHandle(face, englishLocaleTypographicFamilyName)); } @@ -670,6 +686,7 @@ QStringList QWindowsDirectWriteFontDatabase::addApplicationFont(const QByteArray scalable, size, fixed, + color, writingSystems, new FontHandle(face, defaultLocaleTypographicFamilyName)); } diff --git a/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h b/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h index 3e5e9663a96..1ea01cbd88e 100644 --- a/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h +++ b/src/gui/text/windows/qwindowsdirectwritefontdatabase_p.h @@ -43,7 +43,10 @@ public: bool populateFamilyAliases(const QString &missingFamily) override; QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) override; QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) override; - QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const override; + QStringList fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const override; QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName, QFontDatabasePrivate::ApplicationFont *font = nullptr) override; bool isPrivateFontFamily(const QString &family) const override; diff --git a/src/gui/text/windows/qwindowsfontdatabase.cpp b/src/gui/text/windows/qwindowsfontdatabase.cpp index 772620d65af..73814c6a634 100644 --- a/src/gui/text/windows/qwindowsfontdatabase.cpp +++ b/src/gui/text/windows/qwindowsfontdatabase.cpp @@ -541,19 +541,19 @@ static bool addFontToDatabase(QString familyName, const bool wasPopulated = QPlatformFontDatabase::isFamilyPopulated(familyName); QPlatformFontDatabase::registerFont(familyName, styleName, foundryName, weight, - style, stretch, antialias, scalable, size, fixed, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); + style, stretch, antialias, scalable, size, fixed, false, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); // add fonts windows can generate for us: if (weight <= QFont::DemiBold && styleName.isEmpty()) QPlatformFontDatabase::registerFont(familyName, QString(), foundryName, QFont::Bold, - style, stretch, antialias, scalable, size, fixed, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); + style, stretch, antialias, scalable, size, fixed, false, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); if (style != QFont::StyleItalic && styleName.isEmpty()) QPlatformFontDatabase::registerFont(familyName, QString(), foundryName, weight, - QFont::StyleItalic, stretch, antialias, scalable, size, fixed, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); + QFont::StyleItalic, stretch, antialias, scalable, size, fixed, false, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); if (weight <= QFont::DemiBold && style != QFont::StyleItalic && styleName.isEmpty()) QPlatformFontDatabase::registerFont(familyName, QString(), foundryName, QFont::Bold, - QFont::StyleItalic, stretch, antialias, scalable, size, fixed, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); + QFont::StyleItalic, stretch, antialias, scalable, size, fixed, false, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); // We came here from populating a different font family, so we have // to ensure the entire typographic family is populated before we @@ -567,7 +567,7 @@ static bool addFontToDatabase(QString familyName, if (!subFamilyName.isEmpty() && familyName != subFamilyName) { QPlatformFontDatabase::registerFont(subFamilyName, subFamilyStyle, foundryName, weight, - style, stretch, antialias, scalable, size, fixed, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); + style, stretch, antialias, scalable, size, fixed, false, writingSystems, new QWindowsFontDatabase::FontHandle(faceName)); } if (!englishName.isEmpty() && englishName != familyName) @@ -1162,9 +1162,13 @@ void QWindowsFontDatabase::refUniqueFont(const QString &uniqueFont) ++it->refCount; } -QStringList QWindowsFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const +QStringList QWindowsFontDatabase::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const { QStringList result; + result.append(QWindowsFontDatabaseBase::familiesForScript(script)); result.append(familyForStyleHint(styleHint)); result.append(m_eudcFonts); result.append(extraTryFontsForFamily(family)); diff --git a/src/gui/text/windows/qwindowsfontdatabase_ft.cpp b/src/gui/text/windows/qwindowsfontdatabase_ft.cpp index 0604a85e35e..18d902610df 100644 --- a/src/gui/text/windows/qwindowsfontdatabase_ft.cpp +++ b/src/gui/text/windows/qwindowsfontdatabase_ft.cpp @@ -243,24 +243,24 @@ static bool addFontToDatabase(QString familyName, value.prepend(QFile::decodeName(qgetenv("windir") + "\\Fonts\\")); QPlatformFontDatabase::registerFont(familyName, styleName, foundryName, weight, style, stretch, - antialias, scalable, size, fixed, writingSystems, createFontFile(value, index)); + antialias, scalable, size, fixed, false, writingSystems, createFontFile(value, index)); // add fonts windows can generate for us: if (weight <= QFont::DemiBold && styleName.isEmpty()) QPlatformFontDatabase::registerFont(familyName, QString(), foundryName, QFont::Bold, style, stretch, - antialias, scalable, size, fixed, writingSystems, createFontFile(value, index)); + antialias, scalable, size, fixed, false, writingSystems, createFontFile(value, index)); if (style != QFont::StyleItalic && styleName.isEmpty()) QPlatformFontDatabase::registerFont(familyName, QString(), foundryName, weight, QFont::StyleItalic, stretch, - antialias, scalable, size, fixed, writingSystems, createFontFile(value, index)); + antialias, scalable, size, fixed, false, writingSystems, createFontFile(value, index)); if (weight <= QFont::DemiBold && style != QFont::StyleItalic && styleName.isEmpty()) QPlatformFontDatabase::registerFont(familyName, QString(), foundryName, QFont::Bold, QFont::StyleItalic, stretch, - antialias, scalable, size, fixed, writingSystems, createFontFile(value, index)); + antialias, scalable, size, fixed, false, writingSystems, createFontFile(value, index)); if (!subFamilyName.isEmpty() && familyName != subFamilyName) { QPlatformFontDatabase::registerFont(subFamilyName, subFamilyStyle, foundryName, weight, - style, stretch, antialias, scalable, size, fixed, writingSystems, createFontFile(value, index)); + style, stretch, antialias, scalable, size, fixed, false, writingSystems, createFontFile(value, index)); } if (!englishName.isEmpty() && englishName != familyName) @@ -397,9 +397,13 @@ QFontEngine *QWindowsFontDatabaseFT::fontEngine(const QByteArray &fontData, qrea return fe; } -QStringList QWindowsFontDatabaseFT::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const +QStringList QWindowsFontDatabaseFT::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QFontDatabasePrivate::ExtendedScript script) const { QStringList result; + result.append(QWindowsFontDatabaseBase::familiesForScript(script)); result.append(QWindowsFontDatabaseBase::familyForStyleHint(styleHint)); result.append(QWindowsFontDatabaseBase::extraTryFontsForFamily(family)); result.append(QFreeTypeFontDatabase::fallbacksForFamily(family, style, styleHint, script)); diff --git a/src/gui/text/windows/qwindowsfontdatabase_ft_p.h b/src/gui/text/windows/qwindowsfontdatabase_ft_p.h index 381a7be4e78..1b8fb9dd90b 100644 --- a/src/gui/text/windows/qwindowsfontdatabase_ft_p.h +++ b/src/gui/text/windows/qwindowsfontdatabase_ft_p.h @@ -33,7 +33,7 @@ public: QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, - QChar::Script script) const override; + QFontDatabasePrivate::ExtendedScript script) const override; QString fontDir() const override; QFont defaultFont() const override; diff --git a/src/gui/text/windows/qwindowsfontdatabase_p.h b/src/gui/text/windows/qwindowsfontdatabase_p.h index 0c99c91fde6..926287264f6 100644 --- a/src/gui/text/windows/qwindowsfontdatabase_p.h +++ b/src/gui/text/windows/qwindowsfontdatabase_p.h @@ -51,7 +51,7 @@ public: bool populateFamilyAliases(const QString &missingFamily) override; QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) override; QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) override; - QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const override; + QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QFontDatabasePrivate::ExtendedScript script) const override; QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName, QFontDatabasePrivate::ApplicationFont *applicationFont = nullptr) override; void releaseHandle(void *handle) override; QString fontDir() const override; diff --git a/src/gui/text/windows/qwindowsfontdatabasebase.cpp b/src/gui/text/windows/qwindowsfontdatabasebase.cpp index 84e619b0d93..fdaf9240846 100644 --- a/src/gui/text/windows/qwindowsfontdatabasebase.cpp +++ b/src/gui/text/windows/qwindowsfontdatabasebase.cpp @@ -873,6 +873,14 @@ QFontEngine *QWindowsFontDatabaseBase::fontEngine(const QByteArray &fontData, qr return fontEngine; } +QStringList QWindowsFontDatabaseBase::familiesForScript(QFontDatabasePrivate::ExtendedScript script) +{ + if (script == QFontDatabasePrivate::Script_Emoji) + return QStringList{} << QStringLiteral("Segoe UI Emoji"); + else + return QStringList{}; +} + QString QWindowsFontDatabaseBase::familyForStyleHint(QFont::StyleHint styleHint) { switch (styleHint) { diff --git a/src/gui/text/windows/qwindowsfontdatabasebase_p.h b/src/gui/text/windows/qwindowsfontdatabasebase_p.h index 55a33635511..beb9b52fe48 100644 --- a/src/gui/text/windows/qwindowsfontdatabasebase_p.h +++ b/src/gui/text/windows/qwindowsfontdatabasebase_p.h @@ -75,6 +75,7 @@ public: static QString familyForStyleHint(QFont::StyleHint styleHint); static QStringList extraTryFontsForFamily(const QString &family); + static QStringList familiesForScript(QFontDatabasePrivate::ExtendedScript script); class FontTable{}; class EmbeddedFont diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp index 82a10dac075..3c174f04700 100644 --- a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp +++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp @@ -45,10 +45,15 @@ void QAndroidPlatformFontDatabase::populateFontDatabase() QStringList QAndroidPlatformFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, - QChar::Script script) const + QFontDatabasePrivate::ExtendedScript script) const { QStringList result; + if (script == QFontDatabasePrivate::Script_Emoji) { + result.append(QStringLiteral("Noto Color Emoji")); + result.append(QStringLiteral("Noto Color Emoji Flags")); + } + // Prepend CJK fonts by the locale. QLocale locale = QLocale::system(); switch (locale.language()) { diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.h b/src/plugins/platforms/android/qandroidplatformfontdatabase.h index 23561e22146..1150a298269 100644 --- a/src/plugins/platforms/android/qandroidplatformfontdatabase.h +++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.h @@ -17,7 +17,7 @@ public: QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, - QChar::Script script) const override; + QFontDatabasePrivate::ExtendedScript script) const override; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/wasm/qwasmfontdatabase.cpp b/src/plugins/platforms/wasm/qwasmfontdatabase.cpp index 3f3dc10f717..e1882dd1d6e 100644 --- a/src/plugins/platforms/wasm/qwasmfontdatabase.cpp +++ b/src/plugins/platforms/wasm/qwasmfontdatabase.cpp @@ -319,7 +319,7 @@ QFontEngine *QWasmFontDatabase::fontEngine(const QFontDef &fontDef, void *handle QStringList QWasmFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, - QChar::Script script) const + QFontDatabasePrivate::ExtendedScript script) const { QStringList fallbacks = QFreeTypeFontDatabase::fallbacksForFamily(family, style, styleHint, script); diff --git a/src/plugins/platforms/wasm/qwasmfontdatabase.h b/src/plugins/platforms/wasm/qwasmfontdatabase.h index a1c8f1ff485..aea3b955bfb 100644 --- a/src/plugins/platforms/wasm/qwasmfontdatabase.h +++ b/src/plugins/platforms/wasm/qwasmfontdatabase.h @@ -20,7 +20,7 @@ public: QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) override; QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, - QChar::Script script) const override; + QFontDatabasePrivate::ExtendedScript script) const override; void releaseHandle(void *handle) override; QFont defaultFont() const override; diff --git a/tests/auto/gui/text/qfontdatabase/CMakeLists.txt b/tests/auto/gui/text/qfontdatabase/CMakeLists.txt index 0cb6e8d7c8a..03e4bdce8b5 100644 --- a/tests/auto/gui/text/qfontdatabase/CMakeLists.txt +++ b/tests/auto/gui/text/qfontdatabase/CMakeLists.txt @@ -49,6 +49,7 @@ set(testdata_resource_files "LED_REAL.TTF" "QtTestLimitedFont-Regular.ttf" "QtTestFallbackFont-Regular.ttf" + "QtEmojiTestFont-Regular.ttf" ) qt_internal_add_resource(tst_qfontdatabase "testdata" diff --git a/tests/auto/gui/text/qfontdatabase/QtEmojiTestFont-Regular.ttf b/tests/auto/gui/text/qfontdatabase/QtEmojiTestFont-Regular.ttf new file mode 100644 index 00000000000..613006dd55b Binary files /dev/null and b/tests/auto/gui/text/qfontdatabase/QtEmojiTestFont-Regular.ttf differ diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp index a2c2f024c6a..d24b37732c5 100644 --- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp +++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp @@ -71,6 +71,7 @@ private slots: #endif void addApplicationFontFallback(); + void addApplicationEmojiFontFamily(); private: QString m_ledFont; @@ -80,6 +81,7 @@ private: QString m_testFontVariable; QString m_limitedFont; QString m_fallbackFont; + QString m_emojiFont; }; tst_QFontDatabase::tst_QFontDatabase() @@ -95,6 +97,7 @@ void tst_QFontDatabase::initTestCase() m_testFontVariable = QFINDTESTDATA("testfont_variable.ttf"); m_limitedFont = QFINDTESTDATA("QtTestLimitedFont-Regular.ttf"); m_fallbackFont = QFINDTESTDATA("QtTestFallbackFont-Regular.ttf"); + m_emojiFont = QFINDTESTDATA("QtEmojiTestFont-Regular.ttf"); QVERIFY(!m_ledFont.isEmpty()); QVERIFY(!m_testFont.isEmpty()); QVERIFY(!m_testFontCondensed.isEmpty()); @@ -102,6 +105,7 @@ void tst_QFontDatabase::initTestCase() QVERIFY(!m_testFontVariable.isEmpty()); QVERIFY(!m_limitedFont.isEmpty()); QVERIFY(!m_fallbackFont.isEmpty()); + QVERIFY(!m_emojiFont.isEmpty()); } void tst_QFontDatabase::styles_data() @@ -763,5 +767,65 @@ void tst_QFontDatabase::addApplicationFontFallback() QVERIFY(QFontDatabase::removeApplicationFallbackFontFamily(QChar::Script_Latin, u"QtTestFallbackFont"_s)); } +void tst_QFontDatabase::addApplicationEmojiFontFamily() +{ + int id = -1; + auto cleanup = qScopeGuard([&id] { + if (id >= 0) + QFontDatabase::removeApplicationFont(id); + }); + + id = QFontDatabase::addApplicationFont(m_emojiFont); + QVERIFY(id >= 0); + + QStringList families = QFontDatabase::applicationFontFamilies(id); + QVERIFY(families.size() > 0); + + const QChar airplane(0x2708); + const QChar vs16(0xfe0f); + + QFontDatabase::addApplicationEmojiFontFamily(families.first()); + + // Get emoji version of regular airplane symbol + { + QTextLayout layout; + layout.setText(QString(airplane) + vs16); + layout.beginLayout(); + layout.createLine(); + layout.endLayout(); + + QList glyphRuns = layout.glyphRuns(); + QCOMPARE(glyphRuns.size(), 1); + + QGlyphRun glyphRun = glyphRuns.first(); + QList glyphIndexes = glyphRun.glyphIndexes(); + + QCOMPARE(glyphIndexes.size(), 1); + QCOMPARE(glyphIndexes.at(0), 237); + } + + const QChar asterisk('*'); + const QChar enclosingKeyCap(0x20e3); + + // Get emoji keycap ligature (vs16 should be ignored when evaluating ligature substitution) + { + QTextLayout layout; + layout.setText(QString(asterisk) + vs16 + enclosingKeyCap); + layout.beginLayout(); + layout.createLine(); + layout.endLayout(); + + QList glyphRuns = layout.glyphRuns(); + QCOMPARE(glyphRuns.size(), 1); + + QGlyphRun glyphRun = glyphRuns.first(); + QList glyphIndexes = glyphRun.glyphIndexes(); + + QCOMPARE(glyphIndexes.size(), 1); + QCOMPARE(glyphIndexes.at(0), 238); + } + +} + QTEST_MAIN(tst_QFontDatabase) #include "tst_qfontdatabase.moc" diff --git a/tests/manual/emojisequences/CMakeLists.txt b/tests/manual/emojisequences/CMakeLists.txt new file mode 100644 index 00000000000..c367bb12628 --- /dev/null +++ b/tests/manual/emojisequences/CMakeLists.txt @@ -0,0 +1,34 @@ +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.16) +project(emojisequences LANGUAGES CXX) + +find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) +find_package(Qt6BuildInternals COMPONENTS STANDALONE_TEST) + +qt_standard_project_setup() + +qt_internal_add_manual_test(emojisequences + GUI + SOURCES + main.cpp + mainwindow.h mainwindow.cpp + mainwindow.ui + LIBRARIES + Qt::Gui + Qt::Widgets + ENABLE_AUTOGEN_TOOLS + uic +) + +set(emojisequences_resource_files + "emoji-test.txt" +) + +qt_internal_add_resource(emojisequences "emojisequences" + PREFIX + "/" + FILES + ${emojisequences_resource_files} +) diff --git a/tests/manual/emojisequences/emoji-test.txt b/tests/manual/emojisequences/emoji-test.txt new file mode 100644 index 00000000000..3357ccf8c88 --- /dev/null +++ b/tests/manual/emojisequences/emoji-test.txt @@ -0,0 +1,3768 @@ +1F600 ; fully-qualified # ๐Ÿ˜€ grinning face +1F601 ; fully-qualified # ๐Ÿ˜ beaming face with smiling eyes +1F602 ; fully-qualified # ๐Ÿ˜‚ face with tears of joy +1F923 ; fully-qualified # ๐Ÿคฃ rolling on the floor laughing +1F603 ; fully-qualified # ๐Ÿ˜ƒ grinning face with big eyes +1F604 ; fully-qualified # ๐Ÿ˜„ grinning face with smiling eyes +1F605 ; fully-qualified # ๐Ÿ˜… grinning face with sweat +1F606 ; fully-qualified # ๐Ÿ˜† grinning squinting face +1F609 ; fully-qualified # ๐Ÿ˜‰ winking face +1F60A ; fully-qualified # ๐Ÿ˜Š smiling face with smiling eyes +1F60B ; fully-qualified # ๐Ÿ˜‹ face savoring food +1F60E ; fully-qualified # ๐Ÿ˜Ž smiling face with sunglasses +1F60D ; fully-qualified # ๐Ÿ˜ smiling face with heart-eyes +1F618 ; fully-qualified # ๐Ÿ˜˜ face blowing a kiss +1F970 ; fully-qualified # ๐Ÿฅฐ smiling face with 3 hearts +1F617 ; fully-qualified # ๐Ÿ˜— kissing face +1F619 ; fully-qualified # ๐Ÿ˜™ kissing face with smiling eyes +1F61A ; fully-qualified # ๐Ÿ˜š kissing face with closed eyes +263A FE0F ; fully-qualified # โ˜บ๏ธ smiling face +263A ; non-fully-qualified # โ˜บ smiling face +1F642 ; fully-qualified # ๐Ÿ™‚ slightly smiling face +1F917 ; fully-qualified # ๐Ÿค— hugging face +1F929 ; fully-qualified # ๐Ÿคฉ star-struck + +# subgroup: face-neutral +1F914 ; fully-qualified # ๐Ÿค” thinking face +1F928 ; fully-qualified # ๐Ÿคจ face with raised eyebrow +1F610 ; fully-qualified # ๐Ÿ˜ neutral face +1F611 ; fully-qualified # ๐Ÿ˜‘ expressionless face +1F636 ; fully-qualified # ๐Ÿ˜ถ face without mouth +1F644 ; fully-qualified # ๐Ÿ™„ face with rolling eyes +1F60F ; fully-qualified # ๐Ÿ˜ smirking face +1F623 ; fully-qualified # ๐Ÿ˜ฃ persevering face +1F625 ; fully-qualified # ๐Ÿ˜ฅ sad but relieved face +1F62E ; fully-qualified # ๐Ÿ˜ฎ face with open mouth +1F910 ; fully-qualified # ๐Ÿค zipper-mouth face +1F62F ; fully-qualified # ๐Ÿ˜ฏ hushed face +1F62A ; fully-qualified # ๐Ÿ˜ช sleepy face +1F62B ; fully-qualified # ๐Ÿ˜ซ tired face +1F634 ; fully-qualified # ๐Ÿ˜ด sleeping face +1F60C ; fully-qualified # ๐Ÿ˜Œ relieved face +1F61B ; fully-qualified # ๐Ÿ˜› face with tongue +1F61C ; fully-qualified # ๐Ÿ˜œ winking face with tongue +1F61D ; fully-qualified # ๐Ÿ˜ squinting face with tongue +1F924 ; fully-qualified # ๐Ÿคค drooling face +1F612 ; fully-qualified # ๐Ÿ˜’ unamused face +1F613 ; fully-qualified # ๐Ÿ˜“ downcast face with sweat +1F614 ; fully-qualified # ๐Ÿ˜” pensive face +1F615 ; fully-qualified # ๐Ÿ˜• confused face +1F643 ; fully-qualified # ๐Ÿ™ƒ upside-down face +1F911 ; fully-qualified # ๐Ÿค‘ money-mouth face +1F632 ; fully-qualified # ๐Ÿ˜ฒ astonished face + +# subgroup: face-negative +2639 FE0F ; fully-qualified # โ˜น๏ธ frowning face +2639 ; non-fully-qualified # โ˜น frowning face +1F641 ; fully-qualified # ๐Ÿ™ slightly frowning face +1F616 ; fully-qualified # ๐Ÿ˜– confounded face +1F61E ; fully-qualified # ๐Ÿ˜ž disappointed face +1F61F ; fully-qualified # ๐Ÿ˜Ÿ worried face +1F624 ; fully-qualified # ๐Ÿ˜ค face with steam from nose +1F622 ; fully-qualified # ๐Ÿ˜ข crying face +1F62D ; fully-qualified # ๐Ÿ˜ญ loudly crying face +1F626 ; fully-qualified # ๐Ÿ˜ฆ frowning face with open mouth +1F627 ; fully-qualified # ๐Ÿ˜ง anguished face +1F628 ; fully-qualified # ๐Ÿ˜จ fearful face +1F629 ; fully-qualified # ๐Ÿ˜ฉ weary face +1F92F ; fully-qualified # ๐Ÿคฏ exploding head +1F62C ; fully-qualified # ๐Ÿ˜ฌ grimacing face +1F630 ; fully-qualified # ๐Ÿ˜ฐ anxious face with sweat +1F631 ; fully-qualified # ๐Ÿ˜ฑ face screaming in fear +1F975 ; fully-qualified # ๐Ÿฅต hot face +1F976 ; fully-qualified # ๐Ÿฅถ cold face +1F633 ; fully-qualified # ๐Ÿ˜ณ flushed face +1F92A ; fully-qualified # ๐Ÿคช zany face +1F635 ; fully-qualified # ๐Ÿ˜ต dizzy face +1F621 ; fully-qualified # ๐Ÿ˜ก pouting face +1F620 ; fully-qualified # ๐Ÿ˜  angry face +1F92C ; fully-qualified # ๐Ÿคฌ face with symbols on mouth + +# subgroup: face-sick +1F637 ; fully-qualified # ๐Ÿ˜ท face with medical mask +1F912 ; fully-qualified # ๐Ÿค’ face with thermometer +1F915 ; fully-qualified # ๐Ÿค• face with head-bandage +1F922 ; fully-qualified # ๐Ÿคข nauseated face +1F92E ; fully-qualified # ๐Ÿคฎ face vomiting +1F927 ; fully-qualified # ๐Ÿคง sneezing face + +# subgroup: face-role +1F607 ; fully-qualified # ๐Ÿ˜‡ smiling face with halo +1F920 ; fully-qualified # ๐Ÿค  cowboy hat face +1F973 ; fully-qualified # ๐Ÿฅณ partying face +1F974 ; fully-qualified # ๐Ÿฅด woozy face +1F97A ; fully-qualified # ๐Ÿฅบ pleading face +1F925 ; fully-qualified # ๐Ÿคฅ lying face +1F92B ; fully-qualified # ๐Ÿคซ shushing face +1F92D ; fully-qualified # ๐Ÿคญ face with hand over mouth +1F9D0 ; fully-qualified # ๐Ÿง face with monocle +1F913 ; fully-qualified # ๐Ÿค“ nerd face + +# subgroup: face-fantasy +1F608 ; fully-qualified # ๐Ÿ˜ˆ smiling face with horns +1F47F ; fully-qualified # ๐Ÿ‘ฟ angry face with horns +1F921 ; fully-qualified # ๐Ÿคก clown face +1F479 ; fully-qualified # ๐Ÿ‘น ogre +1F47A ; fully-qualified # ๐Ÿ‘บ goblin +1F480 ; fully-qualified # ๐Ÿ’€ skull +2620 FE0F ; fully-qualified # โ˜ ๏ธ skull and crossbones +2620 ; non-fully-qualified # โ˜  skull and crossbones +1F47B ; fully-qualified # ๐Ÿ‘ป ghost +1F47D ; fully-qualified # ๐Ÿ‘ฝ alien +1F47E ; fully-qualified # ๐Ÿ‘พ alien monster +1F916 ; fully-qualified # ๐Ÿค– robot face +1F4A9 ; fully-qualified # ๐Ÿ’ฉ pile of poo + +# subgroup: cat-face +1F63A ; fully-qualified # ๐Ÿ˜บ grinning cat face +1F638 ; fully-qualified # ๐Ÿ˜ธ grinning cat face with smiling eyes +1F639 ; fully-qualified # ๐Ÿ˜น cat face with tears of joy +1F63B ; fully-qualified # ๐Ÿ˜ป smiling cat face with heart-eyes +1F63C ; fully-qualified # ๐Ÿ˜ผ cat face with wry smile +1F63D ; fully-qualified # ๐Ÿ˜ฝ kissing cat face +1F640 ; fully-qualified # ๐Ÿ™€ weary cat face +1F63F ; fully-qualified # ๐Ÿ˜ฟ crying cat face +1F63E ; fully-qualified # ๐Ÿ˜พ pouting cat face + +# subgroup: monkey-face +1F648 ; fully-qualified # ๐Ÿ™ˆ see-no-evil monkey +1F649 ; fully-qualified # ๐Ÿ™‰ hear-no-evil monkey +1F64A ; fully-qualified # ๐Ÿ™Š speak-no-evil monkey + +# subgroup: skin-tone +1F3FB ; fully-qualified # ๐Ÿป light skin tone +1F3FC ; fully-qualified # ๐Ÿผ medium-light skin tone +1F3FD ; fully-qualified # ๐Ÿฝ medium skin tone +1F3FE ; fully-qualified # ๐Ÿพ medium-dark skin tone +1F3FF ; fully-qualified # ๐Ÿฟ dark skin tone + +# subgroup: person +1F476 ; fully-qualified # ๐Ÿ‘ถ baby +1F476 1F3FB ; fully-qualified # ๐Ÿ‘ถ๐Ÿป baby: light skin tone +1F476 1F3FC ; fully-qualified # ๐Ÿ‘ถ๐Ÿผ baby: medium-light skin tone +1F476 1F3FD ; fully-qualified # ๐Ÿ‘ถ๐Ÿฝ baby: medium skin tone +1F476 1F3FE ; fully-qualified # ๐Ÿ‘ถ๐Ÿพ baby: medium-dark skin tone +1F476 1F3FF ; fully-qualified # ๐Ÿ‘ถ๐Ÿฟ baby: dark skin tone +1F9D2 ; fully-qualified # ๐Ÿง’ child +1F9D2 1F3FB ; fully-qualified # ๐Ÿง’๐Ÿป child: light skin tone +1F9D2 1F3FC ; fully-qualified # ๐Ÿง’๐Ÿผ child: medium-light skin tone +1F9D2 1F3FD ; fully-qualified # ๐Ÿง’๐Ÿฝ child: medium skin tone +1F9D2 1F3FE ; fully-qualified # ๐Ÿง’๐Ÿพ child: medium-dark skin tone +1F9D2 1F3FF ; fully-qualified # ๐Ÿง’๐Ÿฟ child: dark skin tone +1F466 ; fully-qualified # ๐Ÿ‘ฆ boy +1F466 1F3FB ; fully-qualified # ๐Ÿ‘ฆ๐Ÿป boy: light skin tone +1F466 1F3FC ; fully-qualified # ๐Ÿ‘ฆ๐Ÿผ boy: medium-light skin tone +1F466 1F3FD ; fully-qualified # ๐Ÿ‘ฆ๐Ÿฝ boy: medium skin tone +1F466 1F3FE ; fully-qualified # ๐Ÿ‘ฆ๐Ÿพ boy: medium-dark skin tone +1F466 1F3FF ; fully-qualified # ๐Ÿ‘ฆ๐Ÿฟ boy: dark skin tone +1F467 ; fully-qualified # ๐Ÿ‘ง girl +1F467 1F3FB ; fully-qualified # ๐Ÿ‘ง๐Ÿป girl: light skin tone +1F467 1F3FC ; fully-qualified # ๐Ÿ‘ง๐Ÿผ girl: medium-light skin tone +1F467 1F3FD ; fully-qualified # ๐Ÿ‘ง๐Ÿฝ girl: medium skin tone +1F467 1F3FE ; fully-qualified # ๐Ÿ‘ง๐Ÿพ girl: medium-dark skin tone +1F467 1F3FF ; fully-qualified # ๐Ÿ‘ง๐Ÿฟ girl: dark skin tone +1F9D1 ; fully-qualified # ๐Ÿง‘ adult +1F9D1 1F3FB ; fully-qualified # ๐Ÿง‘๐Ÿป adult: light skin tone +1F9D1 1F3FC ; fully-qualified # ๐Ÿง‘๐Ÿผ adult: medium-light skin tone +1F9D1 1F3FD ; fully-qualified # ๐Ÿง‘๐Ÿฝ adult: medium skin tone +1F9D1 1F3FE ; fully-qualified # ๐Ÿง‘๐Ÿพ adult: medium-dark skin tone +1F9D1 1F3FF ; fully-qualified # ๐Ÿง‘๐Ÿฟ adult: dark skin tone +1F468 ; fully-qualified # ๐Ÿ‘จ man +1F468 1F3FB ; fully-qualified # ๐Ÿ‘จ๐Ÿป man: light skin tone +1F468 1F3FC ; fully-qualified # ๐Ÿ‘จ๐Ÿผ man: medium-light skin tone +1F468 1F3FD ; fully-qualified # ๐Ÿ‘จ๐Ÿฝ man: medium skin tone +1F468 1F3FE ; fully-qualified # ๐Ÿ‘จ๐Ÿพ man: medium-dark skin tone +1F468 1F3FF ; fully-qualified # ๐Ÿ‘จ๐Ÿฟ man: dark skin tone +1F469 ; fully-qualified # ๐Ÿ‘ฉ woman +1F469 1F3FB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿป woman: light skin tone +1F469 1F3FC ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผ woman: medium-light skin tone +1F469 1F3FD ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝ woman: medium skin tone +1F469 1F3FE ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพ woman: medium-dark skin tone +1F469 1F3FF ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟ woman: dark skin tone +1F9D3 ; fully-qualified # ๐Ÿง“ older adult +1F9D3 1F3FB ; fully-qualified # ๐Ÿง“๐Ÿป older adult: light skin tone +1F9D3 1F3FC ; fully-qualified # ๐Ÿง“๐Ÿผ older adult: medium-light skin tone +1F9D3 1F3FD ; fully-qualified # ๐Ÿง“๐Ÿฝ older adult: medium skin tone +1F9D3 1F3FE ; fully-qualified # ๐Ÿง“๐Ÿพ older adult: medium-dark skin tone +1F9D3 1F3FF ; fully-qualified # ๐Ÿง“๐Ÿฟ older adult: dark skin tone +1F474 ; fully-qualified # ๐Ÿ‘ด old man +1F474 1F3FB ; fully-qualified # ๐Ÿ‘ด๐Ÿป old man: light skin tone +1F474 1F3FC ; fully-qualified # ๐Ÿ‘ด๐Ÿผ old man: medium-light skin tone +1F474 1F3FD ; fully-qualified # ๐Ÿ‘ด๐Ÿฝ old man: medium skin tone +1F474 1F3FE ; fully-qualified # ๐Ÿ‘ด๐Ÿพ old man: medium-dark skin tone +1F474 1F3FF ; fully-qualified # ๐Ÿ‘ด๐Ÿฟ old man: dark skin tone +1F475 ; fully-qualified # ๐Ÿ‘ต old woman +1F475 1F3FB ; fully-qualified # ๐Ÿ‘ต๐Ÿป old woman: light skin tone +1F475 1F3FC ; fully-qualified # ๐Ÿ‘ต๐Ÿผ old woman: medium-light skin tone +1F475 1F3FD ; fully-qualified # ๐Ÿ‘ต๐Ÿฝ old woman: medium skin tone +1F475 1F3FE ; fully-qualified # ๐Ÿ‘ต๐Ÿพ old woman: medium-dark skin tone +1F475 1F3FF ; fully-qualified # ๐Ÿ‘ต๐Ÿฟ old woman: dark skin tone + +# subgroup: person-role +1F468 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘จโ€โš•๏ธ man health worker +1F468 200D 2695 ; non-fully-qualified # ๐Ÿ‘จโ€โš• man health worker +1F468 1F3FB 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€โš•๏ธ man health worker: light skin tone +1F468 1F3FB 200D 2695 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿปโ€โš• man health worker: light skin tone +1F468 1F3FC 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€โš•๏ธ man health worker: medium-light skin tone +1F468 1F3FC 200D 2695 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿผโ€โš• man health worker: medium-light skin tone +1F468 1F3FD 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€โš•๏ธ man health worker: medium skin tone +1F468 1F3FD 200D 2695 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€โš• man health worker: medium skin tone +1F468 1F3FE 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€โš•๏ธ man health worker: medium-dark skin tone +1F468 1F3FE 200D 2695 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿพโ€โš• man health worker: medium-dark skin tone +1F468 1F3FF 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€โš•๏ธ man health worker: dark skin tone +1F468 1F3FF 200D 2695 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€โš• man health worker: dark skin tone +1F469 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘ฉโ€โš•๏ธ woman health worker +1F469 200D 2695 ; non-fully-qualified # ๐Ÿ‘ฉโ€โš• woman health worker +1F469 1F3FB 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€โš•๏ธ woman health worker: light skin tone +1F469 1F3FB 200D 2695 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€โš• woman health worker: light skin tone +1F469 1F3FC 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€โš•๏ธ woman health worker: medium-light skin tone +1F469 1F3FC 200D 2695 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€โš• woman health worker: medium-light skin tone +1F469 1F3FD 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€โš•๏ธ woman health worker: medium skin tone +1F469 1F3FD 200D 2695 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€โš• woman health worker: medium skin tone +1F469 1F3FE 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€โš•๏ธ woman health worker: medium-dark skin tone +1F469 1F3FE 200D 2695 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€โš• woman health worker: medium-dark skin tone +1F469 1F3FF 200D 2695 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€โš•๏ธ woman health worker: dark skin tone +1F469 1F3FF 200D 2695 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€โš• woman health worker: dark skin tone +1F468 200D 1F393 ; fully-qualified # ๐Ÿ‘จโ€๐ŸŽ“ man student +1F468 1F3FB 200D 1F393 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐ŸŽ“ man student: light skin tone +1F468 1F3FC 200D 1F393 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐ŸŽ“ man student: medium-light skin tone +1F468 1F3FD 200D 1F393 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐ŸŽ“ man student: medium skin tone +1F468 1F3FE 200D 1F393 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐ŸŽ“ man student: medium-dark skin tone +1F468 1F3FF 200D 1F393 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐ŸŽ“ man student: dark skin tone +1F469 200D 1F393 ; fully-qualified # ๐Ÿ‘ฉโ€๐ŸŽ“ woman student +1F469 1F3FB 200D 1F393 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐ŸŽ“ woman student: light skin tone +1F469 1F3FC 200D 1F393 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐ŸŽ“ woman student: medium-light skin tone +1F469 1F3FD 200D 1F393 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐ŸŽ“ woman student: medium skin tone +1F469 1F3FE 200D 1F393 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐ŸŽ“ woman student: medium-dark skin tone +1F469 1F3FF 200D 1F393 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐ŸŽ“ woman student: dark skin tone +1F468 200D 1F3EB ; fully-qualified # ๐Ÿ‘จโ€๐Ÿซ man teacher +1F468 1F3FB 200D 1F3EB ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿซ man teacher: light skin tone +1F468 1F3FC 200D 1F3EB ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿซ man teacher: medium-light skin tone +1F468 1F3FD 200D 1F3EB ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿซ man teacher: medium skin tone +1F468 1F3FE 200D 1F3EB ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿซ man teacher: medium-dark skin tone +1F468 1F3FF 200D 1F3EB ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿซ man teacher: dark skin tone +1F469 200D 1F3EB ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿซ woman teacher +1F469 1F3FB 200D 1F3EB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿซ woman teacher: light skin tone +1F469 1F3FC 200D 1F3EB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿซ woman teacher: medium-light skin tone +1F469 1F3FD 200D 1F3EB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿซ woman teacher: medium skin tone +1F469 1F3FE 200D 1F3EB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿซ woman teacher: medium-dark skin tone +1F469 1F3FF 200D 1F3EB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿซ woman teacher: dark skin tone +1F468 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘จโ€โš–๏ธ man judge +1F468 200D 2696 ; non-fully-qualified # ๐Ÿ‘จโ€โš– man judge +1F468 1F3FB 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€โš–๏ธ man judge: light skin tone +1F468 1F3FB 200D 2696 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿปโ€โš– man judge: light skin tone +1F468 1F3FC 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€โš–๏ธ man judge: medium-light skin tone +1F468 1F3FC 200D 2696 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿผโ€โš– man judge: medium-light skin tone +1F468 1F3FD 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€โš–๏ธ man judge: medium skin tone +1F468 1F3FD 200D 2696 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€โš– man judge: medium skin tone +1F468 1F3FE 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€โš–๏ธ man judge: medium-dark skin tone +1F468 1F3FE 200D 2696 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿพโ€โš– man judge: medium-dark skin tone +1F468 1F3FF 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€โš–๏ธ man judge: dark skin tone +1F468 1F3FF 200D 2696 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€โš– man judge: dark skin tone +1F469 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘ฉโ€โš–๏ธ woman judge +1F469 200D 2696 ; non-fully-qualified # ๐Ÿ‘ฉโ€โš– woman judge +1F469 1F3FB 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€โš–๏ธ woman judge: light skin tone +1F469 1F3FB 200D 2696 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€โš– woman judge: light skin tone +1F469 1F3FC 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€โš–๏ธ woman judge: medium-light skin tone +1F469 1F3FC 200D 2696 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€โš– woman judge: medium-light skin tone +1F469 1F3FD 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€โš–๏ธ woman judge: medium skin tone +1F469 1F3FD 200D 2696 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€โš– woman judge: medium skin tone +1F469 1F3FE 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€โš–๏ธ woman judge: medium-dark skin tone +1F469 1F3FE 200D 2696 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€โš– woman judge: medium-dark skin tone +1F469 1F3FF 200D 2696 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€โš–๏ธ woman judge: dark skin tone +1F469 1F3FF 200D 2696 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€โš– woman judge: dark skin tone +1F468 200D 1F33E ; fully-qualified # ๐Ÿ‘จโ€๐ŸŒพ man farmer +1F468 1F3FB 200D 1F33E ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐ŸŒพ man farmer: light skin tone +1F468 1F3FC 200D 1F33E ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐ŸŒพ man farmer: medium-light skin tone +1F468 1F3FD 200D 1F33E ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐ŸŒพ man farmer: medium skin tone +1F468 1F3FE 200D 1F33E ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐ŸŒพ man farmer: medium-dark skin tone +1F468 1F3FF 200D 1F33E ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐ŸŒพ man farmer: dark skin tone +1F469 200D 1F33E ; fully-qualified # ๐Ÿ‘ฉโ€๐ŸŒพ woman farmer +1F469 1F3FB 200D 1F33E ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐ŸŒพ woman farmer: light skin tone +1F469 1F3FC 200D 1F33E ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐ŸŒพ woman farmer: medium-light skin tone +1F469 1F3FD 200D 1F33E ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐ŸŒพ woman farmer: medium skin tone +1F469 1F3FE 200D 1F33E ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐ŸŒพ woman farmer: medium-dark skin tone +1F469 1F3FF 200D 1F33E ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐ŸŒพ woman farmer: dark skin tone +1F468 200D 1F373 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿณ man cook +1F468 1F3FB 200D 1F373 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿณ man cook: light skin tone +1F468 1F3FC 200D 1F373 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿณ man cook: medium-light skin tone +1F468 1F3FD 200D 1F373 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿณ man cook: medium skin tone +1F468 1F3FE 200D 1F373 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿณ man cook: medium-dark skin tone +1F468 1F3FF 200D 1F373 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿณ man cook: dark skin tone +1F469 200D 1F373 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿณ woman cook +1F469 1F3FB 200D 1F373 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿณ woman cook: light skin tone +1F469 1F3FC 200D 1F373 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿณ woman cook: medium-light skin tone +1F469 1F3FD 200D 1F373 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿณ woman cook: medium skin tone +1F469 1F3FE 200D 1F373 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿณ woman cook: medium-dark skin tone +1F469 1F3FF 200D 1F373 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿณ woman cook: dark skin tone +1F468 200D 1F527 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ”ง man mechanic +1F468 1F3FB 200D 1F527 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ง man mechanic: light skin tone +1F468 1F3FC 200D 1F527 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿ”ง man mechanic: medium-light skin tone +1F468 1F3FD 200D 1F527 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿ”ง man mechanic: medium skin tone +1F468 1F3FE 200D 1F527 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿ”ง man mechanic: medium-dark skin tone +1F468 1F3FF 200D 1F527 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿ”ง man mechanic: dark skin tone +1F469 200D 1F527 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ”ง woman mechanic +1F469 1F3FB 200D 1F527 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ”ง woman mechanic: light skin tone +1F469 1F3FC 200D 1F527 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ”ง woman mechanic: medium-light skin tone +1F469 1F3FD 200D 1F527 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ”ง woman mechanic: medium skin tone +1F469 1F3FE 200D 1F527 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿ”ง woman mechanic: medium-dark skin tone +1F469 1F3FF 200D 1F527 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿ”ง woman mechanic: dark skin tone +1F468 200D 1F3ED ; fully-qualified # ๐Ÿ‘จโ€๐Ÿญ man factory worker +1F468 1F3FB 200D 1F3ED ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿญ man factory worker: light skin tone +1F468 1F3FC 200D 1F3ED ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿญ man factory worker: medium-light skin tone +1F468 1F3FD 200D 1F3ED ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿญ man factory worker: medium skin tone +1F468 1F3FE 200D 1F3ED ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿญ man factory worker: medium-dark skin tone +1F468 1F3FF 200D 1F3ED ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿญ man factory worker: dark skin tone +1F469 200D 1F3ED ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿญ woman factory worker +1F469 1F3FB 200D 1F3ED ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿญ woman factory worker: light skin tone +1F469 1F3FC 200D 1F3ED ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿญ woman factory worker: medium-light skin tone +1F469 1F3FD 200D 1F3ED ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿญ woman factory worker: medium skin tone +1F469 1F3FE 200D 1F3ED ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿญ woman factory worker: medium-dark skin tone +1F469 1F3FF 200D 1F3ED ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿญ woman factory worker: dark skin tone +1F468 200D 1F4BC ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ’ผ man office worker +1F468 1F3FB 200D 1F4BC ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ผ man office worker: light skin tone +1F468 1F3FC 200D 1F4BC ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ผ man office worker: medium-light skin tone +1F468 1F3FD 200D 1F4BC ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿ’ผ man office worker: medium skin tone +1F468 1F3FE 200D 1F4BC ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿ’ผ man office worker: medium-dark skin tone +1F468 1F3FF 200D 1F4BC ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿ’ผ man office worker: dark skin tone +1F469 200D 1F4BC ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ’ผ woman office worker +1F469 1F3FB 200D 1F4BC ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ผ woman office worker: light skin tone +1F469 1F3FC 200D 1F4BC ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ’ผ woman office worker: medium-light skin tone +1F469 1F3FD 200D 1F4BC ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ’ผ woman office worker: medium skin tone +1F469 1F3FE 200D 1F4BC ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿ’ผ woman office worker: medium-dark skin tone +1F469 1F3FF 200D 1F4BC ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿ’ผ woman office worker: dark skin tone +1F468 200D 1F52C ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ”ฌ man scientist +1F468 1F3FB 200D 1F52C ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ฌ man scientist: light skin tone +1F468 1F3FC 200D 1F52C ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿ”ฌ man scientist: medium-light skin tone +1F468 1F3FD 200D 1F52C ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿ”ฌ man scientist: medium skin tone +1F468 1F3FE 200D 1F52C ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿ”ฌ man scientist: medium-dark skin tone +1F468 1F3FF 200D 1F52C ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿ”ฌ man scientist: dark skin tone +1F469 200D 1F52C ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ”ฌ woman scientist +1F469 1F3FB 200D 1F52C ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ”ฌ woman scientist: light skin tone +1F469 1F3FC 200D 1F52C ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ”ฌ woman scientist: medium-light skin tone +1F469 1F3FD 200D 1F52C ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ”ฌ woman scientist: medium skin tone +1F469 1F3FE 200D 1F52C ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿ”ฌ woman scientist: medium-dark skin tone +1F469 1F3FF 200D 1F52C ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿ”ฌ woman scientist: dark skin tone +1F468 200D 1F4BB ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ’ป man technologist +1F468 1F3FB 200D 1F4BB ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป man technologist: light skin tone +1F468 1F3FC 200D 1F4BB ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป man technologist: medium-light skin tone +1F468 1F3FD 200D 1F4BB ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿ’ป man technologist: medium skin tone +1F468 1F3FE 200D 1F4BB ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿ’ป man technologist: medium-dark skin tone +1F468 1F3FF 200D 1F4BB ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿ’ป man technologist: dark skin tone +1F469 200D 1F4BB ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ’ป woman technologist +1F469 1F3FB 200D 1F4BB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป woman technologist: light skin tone +1F469 1F3FC 200D 1F4BB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ’ป woman technologist: medium-light skin tone +1F469 1F3FD 200D 1F4BB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ’ป woman technologist: medium skin tone +1F469 1F3FE 200D 1F4BB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿ’ป woman technologist: medium-dark skin tone +1F469 1F3FF 200D 1F4BB ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿ’ป woman technologist: dark skin tone +1F468 200D 1F3A4 ; fully-qualified # ๐Ÿ‘จโ€๐ŸŽค man singer +1F468 1F3FB 200D 1F3A4 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐ŸŽค man singer: light skin tone +1F468 1F3FC 200D 1F3A4 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐ŸŽค man singer: medium-light skin tone +1F468 1F3FD 200D 1F3A4 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐ŸŽค man singer: medium skin tone +1F468 1F3FE 200D 1F3A4 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐ŸŽค man singer: medium-dark skin tone +1F468 1F3FF 200D 1F3A4 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐ŸŽค man singer: dark skin tone +1F469 200D 1F3A4 ; fully-qualified # ๐Ÿ‘ฉโ€๐ŸŽค woman singer +1F469 1F3FB 200D 1F3A4 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐ŸŽค woman singer: light skin tone +1F469 1F3FC 200D 1F3A4 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐ŸŽค woman singer: medium-light skin tone +1F469 1F3FD 200D 1F3A4 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐ŸŽค woman singer: medium skin tone +1F469 1F3FE 200D 1F3A4 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐ŸŽค woman singer: medium-dark skin tone +1F469 1F3FF 200D 1F3A4 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐ŸŽค woman singer: dark skin tone +1F468 200D 1F3A8 ; fully-qualified # ๐Ÿ‘จโ€๐ŸŽจ man artist +1F468 1F3FB 200D 1F3A8 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐ŸŽจ man artist: light skin tone +1F468 1F3FC 200D 1F3A8 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐ŸŽจ man artist: medium-light skin tone +1F468 1F3FD 200D 1F3A8 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐ŸŽจ man artist: medium skin tone +1F468 1F3FE 200D 1F3A8 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐ŸŽจ man artist: medium-dark skin tone +1F468 1F3FF 200D 1F3A8 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐ŸŽจ man artist: dark skin tone +1F469 200D 1F3A8 ; fully-qualified # ๐Ÿ‘ฉโ€๐ŸŽจ woman artist +1F469 1F3FB 200D 1F3A8 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐ŸŽจ woman artist: light skin tone +1F469 1F3FC 200D 1F3A8 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐ŸŽจ woman artist: medium-light skin tone +1F469 1F3FD 200D 1F3A8 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐ŸŽจ woman artist: medium skin tone +1F469 1F3FE 200D 1F3A8 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐ŸŽจ woman artist: medium-dark skin tone +1F469 1F3FF 200D 1F3A8 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐ŸŽจ woman artist: dark skin tone +1F468 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘จโ€โœˆ๏ธ man pilot +1F468 200D 2708 ; non-fully-qualified # ๐Ÿ‘จโ€โœˆ man pilot +1F468 1F3FB 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€โœˆ๏ธ man pilot: light skin tone +1F468 1F3FB 200D 2708 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿปโ€โœˆ man pilot: light skin tone +1F468 1F3FC 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€โœˆ๏ธ man pilot: medium-light skin tone +1F468 1F3FC 200D 2708 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿผโ€โœˆ man pilot: medium-light skin tone +1F468 1F3FD 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€โœˆ๏ธ man pilot: medium skin tone +1F468 1F3FD 200D 2708 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€โœˆ man pilot: medium skin tone +1F468 1F3FE 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€โœˆ๏ธ man pilot: medium-dark skin tone +1F468 1F3FE 200D 2708 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿพโ€โœˆ man pilot: medium-dark skin tone +1F468 1F3FF 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€โœˆ๏ธ man pilot: dark skin tone +1F468 1F3FF 200D 2708 ; non-fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€โœˆ man pilot: dark skin tone +1F469 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘ฉโ€โœˆ๏ธ woman pilot +1F469 200D 2708 ; non-fully-qualified # ๐Ÿ‘ฉโ€โœˆ woman pilot +1F469 1F3FB 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€โœˆ๏ธ woman pilot: light skin tone +1F469 1F3FB 200D 2708 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€โœˆ woman pilot: light skin tone +1F469 1F3FC 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€โœˆ๏ธ woman pilot: medium-light skin tone +1F469 1F3FC 200D 2708 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€โœˆ woman pilot: medium-light skin tone +1F469 1F3FD 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€โœˆ๏ธ woman pilot: medium skin tone +1F469 1F3FD 200D 2708 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€โœˆ woman pilot: medium skin tone +1F469 1F3FE 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€โœˆ๏ธ woman pilot: medium-dark skin tone +1F469 1F3FE 200D 2708 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€โœˆ woman pilot: medium-dark skin tone +1F469 1F3FF 200D 2708 FE0F ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€โœˆ๏ธ woman pilot: dark skin tone +1F469 1F3FF 200D 2708 ; non-fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€โœˆ woman pilot: dark skin tone +1F468 200D 1F680 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿš€ man astronaut +1F468 1F3FB 200D 1F680 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿš€ man astronaut: light skin tone +1F468 1F3FC 200D 1F680 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿš€ man astronaut: medium-light skin tone +1F468 1F3FD 200D 1F680 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿš€ man astronaut: medium skin tone +1F468 1F3FE 200D 1F680 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿš€ man astronaut: medium-dark skin tone +1F468 1F3FF 200D 1F680 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿš€ man astronaut: dark skin tone +1F469 200D 1F680 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿš€ woman astronaut +1F469 1F3FB 200D 1F680 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿš€ woman astronaut: light skin tone +1F469 1F3FC 200D 1F680 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿš€ woman astronaut: medium-light skin tone +1F469 1F3FD 200D 1F680 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿš€ woman astronaut: medium skin tone +1F469 1F3FE 200D 1F680 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿš€ woman astronaut: medium-dark skin tone +1F469 1F3FF 200D 1F680 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿš€ woman astronaut: dark skin tone +1F468 200D 1F692 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿš’ man firefighter +1F468 1F3FB 200D 1F692 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿš’ man firefighter: light skin tone +1F468 1F3FC 200D 1F692 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿš’ man firefighter: medium-light skin tone +1F468 1F3FD 200D 1F692 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿš’ man firefighter: medium skin tone +1F468 1F3FE 200D 1F692 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿš’ man firefighter: medium-dark skin tone +1F468 1F3FF 200D 1F692 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿš’ man firefighter: dark skin tone +1F469 200D 1F692 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿš’ woman firefighter +1F469 1F3FB 200D 1F692 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿš’ woman firefighter: light skin tone +1F469 1F3FC 200D 1F692 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿš’ woman firefighter: medium-light skin tone +1F469 1F3FD 200D 1F692 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿš’ woman firefighter: medium skin tone +1F469 1F3FE 200D 1F692 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿš’ woman firefighter: medium-dark skin tone +1F469 1F3FF 200D 1F692 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿš’ woman firefighter: dark skin tone +1F46E ; fully-qualified # ๐Ÿ‘ฎ police officer +1F46E 1F3FB ; fully-qualified # ๐Ÿ‘ฎ๐Ÿป police officer: light skin tone +1F46E 1F3FC ; fully-qualified # ๐Ÿ‘ฎ๐Ÿผ police officer: medium-light skin tone +1F46E 1F3FD ; fully-qualified # ๐Ÿ‘ฎ๐Ÿฝ police officer: medium skin tone +1F46E 1F3FE ; fully-qualified # ๐Ÿ‘ฎ๐Ÿพ police officer: medium-dark skin tone +1F46E 1F3FF ; fully-qualified # ๐Ÿ‘ฎ๐Ÿฟ police officer: dark skin tone +1F46E 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฎโ€โ™‚๏ธ man police officer +1F46E 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฎโ€โ™‚ man police officer +1F46E 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿปโ€โ™‚๏ธ man police officer: light skin tone +1F46E 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿปโ€โ™‚ man police officer: light skin tone +1F46E 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿผโ€โ™‚๏ธ man police officer: medium-light skin tone +1F46E 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿผโ€โ™‚ man police officer: medium-light skin tone +1F46E 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿฝโ€โ™‚๏ธ man police officer: medium skin tone +1F46E 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿฝโ€โ™‚ man police officer: medium skin tone +1F46E 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿพโ€โ™‚๏ธ man police officer: medium-dark skin tone +1F46E 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿพโ€โ™‚ man police officer: medium-dark skin tone +1F46E 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿฟโ€โ™‚๏ธ man police officer: dark skin tone +1F46E 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿฟโ€โ™‚ man police officer: dark skin tone +1F46E 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฎโ€โ™€๏ธ woman police officer +1F46E 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฎโ€โ™€ woman police officer +1F46E 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿปโ€โ™€๏ธ woman police officer: light skin tone +1F46E 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿปโ€โ™€ woman police officer: light skin tone +1F46E 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿผโ€โ™€๏ธ woman police officer: medium-light skin tone +1F46E 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿผโ€โ™€ woman police officer: medium-light skin tone +1F46E 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿฝโ€โ™€๏ธ woman police officer: medium skin tone +1F46E 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿฝโ€โ™€ woman police officer: medium skin tone +1F46E 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿพโ€โ™€๏ธ woman police officer: medium-dark skin tone +1F46E 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿพโ€โ™€ woman police officer: medium-dark skin tone +1F46E 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฎ๐Ÿฟโ€โ™€๏ธ woman police officer: dark skin tone +1F46E 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฎ๐Ÿฟโ€โ™€ woman police officer: dark skin tone +1F575 FE0F ; fully-qualified # ๐Ÿ•ต๏ธ detective +1F575 ; non-fully-qualified # ๐Ÿ•ต detective +1F575 1F3FB ; fully-qualified # ๐Ÿ•ต๐Ÿป detective: light skin tone +1F575 1F3FC ; fully-qualified # ๐Ÿ•ต๐Ÿผ detective: medium-light skin tone +1F575 1F3FD ; fully-qualified # ๐Ÿ•ต๐Ÿฝ detective: medium skin tone +1F575 1F3FE ; fully-qualified # ๐Ÿ•ต๐Ÿพ detective: medium-dark skin tone +1F575 1F3FF ; fully-qualified # ๐Ÿ•ต๐Ÿฟ detective: dark skin tone +1F575 FE0F 200D 2642 FE0F ; fully-qualified # ๐Ÿ•ต๏ธโ€โ™‚๏ธ man detective +1F575 200D 2642 FE0F ; non-fully-qualified # ๐Ÿ•ตโ€โ™‚๏ธ man detective +1F575 FE0F 200D 2642 ; non-fully-qualified # ๐Ÿ•ต๏ธโ€โ™‚ man detective +1F575 200D 2642 ; non-fully-qualified # ๐Ÿ•ตโ€โ™‚ man detective +1F575 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿปโ€โ™‚๏ธ man detective: light skin tone +1F575 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ•ต๐Ÿปโ€โ™‚ man detective: light skin tone +1F575 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿผโ€โ™‚๏ธ man detective: medium-light skin tone +1F575 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ•ต๐Ÿผโ€โ™‚ man detective: medium-light skin tone +1F575 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿฝโ€โ™‚๏ธ man detective: medium skin tone +1F575 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ•ต๐Ÿฝโ€โ™‚ man detective: medium skin tone +1F575 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿพโ€โ™‚๏ธ man detective: medium-dark skin tone +1F575 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ•ต๐Ÿพโ€โ™‚ man detective: medium-dark skin tone +1F575 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿฟโ€โ™‚๏ธ man detective: dark skin tone +1F575 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ•ต๐Ÿฟโ€โ™‚ man detective: dark skin tone +1F575 FE0F 200D 2640 FE0F ; fully-qualified # ๐Ÿ•ต๏ธโ€โ™€๏ธ woman detective +1F575 200D 2640 FE0F ; non-fully-qualified # ๐Ÿ•ตโ€โ™€๏ธ woman detective +1F575 FE0F 200D 2640 ; non-fully-qualified # ๐Ÿ•ต๏ธโ€โ™€ woman detective +1F575 200D 2640 ; non-fully-qualified # ๐Ÿ•ตโ€โ™€ woman detective +1F575 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿปโ€โ™€๏ธ woman detective: light skin tone +1F575 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ•ต๐Ÿปโ€โ™€ woman detective: light skin tone +1F575 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿผโ€โ™€๏ธ woman detective: medium-light skin tone +1F575 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ•ต๐Ÿผโ€โ™€ woman detective: medium-light skin tone +1F575 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿฝโ€โ™€๏ธ woman detective: medium skin tone +1F575 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ•ต๐Ÿฝโ€โ™€ woman detective: medium skin tone +1F575 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿพโ€โ™€๏ธ woman detective: medium-dark skin tone +1F575 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ•ต๐Ÿพโ€โ™€ woman detective: medium-dark skin tone +1F575 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ•ต๐Ÿฟโ€โ™€๏ธ woman detective: dark skin tone +1F575 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ•ต๐Ÿฟโ€โ™€ woman detective: dark skin tone +1F482 ; fully-qualified # ๐Ÿ’‚ guard +1F482 1F3FB ; fully-qualified # ๐Ÿ’‚๐Ÿป guard: light skin tone +1F482 1F3FC ; fully-qualified # ๐Ÿ’‚๐Ÿผ guard: medium-light skin tone +1F482 1F3FD ; fully-qualified # ๐Ÿ’‚๐Ÿฝ guard: medium skin tone +1F482 1F3FE ; fully-qualified # ๐Ÿ’‚๐Ÿพ guard: medium-dark skin tone +1F482 1F3FF ; fully-qualified # ๐Ÿ’‚๐Ÿฟ guard: dark skin tone +1F482 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‚โ€โ™‚๏ธ man guard +1F482 200D 2642 ; non-fully-qualified # ๐Ÿ’‚โ€โ™‚ man guard +1F482 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿปโ€โ™‚๏ธ man guard: light skin tone +1F482 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ’‚๐Ÿปโ€โ™‚ man guard: light skin tone +1F482 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿผโ€โ™‚๏ธ man guard: medium-light skin tone +1F482 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ’‚๐Ÿผโ€โ™‚ man guard: medium-light skin tone +1F482 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿฝโ€โ™‚๏ธ man guard: medium skin tone +1F482 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ’‚๐Ÿฝโ€โ™‚ man guard: medium skin tone +1F482 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿพโ€โ™‚๏ธ man guard: medium-dark skin tone +1F482 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ’‚๐Ÿพโ€โ™‚ man guard: medium-dark skin tone +1F482 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿฟโ€โ™‚๏ธ man guard: dark skin tone +1F482 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ’‚๐Ÿฟโ€โ™‚ man guard: dark skin tone +1F482 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‚โ€โ™€๏ธ woman guard +1F482 200D 2640 ; non-fully-qualified # ๐Ÿ’‚โ€โ™€ woman guard +1F482 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿปโ€โ™€๏ธ woman guard: light skin tone +1F482 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ’‚๐Ÿปโ€โ™€ woman guard: light skin tone +1F482 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿผโ€โ™€๏ธ woman guard: medium-light skin tone +1F482 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ’‚๐Ÿผโ€โ™€ woman guard: medium-light skin tone +1F482 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿฝโ€โ™€๏ธ woman guard: medium skin tone +1F482 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ’‚๐Ÿฝโ€โ™€ woman guard: medium skin tone +1F482 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿพโ€โ™€๏ธ woman guard: medium-dark skin tone +1F482 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ’‚๐Ÿพโ€โ™€ woman guard: medium-dark skin tone +1F482 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‚๐Ÿฟโ€โ™€๏ธ woman guard: dark skin tone +1F482 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ’‚๐Ÿฟโ€โ™€ woman guard: dark skin tone +1F477 ; fully-qualified # ๐Ÿ‘ท construction worker +1F477 1F3FB ; fully-qualified # ๐Ÿ‘ท๐Ÿป construction worker: light skin tone +1F477 1F3FC ; fully-qualified # ๐Ÿ‘ท๐Ÿผ construction worker: medium-light skin tone +1F477 1F3FD ; fully-qualified # ๐Ÿ‘ท๐Ÿฝ construction worker: medium skin tone +1F477 1F3FE ; fully-qualified # ๐Ÿ‘ท๐Ÿพ construction worker: medium-dark skin tone +1F477 1F3FF ; fully-qualified # ๐Ÿ‘ท๐Ÿฟ construction worker: dark skin tone +1F477 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ทโ€โ™‚๏ธ man construction worker +1F477 200D 2642 ; non-fully-qualified # ๐Ÿ‘ทโ€โ™‚ man construction worker +1F477 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿปโ€โ™‚๏ธ man construction worker: light skin tone +1F477 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿปโ€โ™‚ man construction worker: light skin tone +1F477 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿผโ€โ™‚๏ธ man construction worker: medium-light skin tone +1F477 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿผโ€โ™‚ man construction worker: medium-light skin tone +1F477 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿฝโ€โ™‚๏ธ man construction worker: medium skin tone +1F477 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿฝโ€โ™‚ man construction worker: medium skin tone +1F477 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿพโ€โ™‚๏ธ man construction worker: medium-dark skin tone +1F477 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿพโ€โ™‚ man construction worker: medium-dark skin tone +1F477 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿฟโ€โ™‚๏ธ man construction worker: dark skin tone +1F477 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿฟโ€โ™‚ man construction worker: dark skin tone +1F477 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ทโ€โ™€๏ธ woman construction worker +1F477 200D 2640 ; non-fully-qualified # ๐Ÿ‘ทโ€โ™€ woman construction worker +1F477 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿปโ€โ™€๏ธ woman construction worker: light skin tone +1F477 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿปโ€โ™€ woman construction worker: light skin tone +1F477 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿผโ€โ™€๏ธ woman construction worker: medium-light skin tone +1F477 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿผโ€โ™€ woman construction worker: medium-light skin tone +1F477 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿฝโ€โ™€๏ธ woman construction worker: medium skin tone +1F477 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿฝโ€โ™€ woman construction worker: medium skin tone +1F477 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿพโ€โ™€๏ธ woman construction worker: medium-dark skin tone +1F477 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿพโ€โ™€ woman construction worker: medium-dark skin tone +1F477 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ท๐Ÿฟโ€โ™€๏ธ woman construction worker: dark skin tone +1F477 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ‘ท๐Ÿฟโ€โ™€ woman construction worker: dark skin tone +1F934 ; fully-qualified # ๐Ÿคด prince +1F934 1F3FB ; fully-qualified # ๐Ÿคด๐Ÿป prince: light skin tone +1F934 1F3FC ; fully-qualified # ๐Ÿคด๐Ÿผ prince: medium-light skin tone +1F934 1F3FD ; fully-qualified # ๐Ÿคด๐Ÿฝ prince: medium skin tone +1F934 1F3FE ; fully-qualified # ๐Ÿคด๐Ÿพ prince: medium-dark skin tone +1F934 1F3FF ; fully-qualified # ๐Ÿคด๐Ÿฟ prince: dark skin tone +1F478 ; fully-qualified # ๐Ÿ‘ธ princess +1F478 1F3FB ; fully-qualified # ๐Ÿ‘ธ๐Ÿป princess: light skin tone +1F478 1F3FC ; fully-qualified # ๐Ÿ‘ธ๐Ÿผ princess: medium-light skin tone +1F478 1F3FD ; fully-qualified # ๐Ÿ‘ธ๐Ÿฝ princess: medium skin tone +1F478 1F3FE ; fully-qualified # ๐Ÿ‘ธ๐Ÿพ princess: medium-dark skin tone +1F478 1F3FF ; fully-qualified # ๐Ÿ‘ธ๐Ÿฟ princess: dark skin tone +1F473 ; fully-qualified # ๐Ÿ‘ณ person wearing turban +1F473 1F3FB ; fully-qualified # ๐Ÿ‘ณ๐Ÿป person wearing turban: light skin tone +1F473 1F3FC ; fully-qualified # ๐Ÿ‘ณ๐Ÿผ person wearing turban: medium-light skin tone +1F473 1F3FD ; fully-qualified # ๐Ÿ‘ณ๐Ÿฝ person wearing turban: medium skin tone +1F473 1F3FE ; fully-qualified # ๐Ÿ‘ณ๐Ÿพ person wearing turban: medium-dark skin tone +1F473 1F3FF ; fully-qualified # ๐Ÿ‘ณ๐Ÿฟ person wearing turban: dark skin tone +1F473 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ณโ€โ™‚๏ธ man wearing turban +1F473 200D 2642 ; non-fully-qualified # ๐Ÿ‘ณโ€โ™‚ man wearing turban +1F473 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿปโ€โ™‚๏ธ man wearing turban: light skin tone +1F473 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿปโ€โ™‚ man wearing turban: light skin tone +1F473 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿผโ€โ™‚๏ธ man wearing turban: medium-light skin tone +1F473 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿผโ€โ™‚ man wearing turban: medium-light skin tone +1F473 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿฝโ€โ™‚๏ธ man wearing turban: medium skin tone +1F473 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿฝโ€โ™‚ man wearing turban: medium skin tone +1F473 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿพโ€โ™‚๏ธ man wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿพโ€โ™‚ man wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿฟโ€โ™‚๏ธ man wearing turban: dark skin tone +1F473 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿฟโ€โ™‚ man wearing turban: dark skin tone +1F473 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ณโ€โ™€๏ธ woman wearing turban +1F473 200D 2640 ; non-fully-qualified # ๐Ÿ‘ณโ€โ™€ woman wearing turban +1F473 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿปโ€โ™€๏ธ woman wearing turban: light skin tone +1F473 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿปโ€โ™€ woman wearing turban: light skin tone +1F473 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿผโ€โ™€๏ธ woman wearing turban: medium-light skin tone +1F473 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿผโ€โ™€ woman wearing turban: medium-light skin tone +1F473 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿฝโ€โ™€๏ธ woman wearing turban: medium skin tone +1F473 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿฝโ€โ™€ woman wearing turban: medium skin tone +1F473 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿพโ€โ™€๏ธ woman wearing turban: medium-dark skin tone +1F473 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿพโ€โ™€ woman wearing turban: medium-dark skin tone +1F473 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ณ๐Ÿฟโ€โ™€๏ธ woman wearing turban: dark skin tone +1F473 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ‘ณ๐Ÿฟโ€โ™€ woman wearing turban: dark skin tone +1F472 ; fully-qualified # ๐Ÿ‘ฒ man with Chinese cap +1F472 1F3FB ; fully-qualified # ๐Ÿ‘ฒ๐Ÿป man with Chinese cap: light skin tone +1F472 1F3FC ; fully-qualified # ๐Ÿ‘ฒ๐Ÿผ man with Chinese cap: medium-light skin tone +1F472 1F3FD ; fully-qualified # ๐Ÿ‘ฒ๐Ÿฝ man with Chinese cap: medium skin tone +1F472 1F3FE ; fully-qualified # ๐Ÿ‘ฒ๐Ÿพ man with Chinese cap: medium-dark skin tone +1F472 1F3FF ; fully-qualified # ๐Ÿ‘ฒ๐Ÿฟ man with Chinese cap: dark skin tone +1F9D5 ; fully-qualified # ๐Ÿง• woman with headscarf +1F9D5 1F3FB ; fully-qualified # ๐Ÿง•๐Ÿป woman with headscarf: light skin tone +1F9D5 1F3FC ; fully-qualified # ๐Ÿง•๐Ÿผ woman with headscarf: medium-light skin tone +1F9D5 1F3FD ; fully-qualified # ๐Ÿง•๐Ÿฝ woman with headscarf: medium skin tone +1F9D5 1F3FE ; fully-qualified # ๐Ÿง•๐Ÿพ woman with headscarf: medium-dark skin tone +1F9D5 1F3FF ; fully-qualified # ๐Ÿง•๐Ÿฟ woman with headscarf: dark skin tone +1F9D4 ; fully-qualified # ๐Ÿง” bearded person +1F9D4 1F3FB ; fully-qualified # ๐Ÿง”๐Ÿป bearded person: light skin tone +1F9D4 1F3FC ; fully-qualified # ๐Ÿง”๐Ÿผ bearded person: medium-light skin tone +1F9D4 1F3FD ; fully-qualified # ๐Ÿง”๐Ÿฝ bearded person: medium skin tone +1F9D4 1F3FE ; fully-qualified # ๐Ÿง”๐Ÿพ bearded person: medium-dark skin tone +1F9D4 1F3FF ; fully-qualified # ๐Ÿง”๐Ÿฟ bearded person: dark skin tone +1F471 ; fully-qualified # ๐Ÿ‘ฑ blond-haired person +1F471 1F3FB ; fully-qualified # ๐Ÿ‘ฑ๐Ÿป blond-haired person: light skin tone +1F471 1F3FC ; fully-qualified # ๐Ÿ‘ฑ๐Ÿผ blond-haired person: medium-light skin tone +1F471 1F3FD ; fully-qualified # ๐Ÿ‘ฑ๐Ÿฝ blond-haired person: medium skin tone +1F471 1F3FE ; fully-qualified # ๐Ÿ‘ฑ๐Ÿพ blond-haired person: medium-dark skin tone +1F471 1F3FF ; fully-qualified # ๐Ÿ‘ฑ๐Ÿฟ blond-haired person: dark skin tone +1F471 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฑโ€โ™‚๏ธ blond-haired man +1F471 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฑโ€โ™‚ blond-haired man +1F471 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿปโ€โ™‚๏ธ blond-haired man: light skin tone +1F471 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿปโ€โ™‚ blond-haired man: light skin tone +1F471 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿผโ€โ™‚๏ธ blond-haired man: medium-light skin tone +1F471 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿผโ€โ™‚ blond-haired man: medium-light skin tone +1F471 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿฝโ€โ™‚๏ธ blond-haired man: medium skin tone +1F471 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿฝโ€โ™‚ blond-haired man: medium skin tone +1F471 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿพโ€โ™‚๏ธ blond-haired man: medium-dark skin tone +1F471 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿพโ€โ™‚ blond-haired man: medium-dark skin tone +1F471 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿฟโ€โ™‚๏ธ blond-haired man: dark skin tone +1F471 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿฟโ€โ™‚ blond-haired man: dark skin tone +1F471 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฑโ€โ™€๏ธ blond-haired woman +1F471 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฑโ€โ™€ blond-haired woman +1F471 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿปโ€โ™€๏ธ blond-haired woman: light skin tone +1F471 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿปโ€โ™€ blond-haired woman: light skin tone +1F471 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿผโ€โ™€๏ธ blond-haired woman: medium-light skin tone +1F471 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿผโ€โ™€ blond-haired woman: medium-light skin tone +1F471 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿฝโ€โ™€๏ธ blond-haired woman: medium skin tone +1F471 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿฝโ€โ™€ blond-haired woman: medium skin tone +1F471 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿพโ€โ™€๏ธ blond-haired woman: medium-dark skin tone +1F471 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿพโ€โ™€ blond-haired woman: medium-dark skin tone +1F471 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฑ๐Ÿฟโ€โ™€๏ธ blond-haired woman: dark skin tone +1F471 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฑ๐Ÿฟโ€โ™€ blond-haired woman: dark skin tone +1F468 200D 1F9B0 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿฆฐ man, red haired +1F468 1F3FB 200D 1F9B0 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿฆฐ man, red haired: light skin tone +1F468 1F3FC 200D 1F9B0 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿฆฐ man, red haired: medium-light skin tone +1F468 1F3FD 200D 1F9B0 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿฆฐ man, red haired: medium skin tone +1F468 1F3FE 200D 1F9B0 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿฆฐ man, red haired: medium-dark skin tone +1F468 1F3FF 200D 1F9B0 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿฆฐ man, red haired: dark skin tone +1F469 200D 1F9B0 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿฆฐ woman, red haired +1F469 1F3FB 200D 1F9B0 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿฆฐ woman, red haired: light skin tone +1F469 1F3FC 200D 1F9B0 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿฆฐ woman, red haired: medium-light skin tone +1F469 1F3FD 200D 1F9B0 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿฆฐ woman, red haired: medium skin tone +1F469 1F3FE 200D 1F9B0 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿฆฐ woman, red haired: medium-dark skin tone +1F469 1F3FF 200D 1F9B0 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿฆฐ woman, red haired: dark skin tone +1F468 200D 1F9B1 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿฆฑ man, curly haired +1F468 1F3FB 200D 1F9B1 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿฆฑ man, curly haired: light skin tone +1F468 1F3FC 200D 1F9B1 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿฆฑ man, curly haired: medium-light skin tone +1F468 1F3FD 200D 1F9B1 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿฆฑ man, curly haired: medium skin tone +1F468 1F3FE 200D 1F9B1 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿฆฑ man, curly haired: medium-dark skin tone +1F468 1F3FF 200D 1F9B1 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿฆฑ man, curly haired: dark skin tone +1F469 200D 1F9B1 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿฆฑ woman, curly haired +1F469 1F3FB 200D 1F9B1 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿฆฑ woman, curly haired: light skin tone +1F469 1F3FC 200D 1F9B1 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿฆฑ woman, curly haired: medium-light skin tone +1F469 1F3FD 200D 1F9B1 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿฆฑ woman, curly haired: medium skin tone +1F469 1F3FE 200D 1F9B1 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿฆฑ woman, curly haired: medium-dark skin tone +1F469 1F3FF 200D 1F9B1 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿฆฑ woman, curly haired: dark skin tone +1F468 200D 1F9B2 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿฆฒ man, bald +1F468 1F3FB 200D 1F9B2 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿฆฒ man, bald: light skin tone +1F468 1F3FC 200D 1F9B2 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿฆฒ man, bald: medium-light skin tone +1F468 1F3FD 200D 1F9B2 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿฆฒ man, bald: medium skin tone +1F468 1F3FE 200D 1F9B2 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿฆฒ man, bald: medium-dark skin tone +1F468 1F3FF 200D 1F9B2 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿฆฒ man, bald: dark skin tone +1F469 200D 1F9B2 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿฆฒ woman, bald +1F469 1F3FB 200D 1F9B2 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿฆฒ woman, bald: light skin tone +1F469 1F3FC 200D 1F9B2 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿฆฒ woman, bald: medium-light skin tone +1F469 1F3FD 200D 1F9B2 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿฆฒ woman, bald: medium skin tone +1F469 1F3FE 200D 1F9B2 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿฆฒ woman, bald: medium-dark skin tone +1F469 1F3FF 200D 1F9B2 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿฆฒ woman, bald: dark skin tone +1F468 200D 1F9B3 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿฆณ man, white haired +1F468 1F3FB 200D 1F9B3 ; fully-qualified # ๐Ÿ‘จ๐Ÿปโ€๐Ÿฆณ man, white haired: light skin tone +1F468 1F3FC 200D 1F9B3 ; fully-qualified # ๐Ÿ‘จ๐Ÿผโ€๐Ÿฆณ man, white haired: medium-light skin tone +1F468 1F3FD 200D 1F9B3 ; fully-qualified # ๐Ÿ‘จ๐Ÿฝโ€๐Ÿฆณ man, white haired: medium skin tone +1F468 1F3FE 200D 1F9B3 ; fully-qualified # ๐Ÿ‘จ๐Ÿพโ€๐Ÿฆณ man, white haired: medium-dark skin tone +1F468 1F3FF 200D 1F9B3 ; fully-qualified # ๐Ÿ‘จ๐Ÿฟโ€๐Ÿฆณ man, white haired: dark skin tone +1F469 200D 1F9B3 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿฆณ woman, white haired +1F469 1F3FB 200D 1F9B3 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿฆณ woman, white haired: light skin tone +1F469 1F3FC 200D 1F9B3 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿผโ€๐Ÿฆณ woman, white haired: medium-light skin tone +1F469 1F3FD 200D 1F9B3 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿฆณ woman, white haired: medium skin tone +1F469 1F3FE 200D 1F9B3 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿพโ€๐Ÿฆณ woman, white haired: medium-dark skin tone +1F469 1F3FF 200D 1F9B3 ; fully-qualified # ๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿฆณ woman, white haired: dark skin tone +1F935 ; fully-qualified # ๐Ÿคต man in tuxedo +1F935 1F3FB ; fully-qualified # ๐Ÿคต๐Ÿป man in tuxedo: light skin tone +1F935 1F3FC ; fully-qualified # ๐Ÿคต๐Ÿผ man in tuxedo: medium-light skin tone +1F935 1F3FD ; fully-qualified # ๐Ÿคต๐Ÿฝ man in tuxedo: medium skin tone +1F935 1F3FE ; fully-qualified # ๐Ÿคต๐Ÿพ man in tuxedo: medium-dark skin tone +1F935 1F3FF ; fully-qualified # ๐Ÿคต๐Ÿฟ man in tuxedo: dark skin tone +1F470 ; fully-qualified # ๐Ÿ‘ฐ bride with veil +1F470 1F3FB ; fully-qualified # ๐Ÿ‘ฐ๐Ÿป bride with veil: light skin tone +1F470 1F3FC ; fully-qualified # ๐Ÿ‘ฐ๐Ÿผ bride with veil: medium-light skin tone +1F470 1F3FD ; fully-qualified # ๐Ÿ‘ฐ๐Ÿฝ bride with veil: medium skin tone +1F470 1F3FE ; fully-qualified # ๐Ÿ‘ฐ๐Ÿพ bride with veil: medium-dark skin tone +1F470 1F3FF ; fully-qualified # ๐Ÿ‘ฐ๐Ÿฟ bride with veil: dark skin tone +1F930 ; fully-qualified # ๐Ÿคฐ pregnant woman +1F930 1F3FB ; fully-qualified # ๐Ÿคฐ๐Ÿป pregnant woman: light skin tone +1F930 1F3FC ; fully-qualified # ๐Ÿคฐ๐Ÿผ pregnant woman: medium-light skin tone +1F930 1F3FD ; fully-qualified # ๐Ÿคฐ๐Ÿฝ pregnant woman: medium skin tone +1F930 1F3FE ; fully-qualified # ๐Ÿคฐ๐Ÿพ pregnant woman: medium-dark skin tone +1F930 1F3FF ; fully-qualified # ๐Ÿคฐ๐Ÿฟ pregnant woman: dark skin tone +1F931 ; fully-qualified # ๐Ÿคฑ breast-feeding +1F931 1F3FB ; fully-qualified # ๐Ÿคฑ๐Ÿป breast-feeding: light skin tone +1F931 1F3FC ; fully-qualified # ๐Ÿคฑ๐Ÿผ breast-feeding: medium-light skin tone +1F931 1F3FD ; fully-qualified # ๐Ÿคฑ๐Ÿฝ breast-feeding: medium skin tone +1F931 1F3FE ; fully-qualified # ๐Ÿคฑ๐Ÿพ breast-feeding: medium-dark skin tone +1F931 1F3FF ; fully-qualified # ๐Ÿคฑ๐Ÿฟ breast-feeding: dark skin tone + +# subgroup: person-fantasy +1F47C ; fully-qualified # ๐Ÿ‘ผ baby angel +1F47C 1F3FB ; fully-qualified # ๐Ÿ‘ผ๐Ÿป baby angel: light skin tone +1F47C 1F3FC ; fully-qualified # ๐Ÿ‘ผ๐Ÿผ baby angel: medium-light skin tone +1F47C 1F3FD ; fully-qualified # ๐Ÿ‘ผ๐Ÿฝ baby angel: medium skin tone +1F47C 1F3FE ; fully-qualified # ๐Ÿ‘ผ๐Ÿพ baby angel: medium-dark skin tone +1F47C 1F3FF ; fully-qualified # ๐Ÿ‘ผ๐Ÿฟ baby angel: dark skin tone +1F385 ; fully-qualified # ๐ŸŽ… Santa Claus +1F385 1F3FB ; fully-qualified # ๐ŸŽ…๐Ÿป Santa Claus: light skin tone +1F385 1F3FC ; fully-qualified # ๐ŸŽ…๐Ÿผ Santa Claus: medium-light skin tone +1F385 1F3FD ; fully-qualified # ๐ŸŽ…๐Ÿฝ Santa Claus: medium skin tone +1F385 1F3FE ; fully-qualified # ๐ŸŽ…๐Ÿพ Santa Claus: medium-dark skin tone +1F385 1F3FF ; fully-qualified # ๐ŸŽ…๐Ÿฟ Santa Claus: dark skin tone +1F936 ; fully-qualified # ๐Ÿคถ Mrs. Claus +1F936 1F3FB ; fully-qualified # ๐Ÿคถ๐Ÿป Mrs. Claus: light skin tone +1F936 1F3FC ; fully-qualified # ๐Ÿคถ๐Ÿผ Mrs. Claus: medium-light skin tone +1F936 1F3FD ; fully-qualified # ๐Ÿคถ๐Ÿฝ Mrs. Claus: medium skin tone +1F936 1F3FE ; fully-qualified # ๐Ÿคถ๐Ÿพ Mrs. Claus: medium-dark skin tone +1F936 1F3FF ; fully-qualified # ๐Ÿคถ๐Ÿฟ Mrs. Claus: dark skin tone +1F9B8 ; fully-qualified # ๐Ÿฆธ superhero +1F9B8 1F3FB ; fully-qualified # ๐Ÿฆธ๐Ÿป superhero: light skin tone +1F9B8 1F3FC ; fully-qualified # ๐Ÿฆธ๐Ÿผ superhero: medium-light skin tone +1F9B8 1F3FD ; fully-qualified # ๐Ÿฆธ๐Ÿฝ superhero: medium skin tone +1F9B8 1F3FE ; fully-qualified # ๐Ÿฆธ๐Ÿพ superhero: medium-dark skin tone +1F9B8 1F3FF ; fully-qualified # ๐Ÿฆธ๐Ÿฟ superhero: dark skin tone +1F9B8 200D 2640 FE0F ; fully-qualified # ๐Ÿฆธโ€โ™€๏ธ woman superhero +1F9B8 200D 2640 ; non-fully-qualified # ๐Ÿฆธโ€โ™€ woman superhero +1F9B8 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿปโ€โ™€๏ธ woman superhero: light skin tone +1F9B8 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿฆธ๐Ÿปโ€โ™€ woman superhero: light skin tone +1F9B8 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿผโ€โ™€๏ธ woman superhero: medium-light skin tone +1F9B8 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿฆธ๐Ÿผโ€โ™€ woman superhero: medium-light skin tone +1F9B8 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿฝโ€โ™€๏ธ woman superhero: medium skin tone +1F9B8 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿฆธ๐Ÿฝโ€โ™€ woman superhero: medium skin tone +1F9B8 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿพโ€โ™€๏ธ woman superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿฆธ๐Ÿพโ€โ™€ woman superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿฟโ€โ™€๏ธ woman superhero: dark skin tone +1F9B8 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿฆธ๐Ÿฟโ€โ™€ woman superhero: dark skin tone +1F9B8 200D 2642 FE0F ; fully-qualified # ๐Ÿฆธโ€โ™‚๏ธ man superhero +1F9B8 200D 2642 ; non-fully-qualified # ๐Ÿฆธโ€โ™‚ man superhero +1F9B8 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿปโ€โ™‚๏ธ man superhero: light skin tone +1F9B8 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿฆธ๐Ÿปโ€โ™‚ man superhero: light skin tone +1F9B8 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿผโ€โ™‚๏ธ man superhero: medium-light skin tone +1F9B8 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿฆธ๐Ÿผโ€โ™‚ man superhero: medium-light skin tone +1F9B8 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿฝโ€โ™‚๏ธ man superhero: medium skin tone +1F9B8 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿฆธ๐Ÿฝโ€โ™‚ man superhero: medium skin tone +1F9B8 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿพโ€โ™‚๏ธ man superhero: medium-dark skin tone +1F9B8 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿฆธ๐Ÿพโ€โ™‚ man superhero: medium-dark skin tone +1F9B8 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿฆธ๐Ÿฟโ€โ™‚๏ธ man superhero: dark skin tone +1F9B8 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿฆธ๐Ÿฟโ€โ™‚ man superhero: dark skin tone +1F9B9 ; fully-qualified # ๐Ÿฆน supervillain +1F9B9 1F3FB ; fully-qualified # ๐Ÿฆน๐Ÿป supervillain: light skin tone +1F9B9 1F3FC ; fully-qualified # ๐Ÿฆน๐Ÿผ supervillain: medium-light skin tone +1F9B9 1F3FD ; fully-qualified # ๐Ÿฆน๐Ÿฝ supervillain: medium skin tone +1F9B9 1F3FE ; fully-qualified # ๐Ÿฆน๐Ÿพ supervillain: medium-dark skin tone +1F9B9 1F3FF ; fully-qualified # ๐Ÿฆน๐Ÿฟ supervillain: dark skin tone +1F9B9 200D 2640 FE0F ; fully-qualified # ๐Ÿฆนโ€โ™€๏ธ woman supervillain +1F9B9 200D 2640 ; non-fully-qualified # ๐Ÿฆนโ€โ™€ woman supervillain +1F9B9 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿปโ€โ™€๏ธ woman supervillain: light skin tone +1F9B9 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿฆน๐Ÿปโ€โ™€ woman supervillain: light skin tone +1F9B9 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿผโ€โ™€๏ธ woman supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿฆน๐Ÿผโ€โ™€ woman supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿฝโ€โ™€๏ธ woman supervillain: medium skin tone +1F9B9 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿฆน๐Ÿฝโ€โ™€ woman supervillain: medium skin tone +1F9B9 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿพโ€โ™€๏ธ woman supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿฆน๐Ÿพโ€โ™€ woman supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿฟโ€โ™€๏ธ woman supervillain: dark skin tone +1F9B9 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿฆน๐Ÿฟโ€โ™€ woman supervillain: dark skin tone +1F9B9 200D 2642 FE0F ; fully-qualified # ๐Ÿฆนโ€โ™‚๏ธ man supervillain +1F9B9 200D 2642 ; non-fully-qualified # ๐Ÿฆนโ€โ™‚ man supervillain +1F9B9 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿปโ€โ™‚๏ธ man supervillain: light skin tone +1F9B9 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿฆน๐Ÿปโ€โ™‚ man supervillain: light skin tone +1F9B9 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿผโ€โ™‚๏ธ man supervillain: medium-light skin tone +1F9B9 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿฆน๐Ÿผโ€โ™‚ man supervillain: medium-light skin tone +1F9B9 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿฝโ€โ™‚๏ธ man supervillain: medium skin tone +1F9B9 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿฆน๐Ÿฝโ€โ™‚ man supervillain: medium skin tone +1F9B9 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿพโ€โ™‚๏ธ man supervillain: medium-dark skin tone +1F9B9 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿฆน๐Ÿพโ€โ™‚ man supervillain: medium-dark skin tone +1F9B9 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿฆน๐Ÿฟโ€โ™‚๏ธ man supervillain: dark skin tone +1F9B9 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿฆน๐Ÿฟโ€โ™‚ man supervillain: dark skin tone +1F9D9 ; fully-qualified # ๐Ÿง™ mage +1F9D9 1F3FB ; fully-qualified # ๐Ÿง™๐Ÿป mage: light skin tone +1F9D9 1F3FC ; fully-qualified # ๐Ÿง™๐Ÿผ mage: medium-light skin tone +1F9D9 1F3FD ; fully-qualified # ๐Ÿง™๐Ÿฝ mage: medium skin tone +1F9D9 1F3FE ; fully-qualified # ๐Ÿง™๐Ÿพ mage: medium-dark skin tone +1F9D9 1F3FF ; fully-qualified # ๐Ÿง™๐Ÿฟ mage: dark skin tone +1F9D9 200D 2640 FE0F ; fully-qualified # ๐Ÿง™โ€โ™€๏ธ woman mage +1F9D9 200D 2640 ; non-fully-qualified # ๐Ÿง™โ€โ™€ woman mage +1F9D9 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿง™๐Ÿปโ€โ™€๏ธ woman mage: light skin tone +1F9D9 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿง™๐Ÿปโ€โ™€ woman mage: light skin tone +1F9D9 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿง™๐Ÿผโ€โ™€๏ธ woman mage: medium-light skin tone +1F9D9 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿง™๐Ÿผโ€โ™€ woman mage: medium-light skin tone +1F9D9 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿง™๐Ÿฝโ€โ™€๏ธ woman mage: medium skin tone +1F9D9 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿง™๐Ÿฝโ€โ™€ woman mage: medium skin tone +1F9D9 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿง™๐Ÿพโ€โ™€๏ธ woman mage: medium-dark skin tone +1F9D9 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿง™๐Ÿพโ€โ™€ woman mage: medium-dark skin tone +1F9D9 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿง™๐Ÿฟโ€โ™€๏ธ woman mage: dark skin tone +1F9D9 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿง™๐Ÿฟโ€โ™€ woman mage: dark skin tone +1F9D9 200D 2642 FE0F ; fully-qualified # ๐Ÿง™โ€โ™‚๏ธ man mage +1F9D9 200D 2642 ; non-fully-qualified # ๐Ÿง™โ€โ™‚ man mage +1F9D9 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿง™๐Ÿปโ€โ™‚๏ธ man mage: light skin tone +1F9D9 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿง™๐Ÿปโ€โ™‚ man mage: light skin tone +1F9D9 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿง™๐Ÿผโ€โ™‚๏ธ man mage: medium-light skin tone +1F9D9 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿง™๐Ÿผโ€โ™‚ man mage: medium-light skin tone +1F9D9 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿง™๐Ÿฝโ€โ™‚๏ธ man mage: medium skin tone +1F9D9 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿง™๐Ÿฝโ€โ™‚ man mage: medium skin tone +1F9D9 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿง™๐Ÿพโ€โ™‚๏ธ man mage: medium-dark skin tone +1F9D9 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿง™๐Ÿพโ€โ™‚ man mage: medium-dark skin tone +1F9D9 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿง™๐Ÿฟโ€โ™‚๏ธ man mage: dark skin tone +1F9D9 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿง™๐Ÿฟโ€โ™‚ man mage: dark skin tone +1F9DA ; fully-qualified # ๐Ÿงš fairy +1F9DA 1F3FB ; fully-qualified # ๐Ÿงš๐Ÿป fairy: light skin tone +1F9DA 1F3FC ; fully-qualified # ๐Ÿงš๐Ÿผ fairy: medium-light skin tone +1F9DA 1F3FD ; fully-qualified # ๐Ÿงš๐Ÿฝ fairy: medium skin tone +1F9DA 1F3FE ; fully-qualified # ๐Ÿงš๐Ÿพ fairy: medium-dark skin tone +1F9DA 1F3FF ; fully-qualified # ๐Ÿงš๐Ÿฟ fairy: dark skin tone +1F9DA 200D 2640 FE0F ; fully-qualified # ๐Ÿงšโ€โ™€๏ธ woman fairy +1F9DA 200D 2640 ; non-fully-qualified # ๐Ÿงšโ€โ™€ woman fairy +1F9DA 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿงš๐Ÿปโ€โ™€๏ธ woman fairy: light skin tone +1F9DA 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿงš๐Ÿปโ€โ™€ woman fairy: light skin tone +1F9DA 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿงš๐Ÿผโ€โ™€๏ธ woman fairy: medium-light skin tone +1F9DA 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿงš๐Ÿผโ€โ™€ woman fairy: medium-light skin tone +1F9DA 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿงš๐Ÿฝโ€โ™€๏ธ woman fairy: medium skin tone +1F9DA 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿงš๐Ÿฝโ€โ™€ woman fairy: medium skin tone +1F9DA 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿงš๐Ÿพโ€โ™€๏ธ woman fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿงš๐Ÿพโ€โ™€ woman fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿงš๐Ÿฟโ€โ™€๏ธ woman fairy: dark skin tone +1F9DA 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿงš๐Ÿฟโ€โ™€ woman fairy: dark skin tone +1F9DA 200D 2642 FE0F ; fully-qualified # ๐Ÿงšโ€โ™‚๏ธ man fairy +1F9DA 200D 2642 ; non-fully-qualified # ๐Ÿงšโ€โ™‚ man fairy +1F9DA 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿงš๐Ÿปโ€โ™‚๏ธ man fairy: light skin tone +1F9DA 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿงš๐Ÿปโ€โ™‚ man fairy: light skin tone +1F9DA 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿงš๐Ÿผโ€โ™‚๏ธ man fairy: medium-light skin tone +1F9DA 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿงš๐Ÿผโ€โ™‚ man fairy: medium-light skin tone +1F9DA 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿงš๐Ÿฝโ€โ™‚๏ธ man fairy: medium skin tone +1F9DA 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿงš๐Ÿฝโ€โ™‚ man fairy: medium skin tone +1F9DA 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿงš๐Ÿพโ€โ™‚๏ธ man fairy: medium-dark skin tone +1F9DA 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿงš๐Ÿพโ€โ™‚ man fairy: medium-dark skin tone +1F9DA 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿงš๐Ÿฟโ€โ™‚๏ธ man fairy: dark skin tone +1F9DA 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿงš๐Ÿฟโ€โ™‚ man fairy: dark skin tone +1F9DB ; fully-qualified # ๐Ÿง› vampire +1F9DB 1F3FB ; fully-qualified # ๐Ÿง›๐Ÿป vampire: light skin tone +1F9DB 1F3FC ; fully-qualified # ๐Ÿง›๐Ÿผ vampire: medium-light skin tone +1F9DB 1F3FD ; fully-qualified # ๐Ÿง›๐Ÿฝ vampire: medium skin tone +1F9DB 1F3FE ; fully-qualified # ๐Ÿง›๐Ÿพ vampire: medium-dark skin tone +1F9DB 1F3FF ; fully-qualified # ๐Ÿง›๐Ÿฟ vampire: dark skin tone +1F9DB 200D 2640 FE0F ; fully-qualified # ๐Ÿง›โ€โ™€๏ธ woman vampire +1F9DB 200D 2640 ; non-fully-qualified # ๐Ÿง›โ€โ™€ woman vampire +1F9DB 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿง›๐Ÿปโ€โ™€๏ธ woman vampire: light skin tone +1F9DB 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿง›๐Ÿปโ€โ™€ woman vampire: light skin tone +1F9DB 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿง›๐Ÿผโ€โ™€๏ธ woman vampire: medium-light skin tone +1F9DB 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿง›๐Ÿผโ€โ™€ woman vampire: medium-light skin tone +1F9DB 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿง›๐Ÿฝโ€โ™€๏ธ woman vampire: medium skin tone +1F9DB 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿง›๐Ÿฝโ€โ™€ woman vampire: medium skin tone +1F9DB 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿง›๐Ÿพโ€โ™€๏ธ woman vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿง›๐Ÿพโ€โ™€ woman vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿง›๐Ÿฟโ€โ™€๏ธ woman vampire: dark skin tone +1F9DB 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿง›๐Ÿฟโ€โ™€ woman vampire: dark skin tone +1F9DB 200D 2642 FE0F ; fully-qualified # ๐Ÿง›โ€โ™‚๏ธ man vampire +1F9DB 200D 2642 ; non-fully-qualified # ๐Ÿง›โ€โ™‚ man vampire +1F9DB 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿง›๐Ÿปโ€โ™‚๏ธ man vampire: light skin tone +1F9DB 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿง›๐Ÿปโ€โ™‚ man vampire: light skin tone +1F9DB 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿง›๐Ÿผโ€โ™‚๏ธ man vampire: medium-light skin tone +1F9DB 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿง›๐Ÿผโ€โ™‚ man vampire: medium-light skin tone +1F9DB 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿง›๐Ÿฝโ€โ™‚๏ธ man vampire: medium skin tone +1F9DB 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿง›๐Ÿฝโ€โ™‚ man vampire: medium skin tone +1F9DB 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿง›๐Ÿพโ€โ™‚๏ธ man vampire: medium-dark skin tone +1F9DB 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿง›๐Ÿพโ€โ™‚ man vampire: medium-dark skin tone +1F9DB 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿง›๐Ÿฟโ€โ™‚๏ธ man vampire: dark skin tone +1F9DB 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿง›๐Ÿฟโ€โ™‚ man vampire: dark skin tone +1F9DC ; fully-qualified # ๐Ÿงœ merperson +1F9DC 1F3FB ; fully-qualified # ๐Ÿงœ๐Ÿป merperson: light skin tone +1F9DC 1F3FC ; fully-qualified # ๐Ÿงœ๐Ÿผ merperson: medium-light skin tone +1F9DC 1F3FD ; fully-qualified # ๐Ÿงœ๐Ÿฝ merperson: medium skin tone +1F9DC 1F3FE ; fully-qualified # ๐Ÿงœ๐Ÿพ merperson: medium-dark skin tone +1F9DC 1F3FF ; fully-qualified # ๐Ÿงœ๐Ÿฟ merperson: dark skin tone +1F9DC 200D 2640 FE0F ; fully-qualified # ๐Ÿงœโ€โ™€๏ธ mermaid +1F9DC 200D 2640 ; non-fully-qualified # ๐Ÿงœโ€โ™€ mermaid +1F9DC 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿปโ€โ™€๏ธ mermaid: light skin tone +1F9DC 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿงœ๐Ÿปโ€โ™€ mermaid: light skin tone +1F9DC 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿผโ€โ™€๏ธ mermaid: medium-light skin tone +1F9DC 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿงœ๐Ÿผโ€โ™€ mermaid: medium-light skin tone +1F9DC 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿฝโ€โ™€๏ธ mermaid: medium skin tone +1F9DC 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿงœ๐Ÿฝโ€โ™€ mermaid: medium skin tone +1F9DC 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿพโ€โ™€๏ธ mermaid: medium-dark skin tone +1F9DC 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿงœ๐Ÿพโ€โ™€ mermaid: medium-dark skin tone +1F9DC 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿฟโ€โ™€๏ธ mermaid: dark skin tone +1F9DC 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿงœ๐Ÿฟโ€โ™€ mermaid: dark skin tone +1F9DC 200D 2642 FE0F ; fully-qualified # ๐Ÿงœโ€โ™‚๏ธ merman +1F9DC 200D 2642 ; non-fully-qualified # ๐Ÿงœโ€โ™‚ merman +1F9DC 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿปโ€โ™‚๏ธ merman: light skin tone +1F9DC 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿงœ๐Ÿปโ€โ™‚ merman: light skin tone +1F9DC 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿผโ€โ™‚๏ธ merman: medium-light skin tone +1F9DC 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿงœ๐Ÿผโ€โ™‚ merman: medium-light skin tone +1F9DC 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿฝโ€โ™‚๏ธ merman: medium skin tone +1F9DC 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿงœ๐Ÿฝโ€โ™‚ merman: medium skin tone +1F9DC 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿพโ€โ™‚๏ธ merman: medium-dark skin tone +1F9DC 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿงœ๐Ÿพโ€โ™‚ merman: medium-dark skin tone +1F9DC 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿงœ๐Ÿฟโ€โ™‚๏ธ merman: dark skin tone +1F9DC 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿงœ๐Ÿฟโ€โ™‚ merman: dark skin tone +1F9DD ; fully-qualified # ๐Ÿง elf +1F9DD 1F3FB ; fully-qualified # ๐Ÿง๐Ÿป elf: light skin tone +1F9DD 1F3FC ; fully-qualified # ๐Ÿง๐Ÿผ elf: medium-light skin tone +1F9DD 1F3FD ; fully-qualified # ๐Ÿง๐Ÿฝ elf: medium skin tone +1F9DD 1F3FE ; fully-qualified # ๐Ÿง๐Ÿพ elf: medium-dark skin tone +1F9DD 1F3FF ; fully-qualified # ๐Ÿง๐Ÿฟ elf: dark skin tone +1F9DD 200D 2640 FE0F ; fully-qualified # ๐Ÿงโ€โ™€๏ธ woman elf +1F9DD 200D 2640 ; non-fully-qualified # ๐Ÿงโ€โ™€ woman elf +1F9DD 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿง๐Ÿปโ€โ™€๏ธ woman elf: light skin tone +1F9DD 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿง๐Ÿปโ€โ™€ woman elf: light skin tone +1F9DD 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿง๐Ÿผโ€โ™€๏ธ woman elf: medium-light skin tone +1F9DD 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿง๐Ÿผโ€โ™€ woman elf: medium-light skin tone +1F9DD 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿง๐Ÿฝโ€โ™€๏ธ woman elf: medium skin tone +1F9DD 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿง๐Ÿฝโ€โ™€ woman elf: medium skin tone +1F9DD 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿง๐Ÿพโ€โ™€๏ธ woman elf: medium-dark skin tone +1F9DD 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿง๐Ÿพโ€โ™€ woman elf: medium-dark skin tone +1F9DD 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿง๐Ÿฟโ€โ™€๏ธ woman elf: dark skin tone +1F9DD 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿง๐Ÿฟโ€โ™€ woman elf: dark skin tone +1F9DD 200D 2642 FE0F ; fully-qualified # ๐Ÿงโ€โ™‚๏ธ man elf +1F9DD 200D 2642 ; non-fully-qualified # ๐Ÿงโ€โ™‚ man elf +1F9DD 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿง๐Ÿปโ€โ™‚๏ธ man elf: light skin tone +1F9DD 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿง๐Ÿปโ€โ™‚ man elf: light skin tone +1F9DD 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿง๐Ÿผโ€โ™‚๏ธ man elf: medium-light skin tone +1F9DD 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿง๐Ÿผโ€โ™‚ man elf: medium-light skin tone +1F9DD 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿง๐Ÿฝโ€โ™‚๏ธ man elf: medium skin tone +1F9DD 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿง๐Ÿฝโ€โ™‚ man elf: medium skin tone +1F9DD 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿง๐Ÿพโ€โ™‚๏ธ man elf: medium-dark skin tone +1F9DD 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿง๐Ÿพโ€โ™‚ man elf: medium-dark skin tone +1F9DD 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿง๐Ÿฟโ€โ™‚๏ธ man elf: dark skin tone +1F9DD 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿง๐Ÿฟโ€โ™‚ man elf: dark skin tone +1F9DE ; fully-qualified # ๐Ÿงž genie +1F9DE 200D 2640 FE0F ; fully-qualified # ๐Ÿงžโ€โ™€๏ธ woman genie +1F9DE 200D 2640 ; non-fully-qualified # ๐Ÿงžโ€โ™€ woman genie +1F9DE 200D 2642 FE0F ; fully-qualified # ๐Ÿงžโ€โ™‚๏ธ man genie +1F9DE 200D 2642 ; non-fully-qualified # ๐Ÿงžโ€โ™‚ man genie +1F9DF ; fully-qualified # ๐ŸงŸ zombie +1F9DF 200D 2640 FE0F ; fully-qualified # ๐ŸงŸโ€โ™€๏ธ woman zombie +1F9DF 200D 2640 ; non-fully-qualified # ๐ŸงŸโ€โ™€ woman zombie +1F9DF 200D 2642 FE0F ; fully-qualified # ๐ŸงŸโ€โ™‚๏ธ man zombie +1F9DF 200D 2642 ; non-fully-qualified # ๐ŸงŸโ€โ™‚ man zombie + +# subgroup: person-gesture +1F64D ; fully-qualified # ๐Ÿ™ person frowning +1F64D 1F3FB ; fully-qualified # ๐Ÿ™๐Ÿป person frowning: light skin tone +1F64D 1F3FC ; fully-qualified # ๐Ÿ™๐Ÿผ person frowning: medium-light skin tone +1F64D 1F3FD ; fully-qualified # ๐Ÿ™๐Ÿฝ person frowning: medium skin tone +1F64D 1F3FE ; fully-qualified # ๐Ÿ™๐Ÿพ person frowning: medium-dark skin tone +1F64D 1F3FF ; fully-qualified # ๐Ÿ™๐Ÿฟ person frowning: dark skin tone +1F64D 200D 2642 FE0F ; fully-qualified # ๐Ÿ™โ€โ™‚๏ธ man frowning +1F64D 200D 2642 ; non-fully-qualified # ๐Ÿ™โ€โ™‚ man frowning +1F64D 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ™๐Ÿปโ€โ™‚๏ธ man frowning: light skin tone +1F64D 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ™๐Ÿปโ€โ™‚ man frowning: light skin tone +1F64D 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ™๐Ÿผโ€โ™‚๏ธ man frowning: medium-light skin tone +1F64D 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ™๐Ÿผโ€โ™‚ man frowning: medium-light skin tone +1F64D 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ™๐Ÿฝโ€โ™‚๏ธ man frowning: medium skin tone +1F64D 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ™๐Ÿฝโ€โ™‚ man frowning: medium skin tone +1F64D 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ™๐Ÿพโ€โ™‚๏ธ man frowning: medium-dark skin tone +1F64D 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ™๐Ÿพโ€โ™‚ man frowning: medium-dark skin tone +1F64D 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ™๐Ÿฟโ€โ™‚๏ธ man frowning: dark skin tone +1F64D 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ™๐Ÿฟโ€โ™‚ man frowning: dark skin tone +1F64D 200D 2640 FE0F ; fully-qualified # ๐Ÿ™โ€โ™€๏ธ woman frowning +1F64D 200D 2640 ; non-fully-qualified # ๐Ÿ™โ€โ™€ woman frowning +1F64D 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ™๐Ÿปโ€โ™€๏ธ woman frowning: light skin tone +1F64D 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ™๐Ÿปโ€โ™€ woman frowning: light skin tone +1F64D 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ™๐Ÿผโ€โ™€๏ธ woman frowning: medium-light skin tone +1F64D 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ™๐Ÿผโ€โ™€ woman frowning: medium-light skin tone +1F64D 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ™๐Ÿฝโ€โ™€๏ธ woman frowning: medium skin tone +1F64D 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ™๐Ÿฝโ€โ™€ woman frowning: medium skin tone +1F64D 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ™๐Ÿพโ€โ™€๏ธ woman frowning: medium-dark skin tone +1F64D 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ™๐Ÿพโ€โ™€ woman frowning: medium-dark skin tone +1F64D 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ™๐Ÿฟโ€โ™€๏ธ woman frowning: dark skin tone +1F64D 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ™๐Ÿฟโ€โ™€ woman frowning: dark skin tone +1F64E ; fully-qualified # ๐Ÿ™Ž person pouting +1F64E 1F3FB ; fully-qualified # ๐Ÿ™Ž๐Ÿป person pouting: light skin tone +1F64E 1F3FC ; fully-qualified # ๐Ÿ™Ž๐Ÿผ person pouting: medium-light skin tone +1F64E 1F3FD ; fully-qualified # ๐Ÿ™Ž๐Ÿฝ person pouting: medium skin tone +1F64E 1F3FE ; fully-qualified # ๐Ÿ™Ž๐Ÿพ person pouting: medium-dark skin tone +1F64E 1F3FF ; fully-qualified # ๐Ÿ™Ž๐Ÿฟ person pouting: dark skin tone +1F64E 200D 2642 FE0F ; fully-qualified # ๐Ÿ™Žโ€โ™‚๏ธ man pouting +1F64E 200D 2642 ; non-fully-qualified # ๐Ÿ™Žโ€โ™‚ man pouting +1F64E 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿปโ€โ™‚๏ธ man pouting: light skin tone +1F64E 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿปโ€โ™‚ man pouting: light skin tone +1F64E 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿผโ€โ™‚๏ธ man pouting: medium-light skin tone +1F64E 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿผโ€โ™‚ man pouting: medium-light skin tone +1F64E 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿฝโ€โ™‚๏ธ man pouting: medium skin tone +1F64E 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿฝโ€โ™‚ man pouting: medium skin tone +1F64E 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿพโ€โ™‚๏ธ man pouting: medium-dark skin tone +1F64E 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿพโ€โ™‚ man pouting: medium-dark skin tone +1F64E 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿฟโ€โ™‚๏ธ man pouting: dark skin tone +1F64E 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿฟโ€โ™‚ man pouting: dark skin tone +1F64E 200D 2640 FE0F ; fully-qualified # ๐Ÿ™Žโ€โ™€๏ธ woman pouting +1F64E 200D 2640 ; non-fully-qualified # ๐Ÿ™Žโ€โ™€ woman pouting +1F64E 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿปโ€โ™€๏ธ woman pouting: light skin tone +1F64E 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿปโ€โ™€ woman pouting: light skin tone +1F64E 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿผโ€โ™€๏ธ woman pouting: medium-light skin tone +1F64E 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿผโ€โ™€ woman pouting: medium-light skin tone +1F64E 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿฝโ€โ™€๏ธ woman pouting: medium skin tone +1F64E 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿฝโ€โ™€ woman pouting: medium skin tone +1F64E 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿพโ€โ™€๏ธ woman pouting: medium-dark skin tone +1F64E 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿพโ€โ™€ woman pouting: medium-dark skin tone +1F64E 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ™Ž๐Ÿฟโ€โ™€๏ธ woman pouting: dark skin tone +1F64E 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ™Ž๐Ÿฟโ€โ™€ woman pouting: dark skin tone +1F645 ; fully-qualified # ๐Ÿ™… person gesturing NO +1F645 1F3FB ; fully-qualified # ๐Ÿ™…๐Ÿป person gesturing NO: light skin tone +1F645 1F3FC ; fully-qualified # ๐Ÿ™…๐Ÿผ person gesturing NO: medium-light skin tone +1F645 1F3FD ; fully-qualified # ๐Ÿ™…๐Ÿฝ person gesturing NO: medium skin tone +1F645 1F3FE ; fully-qualified # ๐Ÿ™…๐Ÿพ person gesturing NO: medium-dark skin tone +1F645 1F3FF ; fully-qualified # ๐Ÿ™…๐Ÿฟ person gesturing NO: dark skin tone +1F645 200D 2642 FE0F ; fully-qualified # ๐Ÿ™…โ€โ™‚๏ธ man gesturing NO +1F645 200D 2642 ; non-fully-qualified # ๐Ÿ™…โ€โ™‚ man gesturing NO +1F645 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿปโ€โ™‚๏ธ man gesturing NO: light skin tone +1F645 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ™…๐Ÿปโ€โ™‚ man gesturing NO: light skin tone +1F645 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿผโ€โ™‚๏ธ man gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ™…๐Ÿผโ€โ™‚ man gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿฝโ€โ™‚๏ธ man gesturing NO: medium skin tone +1F645 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ™…๐Ÿฝโ€โ™‚ man gesturing NO: medium skin tone +1F645 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿพโ€โ™‚๏ธ man gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ™…๐Ÿพโ€โ™‚ man gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿฟโ€โ™‚๏ธ man gesturing NO: dark skin tone +1F645 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ™…๐Ÿฟโ€โ™‚ man gesturing NO: dark skin tone +1F645 200D 2640 FE0F ; fully-qualified # ๐Ÿ™…โ€โ™€๏ธ woman gesturing NO +1F645 200D 2640 ; non-fully-qualified # ๐Ÿ™…โ€โ™€ woman gesturing NO +1F645 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿปโ€โ™€๏ธ woman gesturing NO: light skin tone +1F645 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ™…๐Ÿปโ€โ™€ woman gesturing NO: light skin tone +1F645 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿผโ€โ™€๏ธ woman gesturing NO: medium-light skin tone +1F645 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ™…๐Ÿผโ€โ™€ woman gesturing NO: medium-light skin tone +1F645 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿฝโ€โ™€๏ธ woman gesturing NO: medium skin tone +1F645 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ™…๐Ÿฝโ€โ™€ woman gesturing NO: medium skin tone +1F645 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿพโ€โ™€๏ธ woman gesturing NO: medium-dark skin tone +1F645 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ™…๐Ÿพโ€โ™€ woman gesturing NO: medium-dark skin tone +1F645 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ™…๐Ÿฟโ€โ™€๏ธ woman gesturing NO: dark skin tone +1F645 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ™…๐Ÿฟโ€โ™€ woman gesturing NO: dark skin tone +1F646 ; fully-qualified # ๐Ÿ™† person gesturing OK +1F646 1F3FB ; fully-qualified # ๐Ÿ™†๐Ÿป person gesturing OK: light skin tone +1F646 1F3FC ; fully-qualified # ๐Ÿ™†๐Ÿผ person gesturing OK: medium-light skin tone +1F646 1F3FD ; fully-qualified # ๐Ÿ™†๐Ÿฝ person gesturing OK: medium skin tone +1F646 1F3FE ; fully-qualified # ๐Ÿ™†๐Ÿพ person gesturing OK: medium-dark skin tone +1F646 1F3FF ; fully-qualified # ๐Ÿ™†๐Ÿฟ person gesturing OK: dark skin tone +1F646 200D 2642 FE0F ; fully-qualified # ๐Ÿ™†โ€โ™‚๏ธ man gesturing OK +1F646 200D 2642 ; non-fully-qualified # ๐Ÿ™†โ€โ™‚ man gesturing OK +1F646 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿปโ€โ™‚๏ธ man gesturing OK: light skin tone +1F646 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ™†๐Ÿปโ€โ™‚ man gesturing OK: light skin tone +1F646 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿผโ€โ™‚๏ธ man gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ™†๐Ÿผโ€โ™‚ man gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿฝโ€โ™‚๏ธ man gesturing OK: medium skin tone +1F646 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ™†๐Ÿฝโ€โ™‚ man gesturing OK: medium skin tone +1F646 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿพโ€โ™‚๏ธ man gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ™†๐Ÿพโ€โ™‚ man gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿฟโ€โ™‚๏ธ man gesturing OK: dark skin tone +1F646 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ™†๐Ÿฟโ€โ™‚ man gesturing OK: dark skin tone +1F646 200D 2640 FE0F ; fully-qualified # ๐Ÿ™†โ€โ™€๏ธ woman gesturing OK +1F646 200D 2640 ; non-fully-qualified # ๐Ÿ™†โ€โ™€ woman gesturing OK +1F646 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿปโ€โ™€๏ธ woman gesturing OK: light skin tone +1F646 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ™†๐Ÿปโ€โ™€ woman gesturing OK: light skin tone +1F646 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿผโ€โ™€๏ธ woman gesturing OK: medium-light skin tone +1F646 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ™†๐Ÿผโ€โ™€ woman gesturing OK: medium-light skin tone +1F646 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿฝโ€โ™€๏ธ woman gesturing OK: medium skin tone +1F646 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ™†๐Ÿฝโ€โ™€ woman gesturing OK: medium skin tone +1F646 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿพโ€โ™€๏ธ woman gesturing OK: medium-dark skin tone +1F646 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ™†๐Ÿพโ€โ™€ woman gesturing OK: medium-dark skin tone +1F646 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ™†๐Ÿฟโ€โ™€๏ธ woman gesturing OK: dark skin tone +1F646 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ™†๐Ÿฟโ€โ™€ woman gesturing OK: dark skin tone +1F481 ; fully-qualified # ๐Ÿ’ person tipping hand +1F481 1F3FB ; fully-qualified # ๐Ÿ’๐Ÿป person tipping hand: light skin tone +1F481 1F3FC ; fully-qualified # ๐Ÿ’๐Ÿผ person tipping hand: medium-light skin tone +1F481 1F3FD ; fully-qualified # ๐Ÿ’๐Ÿฝ person tipping hand: medium skin tone +1F481 1F3FE ; fully-qualified # ๐Ÿ’๐Ÿพ person tipping hand: medium-dark skin tone +1F481 1F3FF ; fully-qualified # ๐Ÿ’๐Ÿฟ person tipping hand: dark skin tone +1F481 200D 2642 FE0F ; fully-qualified # ๐Ÿ’โ€โ™‚๏ธ man tipping hand +1F481 200D 2642 ; non-fully-qualified # ๐Ÿ’โ€โ™‚ man tipping hand +1F481 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ’๐Ÿปโ€โ™‚๏ธ man tipping hand: light skin tone +1F481 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ’๐Ÿปโ€โ™‚ man tipping hand: light skin tone +1F481 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ’๐Ÿผโ€โ™‚๏ธ man tipping hand: medium-light skin tone +1F481 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ’๐Ÿผโ€โ™‚ man tipping hand: medium-light skin tone +1F481 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ’๐Ÿฝโ€โ™‚๏ธ man tipping hand: medium skin tone +1F481 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ’๐Ÿฝโ€โ™‚ man tipping hand: medium skin tone +1F481 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ’๐Ÿพโ€โ™‚๏ธ man tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ’๐Ÿพโ€โ™‚ man tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ’๐Ÿฟโ€โ™‚๏ธ man tipping hand: dark skin tone +1F481 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ’๐Ÿฟโ€โ™‚ man tipping hand: dark skin tone +1F481 200D 2640 FE0F ; fully-qualified # ๐Ÿ’โ€โ™€๏ธ woman tipping hand +1F481 200D 2640 ; non-fully-qualified # ๐Ÿ’โ€โ™€ woman tipping hand +1F481 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ’๐Ÿปโ€โ™€๏ธ woman tipping hand: light skin tone +1F481 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ’๐Ÿปโ€โ™€ woman tipping hand: light skin tone +1F481 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ’๐Ÿผโ€โ™€๏ธ woman tipping hand: medium-light skin tone +1F481 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ’๐Ÿผโ€โ™€ woman tipping hand: medium-light skin tone +1F481 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ’๐Ÿฝโ€โ™€๏ธ woman tipping hand: medium skin tone +1F481 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ’๐Ÿฝโ€โ™€ woman tipping hand: medium skin tone +1F481 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ’๐Ÿพโ€โ™€๏ธ woman tipping hand: medium-dark skin tone +1F481 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ’๐Ÿพโ€โ™€ woman tipping hand: medium-dark skin tone +1F481 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ’๐Ÿฟโ€โ™€๏ธ woman tipping hand: dark skin tone +1F481 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ’๐Ÿฟโ€โ™€ woman tipping hand: dark skin tone +1F64B ; fully-qualified # ๐Ÿ™‹ person raising hand +1F64B 1F3FB ; fully-qualified # ๐Ÿ™‹๐Ÿป person raising hand: light skin tone +1F64B 1F3FC ; fully-qualified # ๐Ÿ™‹๐Ÿผ person raising hand: medium-light skin tone +1F64B 1F3FD ; fully-qualified # ๐Ÿ™‹๐Ÿฝ person raising hand: medium skin tone +1F64B 1F3FE ; fully-qualified # ๐Ÿ™‹๐Ÿพ person raising hand: medium-dark skin tone +1F64B 1F3FF ; fully-qualified # ๐Ÿ™‹๐Ÿฟ person raising hand: dark skin tone +1F64B 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‹โ€โ™‚๏ธ man raising hand +1F64B 200D 2642 ; non-fully-qualified # ๐Ÿ™‹โ€โ™‚ man raising hand +1F64B 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿปโ€โ™‚๏ธ man raising hand: light skin tone +1F64B 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ™‹๐Ÿปโ€โ™‚ man raising hand: light skin tone +1F64B 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿผโ€โ™‚๏ธ man raising hand: medium-light skin tone +1F64B 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ™‹๐Ÿผโ€โ™‚ man raising hand: medium-light skin tone +1F64B 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿฝโ€โ™‚๏ธ man raising hand: medium skin tone +1F64B 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ™‹๐Ÿฝโ€โ™‚ man raising hand: medium skin tone +1F64B 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿพโ€โ™‚๏ธ man raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ™‹๐Ÿพโ€โ™‚ man raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿฟโ€โ™‚๏ธ man raising hand: dark skin tone +1F64B 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ™‹๐Ÿฟโ€โ™‚ man raising hand: dark skin tone +1F64B 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‹โ€โ™€๏ธ woman raising hand +1F64B 200D 2640 ; non-fully-qualified # ๐Ÿ™‹โ€โ™€ woman raising hand +1F64B 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿปโ€โ™€๏ธ woman raising hand: light skin tone +1F64B 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ™‹๐Ÿปโ€โ™€ woman raising hand: light skin tone +1F64B 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿผโ€โ™€๏ธ woman raising hand: medium-light skin tone +1F64B 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ™‹๐Ÿผโ€โ™€ woman raising hand: medium-light skin tone +1F64B 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿฝโ€โ™€๏ธ woman raising hand: medium skin tone +1F64B 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ™‹๐Ÿฝโ€โ™€ woman raising hand: medium skin tone +1F64B 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿพโ€โ™€๏ธ woman raising hand: medium-dark skin tone +1F64B 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ™‹๐Ÿพโ€โ™€ woman raising hand: medium-dark skin tone +1F64B 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‹๐Ÿฟโ€โ™€๏ธ woman raising hand: dark skin tone +1F64B 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ™‹๐Ÿฟโ€โ™€ woman raising hand: dark skin tone +1F647 ; fully-qualified # ๐Ÿ™‡ person bowing +1F647 1F3FB ; fully-qualified # ๐Ÿ™‡๐Ÿป person bowing: light skin tone +1F647 1F3FC ; fully-qualified # ๐Ÿ™‡๐Ÿผ person bowing: medium-light skin tone +1F647 1F3FD ; fully-qualified # ๐Ÿ™‡๐Ÿฝ person bowing: medium skin tone +1F647 1F3FE ; fully-qualified # ๐Ÿ™‡๐Ÿพ person bowing: medium-dark skin tone +1F647 1F3FF ; fully-qualified # ๐Ÿ™‡๐Ÿฟ person bowing: dark skin tone +1F647 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‡โ€โ™‚๏ธ man bowing +1F647 200D 2642 ; non-fully-qualified # ๐Ÿ™‡โ€โ™‚ man bowing +1F647 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿปโ€โ™‚๏ธ man bowing: light skin tone +1F647 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ™‡๐Ÿปโ€โ™‚ man bowing: light skin tone +1F647 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿผโ€โ™‚๏ธ man bowing: medium-light skin tone +1F647 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ™‡๐Ÿผโ€โ™‚ man bowing: medium-light skin tone +1F647 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿฝโ€โ™‚๏ธ man bowing: medium skin tone +1F647 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ™‡๐Ÿฝโ€โ™‚ man bowing: medium skin tone +1F647 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿพโ€โ™‚๏ธ man bowing: medium-dark skin tone +1F647 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ™‡๐Ÿพโ€โ™‚ man bowing: medium-dark skin tone +1F647 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿฟโ€โ™‚๏ธ man bowing: dark skin tone +1F647 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ™‡๐Ÿฟโ€โ™‚ man bowing: dark skin tone +1F647 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‡โ€โ™€๏ธ woman bowing +1F647 200D 2640 ; non-fully-qualified # ๐Ÿ™‡โ€โ™€ woman bowing +1F647 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿปโ€โ™€๏ธ woman bowing: light skin tone +1F647 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ™‡๐Ÿปโ€โ™€ woman bowing: light skin tone +1F647 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿผโ€โ™€๏ธ woman bowing: medium-light skin tone +1F647 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ™‡๐Ÿผโ€โ™€ woman bowing: medium-light skin tone +1F647 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿฝโ€โ™€๏ธ woman bowing: medium skin tone +1F647 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ™‡๐Ÿฝโ€โ™€ woman bowing: medium skin tone +1F647 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿพโ€โ™€๏ธ woman bowing: medium-dark skin tone +1F647 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ™‡๐Ÿพโ€โ™€ woman bowing: medium-dark skin tone +1F647 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ™‡๐Ÿฟโ€โ™€๏ธ woman bowing: dark skin tone +1F647 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ™‡๐Ÿฟโ€โ™€ woman bowing: dark skin tone +1F926 ; fully-qualified # ๐Ÿคฆ person facepalming +1F926 1F3FB ; fully-qualified # ๐Ÿคฆ๐Ÿป person facepalming: light skin tone +1F926 1F3FC ; fully-qualified # ๐Ÿคฆ๐Ÿผ person facepalming: medium-light skin tone +1F926 1F3FD ; fully-qualified # ๐Ÿคฆ๐Ÿฝ person facepalming: medium skin tone +1F926 1F3FE ; fully-qualified # ๐Ÿคฆ๐Ÿพ person facepalming: medium-dark skin tone +1F926 1F3FF ; fully-qualified # ๐Ÿคฆ๐Ÿฟ person facepalming: dark skin tone +1F926 200D 2642 FE0F ; fully-qualified # ๐Ÿคฆโ€โ™‚๏ธ man facepalming +1F926 200D 2642 ; non-fully-qualified # ๐Ÿคฆโ€โ™‚ man facepalming +1F926 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿปโ€โ™‚๏ธ man facepalming: light skin tone +1F926 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿคฆ๐Ÿปโ€โ™‚ man facepalming: light skin tone +1F926 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿผโ€โ™‚๏ธ man facepalming: medium-light skin tone +1F926 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿคฆ๐Ÿผโ€โ™‚ man facepalming: medium-light skin tone +1F926 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿฝโ€โ™‚๏ธ man facepalming: medium skin tone +1F926 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿคฆ๐Ÿฝโ€โ™‚ man facepalming: medium skin tone +1F926 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿพโ€โ™‚๏ธ man facepalming: medium-dark skin tone +1F926 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿคฆ๐Ÿพโ€โ™‚ man facepalming: medium-dark skin tone +1F926 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿฟโ€โ™‚๏ธ man facepalming: dark skin tone +1F926 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿคฆ๐Ÿฟโ€โ™‚ man facepalming: dark skin tone +1F926 200D 2640 FE0F ; fully-qualified # ๐Ÿคฆโ€โ™€๏ธ woman facepalming +1F926 200D 2640 ; non-fully-qualified # ๐Ÿคฆโ€โ™€ woman facepalming +1F926 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿปโ€โ™€๏ธ woman facepalming: light skin tone +1F926 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿคฆ๐Ÿปโ€โ™€ woman facepalming: light skin tone +1F926 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿผโ€โ™€๏ธ woman facepalming: medium-light skin tone +1F926 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿคฆ๐Ÿผโ€โ™€ woman facepalming: medium-light skin tone +1F926 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿฝโ€โ™€๏ธ woman facepalming: medium skin tone +1F926 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿคฆ๐Ÿฝโ€โ™€ woman facepalming: medium skin tone +1F926 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿพโ€โ™€๏ธ woman facepalming: medium-dark skin tone +1F926 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿคฆ๐Ÿพโ€โ™€ woman facepalming: medium-dark skin tone +1F926 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿคฆ๐Ÿฟโ€โ™€๏ธ woman facepalming: dark skin tone +1F926 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿคฆ๐Ÿฟโ€โ™€ woman facepalming: dark skin tone +1F937 ; fully-qualified # ๐Ÿคท person shrugging +1F937 1F3FB ; fully-qualified # ๐Ÿคท๐Ÿป person shrugging: light skin tone +1F937 1F3FC ; fully-qualified # ๐Ÿคท๐Ÿผ person shrugging: medium-light skin tone +1F937 1F3FD ; fully-qualified # ๐Ÿคท๐Ÿฝ person shrugging: medium skin tone +1F937 1F3FE ; fully-qualified # ๐Ÿคท๐Ÿพ person shrugging: medium-dark skin tone +1F937 1F3FF ; fully-qualified # ๐Ÿคท๐Ÿฟ person shrugging: dark skin tone +1F937 200D 2642 FE0F ; fully-qualified # ๐Ÿคทโ€โ™‚๏ธ man shrugging +1F937 200D 2642 ; non-fully-qualified # ๐Ÿคทโ€โ™‚ man shrugging +1F937 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿคท๐Ÿปโ€โ™‚๏ธ man shrugging: light skin tone +1F937 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿคท๐Ÿปโ€โ™‚ man shrugging: light skin tone +1F937 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿคท๐Ÿผโ€โ™‚๏ธ man shrugging: medium-light skin tone +1F937 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿคท๐Ÿผโ€โ™‚ man shrugging: medium-light skin tone +1F937 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿคท๐Ÿฝโ€โ™‚๏ธ man shrugging: medium skin tone +1F937 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿคท๐Ÿฝโ€โ™‚ man shrugging: medium skin tone +1F937 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿคท๐Ÿพโ€โ™‚๏ธ man shrugging: medium-dark skin tone +1F937 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿคท๐Ÿพโ€โ™‚ man shrugging: medium-dark skin tone +1F937 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿคท๐Ÿฟโ€โ™‚๏ธ man shrugging: dark skin tone +1F937 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿคท๐Ÿฟโ€โ™‚ man shrugging: dark skin tone +1F937 200D 2640 FE0F ; fully-qualified # ๐Ÿคทโ€โ™€๏ธ woman shrugging +1F937 200D 2640 ; non-fully-qualified # ๐Ÿคทโ€โ™€ woman shrugging +1F937 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿคท๐Ÿปโ€โ™€๏ธ woman shrugging: light skin tone +1F937 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿคท๐Ÿปโ€โ™€ woman shrugging: light skin tone +1F937 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿคท๐Ÿผโ€โ™€๏ธ woman shrugging: medium-light skin tone +1F937 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿคท๐Ÿผโ€โ™€ woman shrugging: medium-light skin tone +1F937 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿคท๐Ÿฝโ€โ™€๏ธ woman shrugging: medium skin tone +1F937 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿคท๐Ÿฝโ€โ™€ woman shrugging: medium skin tone +1F937 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿคท๐Ÿพโ€โ™€๏ธ woman shrugging: medium-dark skin tone +1F937 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿคท๐Ÿพโ€โ™€ woman shrugging: medium-dark skin tone +1F937 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿคท๐Ÿฟโ€โ™€๏ธ woman shrugging: dark skin tone +1F937 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿคท๐Ÿฟโ€โ™€ woman shrugging: dark skin tone + +# subgroup: person-activity +1F486 ; fully-qualified # ๐Ÿ’† person getting massage +1F486 1F3FB ; fully-qualified # ๐Ÿ’†๐Ÿป person getting massage: light skin tone +1F486 1F3FC ; fully-qualified # ๐Ÿ’†๐Ÿผ person getting massage: medium-light skin tone +1F486 1F3FD ; fully-qualified # ๐Ÿ’†๐Ÿฝ person getting massage: medium skin tone +1F486 1F3FE ; fully-qualified # ๐Ÿ’†๐Ÿพ person getting massage: medium-dark skin tone +1F486 1F3FF ; fully-qualified # ๐Ÿ’†๐Ÿฟ person getting massage: dark skin tone +1F486 200D 2642 FE0F ; fully-qualified # ๐Ÿ’†โ€โ™‚๏ธ man getting massage +1F486 200D 2642 ; non-fully-qualified # ๐Ÿ’†โ€โ™‚ man getting massage +1F486 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿปโ€โ™‚๏ธ man getting massage: light skin tone +1F486 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ’†๐Ÿปโ€โ™‚ man getting massage: light skin tone +1F486 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿผโ€โ™‚๏ธ man getting massage: medium-light skin tone +1F486 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ’†๐Ÿผโ€โ™‚ man getting massage: medium-light skin tone +1F486 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿฝโ€โ™‚๏ธ man getting massage: medium skin tone +1F486 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ’†๐Ÿฝโ€โ™‚ man getting massage: medium skin tone +1F486 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿพโ€โ™‚๏ธ man getting massage: medium-dark skin tone +1F486 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ’†๐Ÿพโ€โ™‚ man getting massage: medium-dark skin tone +1F486 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿฟโ€โ™‚๏ธ man getting massage: dark skin tone +1F486 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ’†๐Ÿฟโ€โ™‚ man getting massage: dark skin tone +1F486 200D 2640 FE0F ; fully-qualified # ๐Ÿ’†โ€โ™€๏ธ woman getting massage +1F486 200D 2640 ; non-fully-qualified # ๐Ÿ’†โ€โ™€ woman getting massage +1F486 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿปโ€โ™€๏ธ woman getting massage: light skin tone +1F486 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ’†๐Ÿปโ€โ™€ woman getting massage: light skin tone +1F486 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿผโ€โ™€๏ธ woman getting massage: medium-light skin tone +1F486 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ’†๐Ÿผโ€โ™€ woman getting massage: medium-light skin tone +1F486 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿฝโ€โ™€๏ธ woman getting massage: medium skin tone +1F486 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ’†๐Ÿฝโ€โ™€ woman getting massage: medium skin tone +1F486 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿพโ€โ™€๏ธ woman getting massage: medium-dark skin tone +1F486 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ’†๐Ÿพโ€โ™€ woman getting massage: medium-dark skin tone +1F486 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ’†๐Ÿฟโ€โ™€๏ธ woman getting massage: dark skin tone +1F486 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ’†๐Ÿฟโ€โ™€ woman getting massage: dark skin tone +1F487 ; fully-qualified # ๐Ÿ’‡ person getting haircut +1F487 1F3FB ; fully-qualified # ๐Ÿ’‡๐Ÿป person getting haircut: light skin tone +1F487 1F3FC ; fully-qualified # ๐Ÿ’‡๐Ÿผ person getting haircut: medium-light skin tone +1F487 1F3FD ; fully-qualified # ๐Ÿ’‡๐Ÿฝ person getting haircut: medium skin tone +1F487 1F3FE ; fully-qualified # ๐Ÿ’‡๐Ÿพ person getting haircut: medium-dark skin tone +1F487 1F3FF ; fully-qualified # ๐Ÿ’‡๐Ÿฟ person getting haircut: dark skin tone +1F487 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‡โ€โ™‚๏ธ man getting haircut +1F487 200D 2642 ; non-fully-qualified # ๐Ÿ’‡โ€โ™‚ man getting haircut +1F487 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿปโ€โ™‚๏ธ man getting haircut: light skin tone +1F487 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ’‡๐Ÿปโ€โ™‚ man getting haircut: light skin tone +1F487 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿผโ€โ™‚๏ธ man getting haircut: medium-light skin tone +1F487 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ’‡๐Ÿผโ€โ™‚ man getting haircut: medium-light skin tone +1F487 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿฝโ€โ™‚๏ธ man getting haircut: medium skin tone +1F487 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ’‡๐Ÿฝโ€โ™‚ man getting haircut: medium skin tone +1F487 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿพโ€โ™‚๏ธ man getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ’‡๐Ÿพโ€โ™‚ man getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿฟโ€โ™‚๏ธ man getting haircut: dark skin tone +1F487 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ’‡๐Ÿฟโ€โ™‚ man getting haircut: dark skin tone +1F487 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‡โ€โ™€๏ธ woman getting haircut +1F487 200D 2640 ; non-fully-qualified # ๐Ÿ’‡โ€โ™€ woman getting haircut +1F487 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿปโ€โ™€๏ธ woman getting haircut: light skin tone +1F487 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ’‡๐Ÿปโ€โ™€ woman getting haircut: light skin tone +1F487 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿผโ€โ™€๏ธ woman getting haircut: medium-light skin tone +1F487 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ’‡๐Ÿผโ€โ™€ woman getting haircut: medium-light skin tone +1F487 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿฝโ€โ™€๏ธ woman getting haircut: medium skin tone +1F487 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ’‡๐Ÿฝโ€โ™€ woman getting haircut: medium skin tone +1F487 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿพโ€โ™€๏ธ woman getting haircut: medium-dark skin tone +1F487 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ’‡๐Ÿพโ€โ™€ woman getting haircut: medium-dark skin tone +1F487 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ’‡๐Ÿฟโ€โ™€๏ธ woman getting haircut: dark skin tone +1F487 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ’‡๐Ÿฟโ€โ™€ woman getting haircut: dark skin tone +1F6B6 ; fully-qualified # ๐Ÿšถ person walking +1F6B6 1F3FB ; fully-qualified # ๐Ÿšถ๐Ÿป person walking: light skin tone +1F6B6 1F3FC ; fully-qualified # ๐Ÿšถ๐Ÿผ person walking: medium-light skin tone +1F6B6 1F3FD ; fully-qualified # ๐Ÿšถ๐Ÿฝ person walking: medium skin tone +1F6B6 1F3FE ; fully-qualified # ๐Ÿšถ๐Ÿพ person walking: medium-dark skin tone +1F6B6 1F3FF ; fully-qualified # ๐Ÿšถ๐Ÿฟ person walking: dark skin tone +1F6B6 200D 2642 FE0F ; fully-qualified # ๐Ÿšถโ€โ™‚๏ธ man walking +1F6B6 200D 2642 ; non-fully-qualified # ๐Ÿšถโ€โ™‚ man walking +1F6B6 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿปโ€โ™‚๏ธ man walking: light skin tone +1F6B6 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿšถ๐Ÿปโ€โ™‚ man walking: light skin tone +1F6B6 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿผโ€โ™‚๏ธ man walking: medium-light skin tone +1F6B6 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿšถ๐Ÿผโ€โ™‚ man walking: medium-light skin tone +1F6B6 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿฝโ€โ™‚๏ธ man walking: medium skin tone +1F6B6 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿšถ๐Ÿฝโ€โ™‚ man walking: medium skin tone +1F6B6 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿพโ€โ™‚๏ธ man walking: medium-dark skin tone +1F6B6 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿšถ๐Ÿพโ€โ™‚ man walking: medium-dark skin tone +1F6B6 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿฟโ€โ™‚๏ธ man walking: dark skin tone +1F6B6 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿšถ๐Ÿฟโ€โ™‚ man walking: dark skin tone +1F6B6 200D 2640 FE0F ; fully-qualified # ๐Ÿšถโ€โ™€๏ธ woman walking +1F6B6 200D 2640 ; non-fully-qualified # ๐Ÿšถโ€โ™€ woman walking +1F6B6 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿปโ€โ™€๏ธ woman walking: light skin tone +1F6B6 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿšถ๐Ÿปโ€โ™€ woman walking: light skin tone +1F6B6 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿผโ€โ™€๏ธ woman walking: medium-light skin tone +1F6B6 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿšถ๐Ÿผโ€โ™€ woman walking: medium-light skin tone +1F6B6 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿฝโ€โ™€๏ธ woman walking: medium skin tone +1F6B6 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿšถ๐Ÿฝโ€โ™€ woman walking: medium skin tone +1F6B6 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿพโ€โ™€๏ธ woman walking: medium-dark skin tone +1F6B6 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿšถ๐Ÿพโ€โ™€ woman walking: medium-dark skin tone +1F6B6 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿšถ๐Ÿฟโ€โ™€๏ธ woman walking: dark skin tone +1F6B6 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿšถ๐Ÿฟโ€โ™€ woman walking: dark skin tone +1F3C3 ; fully-qualified # ๐Ÿƒ person running +1F3C3 1F3FB ; fully-qualified # ๐Ÿƒ๐Ÿป person running: light skin tone +1F3C3 1F3FC ; fully-qualified # ๐Ÿƒ๐Ÿผ person running: medium-light skin tone +1F3C3 1F3FD ; fully-qualified # ๐Ÿƒ๐Ÿฝ person running: medium skin tone +1F3C3 1F3FE ; fully-qualified # ๐Ÿƒ๐Ÿพ person running: medium-dark skin tone +1F3C3 1F3FF ; fully-qualified # ๐Ÿƒ๐Ÿฟ person running: dark skin tone +1F3C3 200D 2642 FE0F ; fully-qualified # ๐Ÿƒโ€โ™‚๏ธ man running +1F3C3 200D 2642 ; non-fully-qualified # ๐Ÿƒโ€โ™‚ man running +1F3C3 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿปโ€โ™‚๏ธ man running: light skin tone +1F3C3 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿƒ๐Ÿปโ€โ™‚ man running: light skin tone +1F3C3 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿผโ€โ™‚๏ธ man running: medium-light skin tone +1F3C3 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿƒ๐Ÿผโ€โ™‚ man running: medium-light skin tone +1F3C3 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿฝโ€โ™‚๏ธ man running: medium skin tone +1F3C3 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿƒ๐Ÿฝโ€โ™‚ man running: medium skin tone +1F3C3 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿพโ€โ™‚๏ธ man running: medium-dark skin tone +1F3C3 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿƒ๐Ÿพโ€โ™‚ man running: medium-dark skin tone +1F3C3 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿฟโ€โ™‚๏ธ man running: dark skin tone +1F3C3 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿƒ๐Ÿฟโ€โ™‚ man running: dark skin tone +1F3C3 200D 2640 FE0F ; fully-qualified # ๐Ÿƒโ€โ™€๏ธ woman running +1F3C3 200D 2640 ; non-fully-qualified # ๐Ÿƒโ€โ™€ woman running +1F3C3 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿปโ€โ™€๏ธ woman running: light skin tone +1F3C3 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿƒ๐Ÿปโ€โ™€ woman running: light skin tone +1F3C3 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿผโ€โ™€๏ธ woman running: medium-light skin tone +1F3C3 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿƒ๐Ÿผโ€โ™€ woman running: medium-light skin tone +1F3C3 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿฝโ€โ™€๏ธ woman running: medium skin tone +1F3C3 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿƒ๐Ÿฝโ€โ™€ woman running: medium skin tone +1F3C3 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿพโ€โ™€๏ธ woman running: medium-dark skin tone +1F3C3 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿƒ๐Ÿพโ€โ™€ woman running: medium-dark skin tone +1F3C3 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿƒ๐Ÿฟโ€โ™€๏ธ woman running: dark skin tone +1F3C3 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿƒ๐Ÿฟโ€โ™€ woman running: dark skin tone +1F483 ; fully-qualified # ๐Ÿ’ƒ woman dancing +1F483 1F3FB ; fully-qualified # ๐Ÿ’ƒ๐Ÿป woman dancing: light skin tone +1F483 1F3FC ; fully-qualified # ๐Ÿ’ƒ๐Ÿผ woman dancing: medium-light skin tone +1F483 1F3FD ; fully-qualified # ๐Ÿ’ƒ๐Ÿฝ woman dancing: medium skin tone +1F483 1F3FE ; fully-qualified # ๐Ÿ’ƒ๐Ÿพ woman dancing: medium-dark skin tone +1F483 1F3FF ; fully-qualified # ๐Ÿ’ƒ๐Ÿฟ woman dancing: dark skin tone +1F57A ; fully-qualified # ๐Ÿ•บ man dancing +1F57A 1F3FB ; fully-qualified # ๐Ÿ•บ๐Ÿป man dancing: light skin tone +1F57A 1F3FC ; fully-qualified # ๐Ÿ•บ๐Ÿผ man dancing: medium-light skin tone +1F57A 1F3FD ; fully-qualified # ๐Ÿ•บ๐Ÿฝ man dancing: medium skin tone +1F57A 1F3FE ; fully-qualified # ๐Ÿ•บ๐Ÿพ man dancing: medium-dark skin tone +1F57A 1F3FF ; fully-qualified # ๐Ÿ•บ๐Ÿฟ man dancing: dark skin tone +1F46F ; fully-qualified # ๐Ÿ‘ฏ people with bunny ears +1F46F 200D 2642 FE0F ; fully-qualified # ๐Ÿ‘ฏโ€โ™‚๏ธ men with bunny ears +1F46F 200D 2642 ; non-fully-qualified # ๐Ÿ‘ฏโ€โ™‚ men with bunny ears +1F46F 200D 2640 FE0F ; fully-qualified # ๐Ÿ‘ฏโ€โ™€๏ธ women with bunny ears +1F46F 200D 2640 ; non-fully-qualified # ๐Ÿ‘ฏโ€โ™€ women with bunny ears +1F9D6 ; fully-qualified # ๐Ÿง– person in steamy room +1F9D6 1F3FB ; fully-qualified # ๐Ÿง–๐Ÿป person in steamy room: light skin tone +1F9D6 1F3FC ; fully-qualified # ๐Ÿง–๐Ÿผ person in steamy room: medium-light skin tone +1F9D6 1F3FD ; fully-qualified # ๐Ÿง–๐Ÿฝ person in steamy room: medium skin tone +1F9D6 1F3FE ; fully-qualified # ๐Ÿง–๐Ÿพ person in steamy room: medium-dark skin tone +1F9D6 1F3FF ; fully-qualified # ๐Ÿง–๐Ÿฟ person in steamy room: dark skin tone +1F9D6 200D 2640 FE0F ; fully-qualified # ๐Ÿง–โ€โ™€๏ธ woman in steamy room +1F9D6 200D 2640 ; non-fully-qualified # ๐Ÿง–โ€โ™€ woman in steamy room +1F9D6 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿง–๐Ÿปโ€โ™€๏ธ woman in steamy room: light skin tone +1F9D6 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿง–๐Ÿปโ€โ™€ woman in steamy room: light skin tone +1F9D6 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿง–๐Ÿผโ€โ™€๏ธ woman in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿง–๐Ÿผโ€โ™€ woman in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿง–๐Ÿฝโ€โ™€๏ธ woman in steamy room: medium skin tone +1F9D6 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿง–๐Ÿฝโ€โ™€ woman in steamy room: medium skin tone +1F9D6 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿง–๐Ÿพโ€โ™€๏ธ woman in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿง–๐Ÿพโ€โ™€ woman in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿง–๐Ÿฟโ€โ™€๏ธ woman in steamy room: dark skin tone +1F9D6 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿง–๐Ÿฟโ€โ™€ woman in steamy room: dark skin tone +1F9D6 200D 2642 FE0F ; fully-qualified # ๐Ÿง–โ€โ™‚๏ธ man in steamy room +1F9D6 200D 2642 ; non-fully-qualified # ๐Ÿง–โ€โ™‚ man in steamy room +1F9D6 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿง–๐Ÿปโ€โ™‚๏ธ man in steamy room: light skin tone +1F9D6 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿง–๐Ÿปโ€โ™‚ man in steamy room: light skin tone +1F9D6 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿง–๐Ÿผโ€โ™‚๏ธ man in steamy room: medium-light skin tone +1F9D6 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿง–๐Ÿผโ€โ™‚ man in steamy room: medium-light skin tone +1F9D6 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿง–๐Ÿฝโ€โ™‚๏ธ man in steamy room: medium skin tone +1F9D6 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿง–๐Ÿฝโ€โ™‚ man in steamy room: medium skin tone +1F9D6 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿง–๐Ÿพโ€โ™‚๏ธ man in steamy room: medium-dark skin tone +1F9D6 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿง–๐Ÿพโ€โ™‚ man in steamy room: medium-dark skin tone +1F9D6 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿง–๐Ÿฟโ€โ™‚๏ธ man in steamy room: dark skin tone +1F9D6 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿง–๐Ÿฟโ€โ™‚ man in steamy room: dark skin tone +1F9D7 ; fully-qualified # ๐Ÿง— person climbing +1F9D7 1F3FB ; fully-qualified # ๐Ÿง—๐Ÿป person climbing: light skin tone +1F9D7 1F3FC ; fully-qualified # ๐Ÿง—๐Ÿผ person climbing: medium-light skin tone +1F9D7 1F3FD ; fully-qualified # ๐Ÿง—๐Ÿฝ person climbing: medium skin tone +1F9D7 1F3FE ; fully-qualified # ๐Ÿง—๐Ÿพ person climbing: medium-dark skin tone +1F9D7 1F3FF ; fully-qualified # ๐Ÿง—๐Ÿฟ person climbing: dark skin tone +1F9D7 200D 2640 FE0F ; fully-qualified # ๐Ÿง—โ€โ™€๏ธ woman climbing +1F9D7 200D 2640 ; non-fully-qualified # ๐Ÿง—โ€โ™€ woman climbing +1F9D7 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿง—๐Ÿปโ€โ™€๏ธ woman climbing: light skin tone +1F9D7 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿง—๐Ÿปโ€โ™€ woman climbing: light skin tone +1F9D7 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿง—๐Ÿผโ€โ™€๏ธ woman climbing: medium-light skin tone +1F9D7 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿง—๐Ÿผโ€โ™€ woman climbing: medium-light skin tone +1F9D7 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿง—๐Ÿฝโ€โ™€๏ธ woman climbing: medium skin tone +1F9D7 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿง—๐Ÿฝโ€โ™€ woman climbing: medium skin tone +1F9D7 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿง—๐Ÿพโ€โ™€๏ธ woman climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿง—๐Ÿพโ€โ™€ woman climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿง—๐Ÿฟโ€โ™€๏ธ woman climbing: dark skin tone +1F9D7 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿง—๐Ÿฟโ€โ™€ woman climbing: dark skin tone +1F9D7 200D 2642 FE0F ; fully-qualified # ๐Ÿง—โ€โ™‚๏ธ man climbing +1F9D7 200D 2642 ; non-fully-qualified # ๐Ÿง—โ€โ™‚ man climbing +1F9D7 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿง—๐Ÿปโ€โ™‚๏ธ man climbing: light skin tone +1F9D7 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿง—๐Ÿปโ€โ™‚ man climbing: light skin tone +1F9D7 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿง—๐Ÿผโ€โ™‚๏ธ man climbing: medium-light skin tone +1F9D7 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿง—๐Ÿผโ€โ™‚ man climbing: medium-light skin tone +1F9D7 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿง—๐Ÿฝโ€โ™‚๏ธ man climbing: medium skin tone +1F9D7 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿง—๐Ÿฝโ€โ™‚ man climbing: medium skin tone +1F9D7 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿง—๐Ÿพโ€โ™‚๏ธ man climbing: medium-dark skin tone +1F9D7 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿง—๐Ÿพโ€โ™‚ man climbing: medium-dark skin tone +1F9D7 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿง—๐Ÿฟโ€โ™‚๏ธ man climbing: dark skin tone +1F9D7 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿง—๐Ÿฟโ€โ™‚ man climbing: dark skin tone +1F9D8 ; fully-qualified # ๐Ÿง˜ person in lotus position +1F9D8 1F3FB ; fully-qualified # ๐Ÿง˜๐Ÿป person in lotus position: light skin tone +1F9D8 1F3FC ; fully-qualified # ๐Ÿง˜๐Ÿผ person in lotus position: medium-light skin tone +1F9D8 1F3FD ; fully-qualified # ๐Ÿง˜๐Ÿฝ person in lotus position: medium skin tone +1F9D8 1F3FE ; fully-qualified # ๐Ÿง˜๐Ÿพ person in lotus position: medium-dark skin tone +1F9D8 1F3FF ; fully-qualified # ๐Ÿง˜๐Ÿฟ person in lotus position: dark skin tone +1F9D8 200D 2640 FE0F ; fully-qualified # ๐Ÿง˜โ€โ™€๏ธ woman in lotus position +1F9D8 200D 2640 ; non-fully-qualified # ๐Ÿง˜โ€โ™€ woman in lotus position +1F9D8 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿปโ€โ™€๏ธ woman in lotus position: light skin tone +1F9D8 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿง˜๐Ÿปโ€โ™€ woman in lotus position: light skin tone +1F9D8 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿผโ€โ™€๏ธ woman in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿง˜๐Ÿผโ€โ™€ woman in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿฝโ€โ™€๏ธ woman in lotus position: medium skin tone +1F9D8 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿง˜๐Ÿฝโ€โ™€ woman in lotus position: medium skin tone +1F9D8 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿพโ€โ™€๏ธ woman in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿง˜๐Ÿพโ€โ™€ woman in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿฟโ€โ™€๏ธ woman in lotus position: dark skin tone +1F9D8 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿง˜๐Ÿฟโ€โ™€ woman in lotus position: dark skin tone +1F9D8 200D 2642 FE0F ; fully-qualified # ๐Ÿง˜โ€โ™‚๏ธ man in lotus position +1F9D8 200D 2642 ; non-fully-qualified # ๐Ÿง˜โ€โ™‚ man in lotus position +1F9D8 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿปโ€โ™‚๏ธ man in lotus position: light skin tone +1F9D8 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿง˜๐Ÿปโ€โ™‚ man in lotus position: light skin tone +1F9D8 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿผโ€โ™‚๏ธ man in lotus position: medium-light skin tone +1F9D8 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿง˜๐Ÿผโ€โ™‚ man in lotus position: medium-light skin tone +1F9D8 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿฝโ€โ™‚๏ธ man in lotus position: medium skin tone +1F9D8 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿง˜๐Ÿฝโ€โ™‚ man in lotus position: medium skin tone +1F9D8 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿพโ€โ™‚๏ธ man in lotus position: medium-dark skin tone +1F9D8 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿง˜๐Ÿพโ€โ™‚ man in lotus position: medium-dark skin tone +1F9D8 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿง˜๐Ÿฟโ€โ™‚๏ธ man in lotus position: dark skin tone +1F9D8 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿง˜๐Ÿฟโ€โ™‚ man in lotus position: dark skin tone +1F6C0 ; fully-qualified # ๐Ÿ›€ person taking bath +1F6C0 1F3FB ; fully-qualified # ๐Ÿ›€๐Ÿป person taking bath: light skin tone +1F6C0 1F3FC ; fully-qualified # ๐Ÿ›€๐Ÿผ person taking bath: medium-light skin tone +1F6C0 1F3FD ; fully-qualified # ๐Ÿ›€๐Ÿฝ person taking bath: medium skin tone +1F6C0 1F3FE ; fully-qualified # ๐Ÿ›€๐Ÿพ person taking bath: medium-dark skin tone +1F6C0 1F3FF ; fully-qualified # ๐Ÿ›€๐Ÿฟ person taking bath: dark skin tone +1F6CC ; fully-qualified # ๐Ÿ›Œ person in bed +1F6CC 1F3FB ; fully-qualified # ๐Ÿ›Œ๐Ÿป person in bed: light skin tone +1F6CC 1F3FC ; fully-qualified # ๐Ÿ›Œ๐Ÿผ person in bed: medium-light skin tone +1F6CC 1F3FD ; fully-qualified # ๐Ÿ›Œ๐Ÿฝ person in bed: medium skin tone +1F6CC 1F3FE ; fully-qualified # ๐Ÿ›Œ๐Ÿพ person in bed: medium-dark skin tone +1F6CC 1F3FF ; fully-qualified # ๐Ÿ›Œ๐Ÿฟ person in bed: dark skin tone +1F574 FE0F ; fully-qualified # ๐Ÿ•ด๏ธ man in suit levitating +1F574 ; non-fully-qualified # ๐Ÿ•ด man in suit levitating +1F574 1F3FB ; fully-qualified # ๐Ÿ•ด๐Ÿป man in suit levitating: light skin tone +1F574 1F3FC ; fully-qualified # ๐Ÿ•ด๐Ÿผ man in suit levitating: medium-light skin tone +1F574 1F3FD ; fully-qualified # ๐Ÿ•ด๐Ÿฝ man in suit levitating: medium skin tone +1F574 1F3FE ; fully-qualified # ๐Ÿ•ด๐Ÿพ man in suit levitating: medium-dark skin tone +1F574 1F3FF ; fully-qualified # ๐Ÿ•ด๐Ÿฟ man in suit levitating: dark skin tone +1F5E3 FE0F ; fully-qualified # ๐Ÿ—ฃ๏ธ speaking head +1F5E3 ; non-fully-qualified # ๐Ÿ—ฃ speaking head +1F464 ; fully-qualified # ๐Ÿ‘ค bust in silhouette +1F465 ; fully-qualified # ๐Ÿ‘ฅ busts in silhouette + +# subgroup: person-sport +1F93A ; fully-qualified # ๐Ÿคบ person fencing +1F3C7 ; fully-qualified # ๐Ÿ‡ horse racing +1F3C7 1F3FB ; fully-qualified # ๐Ÿ‡๐Ÿป horse racing: light skin tone +1F3C7 1F3FC ; fully-qualified # ๐Ÿ‡๐Ÿผ horse racing: medium-light skin tone +1F3C7 1F3FD ; fully-qualified # ๐Ÿ‡๐Ÿฝ horse racing: medium skin tone +1F3C7 1F3FE ; fully-qualified # ๐Ÿ‡๐Ÿพ horse racing: medium-dark skin tone +1F3C7 1F3FF ; fully-qualified # ๐Ÿ‡๐Ÿฟ horse racing: dark skin tone +26F7 FE0F ; fully-qualified # โ›ท๏ธ skier +26F7 ; non-fully-qualified # โ›ท skier +1F3C2 ; fully-qualified # ๐Ÿ‚ snowboarder +1F3C2 1F3FB ; fully-qualified # ๐Ÿ‚๐Ÿป snowboarder: light skin tone +1F3C2 1F3FC ; fully-qualified # ๐Ÿ‚๐Ÿผ snowboarder: medium-light skin tone +1F3C2 1F3FD ; fully-qualified # ๐Ÿ‚๐Ÿฝ snowboarder: medium skin tone +1F3C2 1F3FE ; fully-qualified # ๐Ÿ‚๐Ÿพ snowboarder: medium-dark skin tone +1F3C2 1F3FF ; fully-qualified # ๐Ÿ‚๐Ÿฟ snowboarder: dark skin tone +1F3CC FE0F ; fully-qualified # ๐ŸŒ๏ธ person golfing +1F3CC ; non-fully-qualified # ๐ŸŒ person golfing +1F3CC 1F3FB ; fully-qualified # ๐ŸŒ๐Ÿป person golfing: light skin tone +1F3CC 1F3FC ; fully-qualified # ๐ŸŒ๐Ÿผ person golfing: medium-light skin tone +1F3CC 1F3FD ; fully-qualified # ๐ŸŒ๐Ÿฝ person golfing: medium skin tone +1F3CC 1F3FE ; fully-qualified # ๐ŸŒ๐Ÿพ person golfing: medium-dark skin tone +1F3CC 1F3FF ; fully-qualified # ๐ŸŒ๐Ÿฟ person golfing: dark skin tone +1F3CC FE0F 200D 2642 FE0F ; fully-qualified # ๐ŸŒ๏ธโ€โ™‚๏ธ man golfing +1F3CC 200D 2642 FE0F ; non-fully-qualified # ๐ŸŒโ€โ™‚๏ธ man golfing +1F3CC FE0F 200D 2642 ; non-fully-qualified # ๐ŸŒ๏ธโ€โ™‚ man golfing +1F3CC 200D 2642 ; non-fully-qualified # ๐ŸŒโ€โ™‚ man golfing +1F3CC 1F3FB 200D 2642 FE0F ; fully-qualified # ๐ŸŒ๐Ÿปโ€โ™‚๏ธ man golfing: light skin tone +1F3CC 1F3FB 200D 2642 ; non-fully-qualified # ๐ŸŒ๐Ÿปโ€โ™‚ man golfing: light skin tone +1F3CC 1F3FC 200D 2642 FE0F ; fully-qualified # ๐ŸŒ๐Ÿผโ€โ™‚๏ธ man golfing: medium-light skin tone +1F3CC 1F3FC 200D 2642 ; non-fully-qualified # ๐ŸŒ๐Ÿผโ€โ™‚ man golfing: medium-light skin tone +1F3CC 1F3FD 200D 2642 FE0F ; fully-qualified # ๐ŸŒ๐Ÿฝโ€โ™‚๏ธ man golfing: medium skin tone +1F3CC 1F3FD 200D 2642 ; non-fully-qualified # ๐ŸŒ๐Ÿฝโ€โ™‚ man golfing: medium skin tone +1F3CC 1F3FE 200D 2642 FE0F ; fully-qualified # ๐ŸŒ๐Ÿพโ€โ™‚๏ธ man golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2642 ; non-fully-qualified # ๐ŸŒ๐Ÿพโ€โ™‚ man golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2642 FE0F ; fully-qualified # ๐ŸŒ๐Ÿฟโ€โ™‚๏ธ man golfing: dark skin tone +1F3CC 1F3FF 200D 2642 ; non-fully-qualified # ๐ŸŒ๐Ÿฟโ€โ™‚ man golfing: dark skin tone +1F3CC FE0F 200D 2640 FE0F ; fully-qualified # ๐ŸŒ๏ธโ€โ™€๏ธ woman golfing +1F3CC 200D 2640 FE0F ; non-fully-qualified # ๐ŸŒโ€โ™€๏ธ woman golfing +1F3CC FE0F 200D 2640 ; non-fully-qualified # ๐ŸŒ๏ธโ€โ™€ woman golfing +1F3CC 200D 2640 ; non-fully-qualified # ๐ŸŒโ€โ™€ woman golfing +1F3CC 1F3FB 200D 2640 FE0F ; fully-qualified # ๐ŸŒ๐Ÿปโ€โ™€๏ธ woman golfing: light skin tone +1F3CC 1F3FB 200D 2640 ; non-fully-qualified # ๐ŸŒ๐Ÿปโ€โ™€ woman golfing: light skin tone +1F3CC 1F3FC 200D 2640 FE0F ; fully-qualified # ๐ŸŒ๐Ÿผโ€โ™€๏ธ woman golfing: medium-light skin tone +1F3CC 1F3FC 200D 2640 ; non-fully-qualified # ๐ŸŒ๐Ÿผโ€โ™€ woman golfing: medium-light skin tone +1F3CC 1F3FD 200D 2640 FE0F ; fully-qualified # ๐ŸŒ๐Ÿฝโ€โ™€๏ธ woman golfing: medium skin tone +1F3CC 1F3FD 200D 2640 ; non-fully-qualified # ๐ŸŒ๐Ÿฝโ€โ™€ woman golfing: medium skin tone +1F3CC 1F3FE 200D 2640 FE0F ; fully-qualified # ๐ŸŒ๐Ÿพโ€โ™€๏ธ woman golfing: medium-dark skin tone +1F3CC 1F3FE 200D 2640 ; non-fully-qualified # ๐ŸŒ๐Ÿพโ€โ™€ woman golfing: medium-dark skin tone +1F3CC 1F3FF 200D 2640 FE0F ; fully-qualified # ๐ŸŒ๐Ÿฟโ€โ™€๏ธ woman golfing: dark skin tone +1F3CC 1F3FF 200D 2640 ; non-fully-qualified # ๐ŸŒ๐Ÿฟโ€โ™€ woman golfing: dark skin tone +1F3C4 ; fully-qualified # ๐Ÿ„ person surfing +1F3C4 1F3FB ; fully-qualified # ๐Ÿ„๐Ÿป person surfing: light skin tone +1F3C4 1F3FC ; fully-qualified # ๐Ÿ„๐Ÿผ person surfing: medium-light skin tone +1F3C4 1F3FD ; fully-qualified # ๐Ÿ„๐Ÿฝ person surfing: medium skin tone +1F3C4 1F3FE ; fully-qualified # ๐Ÿ„๐Ÿพ person surfing: medium-dark skin tone +1F3C4 1F3FF ; fully-qualified # ๐Ÿ„๐Ÿฟ person surfing: dark skin tone +1F3C4 200D 2642 FE0F ; fully-qualified # ๐Ÿ„โ€โ™‚๏ธ man surfing +1F3C4 200D 2642 ; non-fully-qualified # ๐Ÿ„โ€โ™‚ man surfing +1F3C4 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ„๐Ÿปโ€โ™‚๏ธ man surfing: light skin tone +1F3C4 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ„๐Ÿปโ€โ™‚ man surfing: light skin tone +1F3C4 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ„๐Ÿผโ€โ™‚๏ธ man surfing: medium-light skin tone +1F3C4 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ„๐Ÿผโ€โ™‚ man surfing: medium-light skin tone +1F3C4 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ„๐Ÿฝโ€โ™‚๏ธ man surfing: medium skin tone +1F3C4 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ„๐Ÿฝโ€โ™‚ man surfing: medium skin tone +1F3C4 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ„๐Ÿพโ€โ™‚๏ธ man surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ„๐Ÿพโ€โ™‚ man surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ„๐Ÿฟโ€โ™‚๏ธ man surfing: dark skin tone +1F3C4 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ„๐Ÿฟโ€โ™‚ man surfing: dark skin tone +1F3C4 200D 2640 FE0F ; fully-qualified # ๐Ÿ„โ€โ™€๏ธ woman surfing +1F3C4 200D 2640 ; non-fully-qualified # ๐Ÿ„โ€โ™€ woman surfing +1F3C4 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ„๐Ÿปโ€โ™€๏ธ woman surfing: light skin tone +1F3C4 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ„๐Ÿปโ€โ™€ woman surfing: light skin tone +1F3C4 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ„๐Ÿผโ€โ™€๏ธ woman surfing: medium-light skin tone +1F3C4 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ„๐Ÿผโ€โ™€ woman surfing: medium-light skin tone +1F3C4 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ„๐Ÿฝโ€โ™€๏ธ woman surfing: medium skin tone +1F3C4 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ„๐Ÿฝโ€โ™€ woman surfing: medium skin tone +1F3C4 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ„๐Ÿพโ€โ™€๏ธ woman surfing: medium-dark skin tone +1F3C4 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ„๐Ÿพโ€โ™€ woman surfing: medium-dark skin tone +1F3C4 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ„๐Ÿฟโ€โ™€๏ธ woman surfing: dark skin tone +1F3C4 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ„๐Ÿฟโ€โ™€ woman surfing: dark skin tone +1F6A3 ; fully-qualified # ๐Ÿšฃ person rowing boat +1F6A3 1F3FB ; fully-qualified # ๐Ÿšฃ๐Ÿป person rowing boat: light skin tone +1F6A3 1F3FC ; fully-qualified # ๐Ÿšฃ๐Ÿผ person rowing boat: medium-light skin tone +1F6A3 1F3FD ; fully-qualified # ๐Ÿšฃ๐Ÿฝ person rowing boat: medium skin tone +1F6A3 1F3FE ; fully-qualified # ๐Ÿšฃ๐Ÿพ person rowing boat: medium-dark skin tone +1F6A3 1F3FF ; fully-qualified # ๐Ÿšฃ๐Ÿฟ person rowing boat: dark skin tone +1F6A3 200D 2642 FE0F ; fully-qualified # ๐Ÿšฃโ€โ™‚๏ธ man rowing boat +1F6A3 200D 2642 ; non-fully-qualified # ๐Ÿšฃโ€โ™‚ man rowing boat +1F6A3 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿปโ€โ™‚๏ธ man rowing boat: light skin tone +1F6A3 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿšฃ๐Ÿปโ€โ™‚ man rowing boat: light skin tone +1F6A3 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿผโ€โ™‚๏ธ man rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿšฃ๐Ÿผโ€โ™‚ man rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿฝโ€โ™‚๏ธ man rowing boat: medium skin tone +1F6A3 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿšฃ๐Ÿฝโ€โ™‚ man rowing boat: medium skin tone +1F6A3 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿพโ€โ™‚๏ธ man rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿšฃ๐Ÿพโ€โ™‚ man rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿฟโ€โ™‚๏ธ man rowing boat: dark skin tone +1F6A3 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿšฃ๐Ÿฟโ€โ™‚ man rowing boat: dark skin tone +1F6A3 200D 2640 FE0F ; fully-qualified # ๐Ÿšฃโ€โ™€๏ธ woman rowing boat +1F6A3 200D 2640 ; non-fully-qualified # ๐Ÿšฃโ€โ™€ woman rowing boat +1F6A3 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿปโ€โ™€๏ธ woman rowing boat: light skin tone +1F6A3 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿšฃ๐Ÿปโ€โ™€ woman rowing boat: light skin tone +1F6A3 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿผโ€โ™€๏ธ woman rowing boat: medium-light skin tone +1F6A3 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿšฃ๐Ÿผโ€โ™€ woman rowing boat: medium-light skin tone +1F6A3 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿฝโ€โ™€๏ธ woman rowing boat: medium skin tone +1F6A3 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿšฃ๐Ÿฝโ€โ™€ woman rowing boat: medium skin tone +1F6A3 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿพโ€โ™€๏ธ woman rowing boat: medium-dark skin tone +1F6A3 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿšฃ๐Ÿพโ€โ™€ woman rowing boat: medium-dark skin tone +1F6A3 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿšฃ๐Ÿฟโ€โ™€๏ธ woman rowing boat: dark skin tone +1F6A3 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿšฃ๐Ÿฟโ€โ™€ woman rowing boat: dark skin tone +1F3CA ; fully-qualified # ๐ŸŠ person swimming +1F3CA 1F3FB ; fully-qualified # ๐ŸŠ๐Ÿป person swimming: light skin tone +1F3CA 1F3FC ; fully-qualified # ๐ŸŠ๐Ÿผ person swimming: medium-light skin tone +1F3CA 1F3FD ; fully-qualified # ๐ŸŠ๐Ÿฝ person swimming: medium skin tone +1F3CA 1F3FE ; fully-qualified # ๐ŸŠ๐Ÿพ person swimming: medium-dark skin tone +1F3CA 1F3FF ; fully-qualified # ๐ŸŠ๐Ÿฟ person swimming: dark skin tone +1F3CA 200D 2642 FE0F ; fully-qualified # ๐ŸŠโ€โ™‚๏ธ man swimming +1F3CA 200D 2642 ; non-fully-qualified # ๐ŸŠโ€โ™‚ man swimming +1F3CA 1F3FB 200D 2642 FE0F ; fully-qualified # ๐ŸŠ๐Ÿปโ€โ™‚๏ธ man swimming: light skin tone +1F3CA 1F3FB 200D 2642 ; non-fully-qualified # ๐ŸŠ๐Ÿปโ€โ™‚ man swimming: light skin tone +1F3CA 1F3FC 200D 2642 FE0F ; fully-qualified # ๐ŸŠ๐Ÿผโ€โ™‚๏ธ man swimming: medium-light skin tone +1F3CA 1F3FC 200D 2642 ; non-fully-qualified # ๐ŸŠ๐Ÿผโ€โ™‚ man swimming: medium-light skin tone +1F3CA 1F3FD 200D 2642 FE0F ; fully-qualified # ๐ŸŠ๐Ÿฝโ€โ™‚๏ธ man swimming: medium skin tone +1F3CA 1F3FD 200D 2642 ; non-fully-qualified # ๐ŸŠ๐Ÿฝโ€โ™‚ man swimming: medium skin tone +1F3CA 1F3FE 200D 2642 FE0F ; fully-qualified # ๐ŸŠ๐Ÿพโ€โ™‚๏ธ man swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2642 ; non-fully-qualified # ๐ŸŠ๐Ÿพโ€โ™‚ man swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2642 FE0F ; fully-qualified # ๐ŸŠ๐Ÿฟโ€โ™‚๏ธ man swimming: dark skin tone +1F3CA 1F3FF 200D 2642 ; non-fully-qualified # ๐ŸŠ๐Ÿฟโ€โ™‚ man swimming: dark skin tone +1F3CA 200D 2640 FE0F ; fully-qualified # ๐ŸŠโ€โ™€๏ธ woman swimming +1F3CA 200D 2640 ; non-fully-qualified # ๐ŸŠโ€โ™€ woman swimming +1F3CA 1F3FB 200D 2640 FE0F ; fully-qualified # ๐ŸŠ๐Ÿปโ€โ™€๏ธ woman swimming: light skin tone +1F3CA 1F3FB 200D 2640 ; non-fully-qualified # ๐ŸŠ๐Ÿปโ€โ™€ woman swimming: light skin tone +1F3CA 1F3FC 200D 2640 FE0F ; fully-qualified # ๐ŸŠ๐Ÿผโ€โ™€๏ธ woman swimming: medium-light skin tone +1F3CA 1F3FC 200D 2640 ; non-fully-qualified # ๐ŸŠ๐Ÿผโ€โ™€ woman swimming: medium-light skin tone +1F3CA 1F3FD 200D 2640 FE0F ; fully-qualified # ๐ŸŠ๐Ÿฝโ€โ™€๏ธ woman swimming: medium skin tone +1F3CA 1F3FD 200D 2640 ; non-fully-qualified # ๐ŸŠ๐Ÿฝโ€โ™€ woman swimming: medium skin tone +1F3CA 1F3FE 200D 2640 FE0F ; fully-qualified # ๐ŸŠ๐Ÿพโ€โ™€๏ธ woman swimming: medium-dark skin tone +1F3CA 1F3FE 200D 2640 ; non-fully-qualified # ๐ŸŠ๐Ÿพโ€โ™€ woman swimming: medium-dark skin tone +1F3CA 1F3FF 200D 2640 FE0F ; fully-qualified # ๐ŸŠ๐Ÿฟโ€โ™€๏ธ woman swimming: dark skin tone +1F3CA 1F3FF 200D 2640 ; non-fully-qualified # ๐ŸŠ๐Ÿฟโ€โ™€ woman swimming: dark skin tone +26F9 FE0F ; fully-qualified # โ›น๏ธ person bouncing ball +26F9 ; non-fully-qualified # โ›น person bouncing ball +26F9 1F3FB ; fully-qualified # โ›น๐Ÿป person bouncing ball: light skin tone +26F9 1F3FC ; fully-qualified # โ›น๐Ÿผ person bouncing ball: medium-light skin tone +26F9 1F3FD ; fully-qualified # โ›น๐Ÿฝ person bouncing ball: medium skin tone +26F9 1F3FE ; fully-qualified # โ›น๐Ÿพ person bouncing ball: medium-dark skin tone +26F9 1F3FF ; fully-qualified # โ›น๐Ÿฟ person bouncing ball: dark skin tone +26F9 FE0F 200D 2642 FE0F ; fully-qualified # โ›น๏ธโ€โ™‚๏ธ man bouncing ball +26F9 200D 2642 FE0F ; non-fully-qualified # โ›นโ€โ™‚๏ธ man bouncing ball +26F9 FE0F 200D 2642 ; non-fully-qualified # โ›น๏ธโ€โ™‚ man bouncing ball +26F9 200D 2642 ; non-fully-qualified # โ›นโ€โ™‚ man bouncing ball +26F9 1F3FB 200D 2642 FE0F ; fully-qualified # โ›น๐Ÿปโ€โ™‚๏ธ man bouncing ball: light skin tone +26F9 1F3FB 200D 2642 ; non-fully-qualified # โ›น๐Ÿปโ€โ™‚ man bouncing ball: light skin tone +26F9 1F3FC 200D 2642 FE0F ; fully-qualified # โ›น๐Ÿผโ€โ™‚๏ธ man bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2642 ; non-fully-qualified # โ›น๐Ÿผโ€โ™‚ man bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2642 FE0F ; fully-qualified # โ›น๐Ÿฝโ€โ™‚๏ธ man bouncing ball: medium skin tone +26F9 1F3FD 200D 2642 ; non-fully-qualified # โ›น๐Ÿฝโ€โ™‚ man bouncing ball: medium skin tone +26F9 1F3FE 200D 2642 FE0F ; fully-qualified # โ›น๐Ÿพโ€โ™‚๏ธ man bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2642 ; non-fully-qualified # โ›น๐Ÿพโ€โ™‚ man bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2642 FE0F ; fully-qualified # โ›น๐Ÿฟโ€โ™‚๏ธ man bouncing ball: dark skin tone +26F9 1F3FF 200D 2642 ; non-fully-qualified # โ›น๐Ÿฟโ€โ™‚ man bouncing ball: dark skin tone +26F9 FE0F 200D 2640 FE0F ; fully-qualified # โ›น๏ธโ€โ™€๏ธ woman bouncing ball +26F9 200D 2640 FE0F ; non-fully-qualified # โ›นโ€โ™€๏ธ woman bouncing ball +26F9 FE0F 200D 2640 ; non-fully-qualified # โ›น๏ธโ€โ™€ woman bouncing ball +26F9 200D 2640 ; non-fully-qualified # โ›นโ€โ™€ woman bouncing ball +26F9 1F3FB 200D 2640 FE0F ; fully-qualified # โ›น๐Ÿปโ€โ™€๏ธ woman bouncing ball: light skin tone +26F9 1F3FB 200D 2640 ; non-fully-qualified # โ›น๐Ÿปโ€โ™€ woman bouncing ball: light skin tone +26F9 1F3FC 200D 2640 FE0F ; fully-qualified # โ›น๐Ÿผโ€โ™€๏ธ woman bouncing ball: medium-light skin tone +26F9 1F3FC 200D 2640 ; non-fully-qualified # โ›น๐Ÿผโ€โ™€ woman bouncing ball: medium-light skin tone +26F9 1F3FD 200D 2640 FE0F ; fully-qualified # โ›น๐Ÿฝโ€โ™€๏ธ woman bouncing ball: medium skin tone +26F9 1F3FD 200D 2640 ; non-fully-qualified # โ›น๐Ÿฝโ€โ™€ woman bouncing ball: medium skin tone +26F9 1F3FE 200D 2640 FE0F ; fully-qualified # โ›น๐Ÿพโ€โ™€๏ธ woman bouncing ball: medium-dark skin tone +26F9 1F3FE 200D 2640 ; non-fully-qualified # โ›น๐Ÿพโ€โ™€ woman bouncing ball: medium-dark skin tone +26F9 1F3FF 200D 2640 FE0F ; fully-qualified # โ›น๐Ÿฟโ€โ™€๏ธ woman bouncing ball: dark skin tone +26F9 1F3FF 200D 2640 ; non-fully-qualified # โ›น๐Ÿฟโ€โ™€ woman bouncing ball: dark skin tone +1F3CB FE0F ; fully-qualified # ๐Ÿ‹๏ธ person lifting weights +1F3CB ; non-fully-qualified # ๐Ÿ‹ person lifting weights +1F3CB 1F3FB ; fully-qualified # ๐Ÿ‹๐Ÿป person lifting weights: light skin tone +1F3CB 1F3FC ; fully-qualified # ๐Ÿ‹๐Ÿผ person lifting weights: medium-light skin tone +1F3CB 1F3FD ; fully-qualified # ๐Ÿ‹๐Ÿฝ person lifting weights: medium skin tone +1F3CB 1F3FE ; fully-qualified # ๐Ÿ‹๐Ÿพ person lifting weights: medium-dark skin tone +1F3CB 1F3FF ; fully-qualified # ๐Ÿ‹๐Ÿฟ person lifting weights: dark skin tone +1F3CB FE0F 200D 2642 FE0F ; fully-qualified # ๐Ÿ‹๏ธโ€โ™‚๏ธ man lifting weights +1F3CB 200D 2642 FE0F ; non-fully-qualified # ๐Ÿ‹โ€โ™‚๏ธ man lifting weights +1F3CB FE0F 200D 2642 ; non-fully-qualified # ๐Ÿ‹๏ธโ€โ™‚ man lifting weights +1F3CB 200D 2642 ; non-fully-qualified # ๐Ÿ‹โ€โ™‚ man lifting weights +1F3CB 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿปโ€โ™‚๏ธ man lifting weights: light skin tone +1F3CB 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿ‹๐Ÿปโ€โ™‚ man lifting weights: light skin tone +1F3CB 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿผโ€โ™‚๏ธ man lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿ‹๐Ÿผโ€โ™‚ man lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿฝโ€โ™‚๏ธ man lifting weights: medium skin tone +1F3CB 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿ‹๐Ÿฝโ€โ™‚ man lifting weights: medium skin tone +1F3CB 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿพโ€โ™‚๏ธ man lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿ‹๐Ÿพโ€โ™‚ man lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿฟโ€โ™‚๏ธ man lifting weights: dark skin tone +1F3CB 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿ‹๐Ÿฟโ€โ™‚ man lifting weights: dark skin tone +1F3CB FE0F 200D 2640 FE0F ; fully-qualified # ๐Ÿ‹๏ธโ€โ™€๏ธ woman lifting weights +1F3CB 200D 2640 FE0F ; non-fully-qualified # ๐Ÿ‹โ€โ™€๏ธ woman lifting weights +1F3CB FE0F 200D 2640 ; non-fully-qualified # ๐Ÿ‹๏ธโ€โ™€ woman lifting weights +1F3CB 200D 2640 ; non-fully-qualified # ๐Ÿ‹โ€โ™€ woman lifting weights +1F3CB 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿปโ€โ™€๏ธ woman lifting weights: light skin tone +1F3CB 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿ‹๐Ÿปโ€โ™€ woman lifting weights: light skin tone +1F3CB 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿผโ€โ™€๏ธ woman lifting weights: medium-light skin tone +1F3CB 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿ‹๐Ÿผโ€โ™€ woman lifting weights: medium-light skin tone +1F3CB 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿฝโ€โ™€๏ธ woman lifting weights: medium skin tone +1F3CB 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿ‹๐Ÿฝโ€โ™€ woman lifting weights: medium skin tone +1F3CB 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿพโ€โ™€๏ธ woman lifting weights: medium-dark skin tone +1F3CB 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿ‹๐Ÿพโ€โ™€ woman lifting weights: medium-dark skin tone +1F3CB 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿ‹๐Ÿฟโ€โ™€๏ธ woman lifting weights: dark skin tone +1F3CB 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿ‹๐Ÿฟโ€โ™€ woman lifting weights: dark skin tone +1F6B4 ; fully-qualified # ๐Ÿšด person biking +1F6B4 1F3FB ; fully-qualified # ๐Ÿšด๐Ÿป person biking: light skin tone +1F6B4 1F3FC ; fully-qualified # ๐Ÿšด๐Ÿผ person biking: medium-light skin tone +1F6B4 1F3FD ; fully-qualified # ๐Ÿšด๐Ÿฝ person biking: medium skin tone +1F6B4 1F3FE ; fully-qualified # ๐Ÿšด๐Ÿพ person biking: medium-dark skin tone +1F6B4 1F3FF ; fully-qualified # ๐Ÿšด๐Ÿฟ person biking: dark skin tone +1F6B4 200D 2642 FE0F ; fully-qualified # ๐Ÿšดโ€โ™‚๏ธ man biking +1F6B4 200D 2642 ; non-fully-qualified # ๐Ÿšดโ€โ™‚ man biking +1F6B4 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿšด๐Ÿปโ€โ™‚๏ธ man biking: light skin tone +1F6B4 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿšด๐Ÿปโ€โ™‚ man biking: light skin tone +1F6B4 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿšด๐Ÿผโ€โ™‚๏ธ man biking: medium-light skin tone +1F6B4 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿšด๐Ÿผโ€โ™‚ man biking: medium-light skin tone +1F6B4 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿšด๐Ÿฝโ€โ™‚๏ธ man biking: medium skin tone +1F6B4 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿšด๐Ÿฝโ€โ™‚ man biking: medium skin tone +1F6B4 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿšด๐Ÿพโ€โ™‚๏ธ man biking: medium-dark skin tone +1F6B4 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿšด๐Ÿพโ€โ™‚ man biking: medium-dark skin tone +1F6B4 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿšด๐Ÿฟโ€โ™‚๏ธ man biking: dark skin tone +1F6B4 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿšด๐Ÿฟโ€โ™‚ man biking: dark skin tone +1F6B4 200D 2640 FE0F ; fully-qualified # ๐Ÿšดโ€โ™€๏ธ woman biking +1F6B4 200D 2640 ; non-fully-qualified # ๐Ÿšดโ€โ™€ woman biking +1F6B4 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿšด๐Ÿปโ€โ™€๏ธ woman biking: light skin tone +1F6B4 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿšด๐Ÿปโ€โ™€ woman biking: light skin tone +1F6B4 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿšด๐Ÿผโ€โ™€๏ธ woman biking: medium-light skin tone +1F6B4 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿšด๐Ÿผโ€โ™€ woman biking: medium-light skin tone +1F6B4 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿšด๐Ÿฝโ€โ™€๏ธ woman biking: medium skin tone +1F6B4 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿšด๐Ÿฝโ€โ™€ woman biking: medium skin tone +1F6B4 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿšด๐Ÿพโ€โ™€๏ธ woman biking: medium-dark skin tone +1F6B4 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿšด๐Ÿพโ€โ™€ woman biking: medium-dark skin tone +1F6B4 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿšด๐Ÿฟโ€โ™€๏ธ woman biking: dark skin tone +1F6B4 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿšด๐Ÿฟโ€โ™€ woman biking: dark skin tone +1F6B5 ; fully-qualified # ๐Ÿšต person mountain biking +1F6B5 1F3FB ; fully-qualified # ๐Ÿšต๐Ÿป person mountain biking: light skin tone +1F6B5 1F3FC ; fully-qualified # ๐Ÿšต๐Ÿผ person mountain biking: medium-light skin tone +1F6B5 1F3FD ; fully-qualified # ๐Ÿšต๐Ÿฝ person mountain biking: medium skin tone +1F6B5 1F3FE ; fully-qualified # ๐Ÿšต๐Ÿพ person mountain biking: medium-dark skin tone +1F6B5 1F3FF ; fully-qualified # ๐Ÿšต๐Ÿฟ person mountain biking: dark skin tone +1F6B5 200D 2642 FE0F ; fully-qualified # ๐Ÿšตโ€โ™‚๏ธ man mountain biking +1F6B5 200D 2642 ; non-fully-qualified # ๐Ÿšตโ€โ™‚ man mountain biking +1F6B5 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿšต๐Ÿปโ€โ™‚๏ธ man mountain biking: light skin tone +1F6B5 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿšต๐Ÿปโ€โ™‚ man mountain biking: light skin tone +1F6B5 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿšต๐Ÿผโ€โ™‚๏ธ man mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿšต๐Ÿผโ€โ™‚ man mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿšต๐Ÿฝโ€โ™‚๏ธ man mountain biking: medium skin tone +1F6B5 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿšต๐Ÿฝโ€โ™‚ man mountain biking: medium skin tone +1F6B5 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿšต๐Ÿพโ€โ™‚๏ธ man mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿšต๐Ÿพโ€โ™‚ man mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿšต๐Ÿฟโ€โ™‚๏ธ man mountain biking: dark skin tone +1F6B5 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿšต๐Ÿฟโ€โ™‚ man mountain biking: dark skin tone +1F6B5 200D 2640 FE0F ; fully-qualified # ๐Ÿšตโ€โ™€๏ธ woman mountain biking +1F6B5 200D 2640 ; non-fully-qualified # ๐Ÿšตโ€โ™€ woman mountain biking +1F6B5 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿšต๐Ÿปโ€โ™€๏ธ woman mountain biking: light skin tone +1F6B5 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿšต๐Ÿปโ€โ™€ woman mountain biking: light skin tone +1F6B5 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿšต๐Ÿผโ€โ™€๏ธ woman mountain biking: medium-light skin tone +1F6B5 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿšต๐Ÿผโ€โ™€ woman mountain biking: medium-light skin tone +1F6B5 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿšต๐Ÿฝโ€โ™€๏ธ woman mountain biking: medium skin tone +1F6B5 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿšต๐Ÿฝโ€โ™€ woman mountain biking: medium skin tone +1F6B5 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿšต๐Ÿพโ€โ™€๏ธ woman mountain biking: medium-dark skin tone +1F6B5 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿšต๐Ÿพโ€โ™€ woman mountain biking: medium-dark skin tone +1F6B5 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿšต๐Ÿฟโ€โ™€๏ธ woman mountain biking: dark skin tone +1F6B5 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿšต๐Ÿฟโ€โ™€ woman mountain biking: dark skin tone +1F3CE FE0F ; fully-qualified # ๐ŸŽ๏ธ racing car +1F3CE ; non-fully-qualified # ๐ŸŽ racing car +1F3CD FE0F ; fully-qualified # ๐Ÿ๏ธ motorcycle +1F3CD ; non-fully-qualified # ๐Ÿ motorcycle +1F938 ; fully-qualified # ๐Ÿคธ person cartwheeling +1F938 1F3FB ; fully-qualified # ๐Ÿคธ๐Ÿป person cartwheeling: light skin tone +1F938 1F3FC ; fully-qualified # ๐Ÿคธ๐Ÿผ person cartwheeling: medium-light skin tone +1F938 1F3FD ; fully-qualified # ๐Ÿคธ๐Ÿฝ person cartwheeling: medium skin tone +1F938 1F3FE ; fully-qualified # ๐Ÿคธ๐Ÿพ person cartwheeling: medium-dark skin tone +1F938 1F3FF ; fully-qualified # ๐Ÿคธ๐Ÿฟ person cartwheeling: dark skin tone +1F938 200D 2642 FE0F ; fully-qualified # ๐Ÿคธโ€โ™‚๏ธ man cartwheeling +1F938 200D 2642 ; non-fully-qualified # ๐Ÿคธโ€โ™‚ man cartwheeling +1F938 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿปโ€โ™‚๏ธ man cartwheeling: light skin tone +1F938 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿคธ๐Ÿปโ€โ™‚ man cartwheeling: light skin tone +1F938 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿผโ€โ™‚๏ธ man cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿคธ๐Ÿผโ€โ™‚ man cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿฝโ€โ™‚๏ธ man cartwheeling: medium skin tone +1F938 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿคธ๐Ÿฝโ€โ™‚ man cartwheeling: medium skin tone +1F938 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿพโ€โ™‚๏ธ man cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿคธ๐Ÿพโ€โ™‚ man cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿฟโ€โ™‚๏ธ man cartwheeling: dark skin tone +1F938 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿคธ๐Ÿฟโ€โ™‚ man cartwheeling: dark skin tone +1F938 200D 2640 FE0F ; fully-qualified # ๐Ÿคธโ€โ™€๏ธ woman cartwheeling +1F938 200D 2640 ; non-fully-qualified # ๐Ÿคธโ€โ™€ woman cartwheeling +1F938 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿปโ€โ™€๏ธ woman cartwheeling: light skin tone +1F938 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿคธ๐Ÿปโ€โ™€ woman cartwheeling: light skin tone +1F938 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿผโ€โ™€๏ธ woman cartwheeling: medium-light skin tone +1F938 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿคธ๐Ÿผโ€โ™€ woman cartwheeling: medium-light skin tone +1F938 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿฝโ€โ™€๏ธ woman cartwheeling: medium skin tone +1F938 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿคธ๐Ÿฝโ€โ™€ woman cartwheeling: medium skin tone +1F938 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿพโ€โ™€๏ธ woman cartwheeling: medium-dark skin tone +1F938 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿคธ๐Ÿพโ€โ™€ woman cartwheeling: medium-dark skin tone +1F938 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿคธ๐Ÿฟโ€โ™€๏ธ woman cartwheeling: dark skin tone +1F938 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿคธ๐Ÿฟโ€โ™€ woman cartwheeling: dark skin tone +1F93C ; fully-qualified # ๐Ÿคผ people wrestling +1F93C 200D 2642 FE0F ; fully-qualified # ๐Ÿคผโ€โ™‚๏ธ men wrestling +1F93C 200D 2642 ; non-fully-qualified # ๐Ÿคผโ€โ™‚ men wrestling +1F93C 200D 2640 FE0F ; fully-qualified # ๐Ÿคผโ€โ™€๏ธ women wrestling +1F93C 200D 2640 ; non-fully-qualified # ๐Ÿคผโ€โ™€ women wrestling +1F93D ; fully-qualified # ๐Ÿคฝ person playing water polo +1F93D 1F3FB ; fully-qualified # ๐Ÿคฝ๐Ÿป person playing water polo: light skin tone +1F93D 1F3FC ; fully-qualified # ๐Ÿคฝ๐Ÿผ person playing water polo: medium-light skin tone +1F93D 1F3FD ; fully-qualified # ๐Ÿคฝ๐Ÿฝ person playing water polo: medium skin tone +1F93D 1F3FE ; fully-qualified # ๐Ÿคฝ๐Ÿพ person playing water polo: medium-dark skin tone +1F93D 1F3FF ; fully-qualified # ๐Ÿคฝ๐Ÿฟ person playing water polo: dark skin tone +1F93D 200D 2642 FE0F ; fully-qualified # ๐Ÿคฝโ€โ™‚๏ธ man playing water polo +1F93D 200D 2642 ; non-fully-qualified # ๐Ÿคฝโ€โ™‚ man playing water polo +1F93D 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿปโ€โ™‚๏ธ man playing water polo: light skin tone +1F93D 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿคฝ๐Ÿปโ€โ™‚ man playing water polo: light skin tone +1F93D 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿผโ€โ™‚๏ธ man playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿคฝ๐Ÿผโ€โ™‚ man playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿฝโ€โ™‚๏ธ man playing water polo: medium skin tone +1F93D 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿคฝ๐Ÿฝโ€โ™‚ man playing water polo: medium skin tone +1F93D 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿพโ€โ™‚๏ธ man playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿคฝ๐Ÿพโ€โ™‚ man playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿฟโ€โ™‚๏ธ man playing water polo: dark skin tone +1F93D 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿคฝ๐Ÿฟโ€โ™‚ man playing water polo: dark skin tone +1F93D 200D 2640 FE0F ; fully-qualified # ๐Ÿคฝโ€โ™€๏ธ woman playing water polo +1F93D 200D 2640 ; non-fully-qualified # ๐Ÿคฝโ€โ™€ woman playing water polo +1F93D 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿปโ€โ™€๏ธ woman playing water polo: light skin tone +1F93D 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿคฝ๐Ÿปโ€โ™€ woman playing water polo: light skin tone +1F93D 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿผโ€โ™€๏ธ woman playing water polo: medium-light skin tone +1F93D 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿคฝ๐Ÿผโ€โ™€ woman playing water polo: medium-light skin tone +1F93D 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿฝโ€โ™€๏ธ woman playing water polo: medium skin tone +1F93D 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿคฝ๐Ÿฝโ€โ™€ woman playing water polo: medium skin tone +1F93D 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿพโ€โ™€๏ธ woman playing water polo: medium-dark skin tone +1F93D 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿคฝ๐Ÿพโ€โ™€ woman playing water polo: medium-dark skin tone +1F93D 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿคฝ๐Ÿฟโ€โ™€๏ธ woman playing water polo: dark skin tone +1F93D 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿคฝ๐Ÿฟโ€โ™€ woman playing water polo: dark skin tone +1F93E ; fully-qualified # ๐Ÿคพ person playing handball +1F93E 1F3FB ; fully-qualified # ๐Ÿคพ๐Ÿป person playing handball: light skin tone +1F93E 1F3FC ; fully-qualified # ๐Ÿคพ๐Ÿผ person playing handball: medium-light skin tone +1F93E 1F3FD ; fully-qualified # ๐Ÿคพ๐Ÿฝ person playing handball: medium skin tone +1F93E 1F3FE ; fully-qualified # ๐Ÿคพ๐Ÿพ person playing handball: medium-dark skin tone +1F93E 1F3FF ; fully-qualified # ๐Ÿคพ๐Ÿฟ person playing handball: dark skin tone +1F93E 200D 2642 FE0F ; fully-qualified # ๐Ÿคพโ€โ™‚๏ธ man playing handball +1F93E 200D 2642 ; non-fully-qualified # ๐Ÿคพโ€โ™‚ man playing handball +1F93E 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿปโ€โ™‚๏ธ man playing handball: light skin tone +1F93E 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿคพ๐Ÿปโ€โ™‚ man playing handball: light skin tone +1F93E 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿผโ€โ™‚๏ธ man playing handball: medium-light skin tone +1F93E 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿคพ๐Ÿผโ€โ™‚ man playing handball: medium-light skin tone +1F93E 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿฝโ€โ™‚๏ธ man playing handball: medium skin tone +1F93E 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿคพ๐Ÿฝโ€โ™‚ man playing handball: medium skin tone +1F93E 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿพโ€โ™‚๏ธ man playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿคพ๐Ÿพโ€โ™‚ man playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿฟโ€โ™‚๏ธ man playing handball: dark skin tone +1F93E 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿคพ๐Ÿฟโ€โ™‚ man playing handball: dark skin tone +1F93E 200D 2640 FE0F ; fully-qualified # ๐Ÿคพโ€โ™€๏ธ woman playing handball +1F93E 200D 2640 ; non-fully-qualified # ๐Ÿคพโ€โ™€ woman playing handball +1F93E 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿปโ€โ™€๏ธ woman playing handball: light skin tone +1F93E 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿคพ๐Ÿปโ€โ™€ woman playing handball: light skin tone +1F93E 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿผโ€โ™€๏ธ woman playing handball: medium-light skin tone +1F93E 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿคพ๐Ÿผโ€โ™€ woman playing handball: medium-light skin tone +1F93E 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿฝโ€โ™€๏ธ woman playing handball: medium skin tone +1F93E 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿคพ๐Ÿฝโ€โ™€ woman playing handball: medium skin tone +1F93E 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿพโ€โ™€๏ธ woman playing handball: medium-dark skin tone +1F93E 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿคพ๐Ÿพโ€โ™€ woman playing handball: medium-dark skin tone +1F93E 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿคพ๐Ÿฟโ€โ™€๏ธ woman playing handball: dark skin tone +1F93E 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿคพ๐Ÿฟโ€โ™€ woman playing handball: dark skin tone +1F939 ; fully-qualified # ๐Ÿคน person juggling +1F939 1F3FB ; fully-qualified # ๐Ÿคน๐Ÿป person juggling: light skin tone +1F939 1F3FC ; fully-qualified # ๐Ÿคน๐Ÿผ person juggling: medium-light skin tone +1F939 1F3FD ; fully-qualified # ๐Ÿคน๐Ÿฝ person juggling: medium skin tone +1F939 1F3FE ; fully-qualified # ๐Ÿคน๐Ÿพ person juggling: medium-dark skin tone +1F939 1F3FF ; fully-qualified # ๐Ÿคน๐Ÿฟ person juggling: dark skin tone +1F939 200D 2642 FE0F ; fully-qualified # ๐Ÿคนโ€โ™‚๏ธ man juggling +1F939 200D 2642 ; non-fully-qualified # ๐Ÿคนโ€โ™‚ man juggling +1F939 1F3FB 200D 2642 FE0F ; fully-qualified # ๐Ÿคน๐Ÿปโ€โ™‚๏ธ man juggling: light skin tone +1F939 1F3FB 200D 2642 ; non-fully-qualified # ๐Ÿคน๐Ÿปโ€โ™‚ man juggling: light skin tone +1F939 1F3FC 200D 2642 FE0F ; fully-qualified # ๐Ÿคน๐Ÿผโ€โ™‚๏ธ man juggling: medium-light skin tone +1F939 1F3FC 200D 2642 ; non-fully-qualified # ๐Ÿคน๐Ÿผโ€โ™‚ man juggling: medium-light skin tone +1F939 1F3FD 200D 2642 FE0F ; fully-qualified # ๐Ÿคน๐Ÿฝโ€โ™‚๏ธ man juggling: medium skin tone +1F939 1F3FD 200D 2642 ; non-fully-qualified # ๐Ÿคน๐Ÿฝโ€โ™‚ man juggling: medium skin tone +1F939 1F3FE 200D 2642 FE0F ; fully-qualified # ๐Ÿคน๐Ÿพโ€โ™‚๏ธ man juggling: medium-dark skin tone +1F939 1F3FE 200D 2642 ; non-fully-qualified # ๐Ÿคน๐Ÿพโ€โ™‚ man juggling: medium-dark skin tone +1F939 1F3FF 200D 2642 FE0F ; fully-qualified # ๐Ÿคน๐Ÿฟโ€โ™‚๏ธ man juggling: dark skin tone +1F939 1F3FF 200D 2642 ; non-fully-qualified # ๐Ÿคน๐Ÿฟโ€โ™‚ man juggling: dark skin tone +1F939 200D 2640 FE0F ; fully-qualified # ๐Ÿคนโ€โ™€๏ธ woman juggling +1F939 200D 2640 ; non-fully-qualified # ๐Ÿคนโ€โ™€ woman juggling +1F939 1F3FB 200D 2640 FE0F ; fully-qualified # ๐Ÿคน๐Ÿปโ€โ™€๏ธ woman juggling: light skin tone +1F939 1F3FB 200D 2640 ; non-fully-qualified # ๐Ÿคน๐Ÿปโ€โ™€ woman juggling: light skin tone +1F939 1F3FC 200D 2640 FE0F ; fully-qualified # ๐Ÿคน๐Ÿผโ€โ™€๏ธ woman juggling: medium-light skin tone +1F939 1F3FC 200D 2640 ; non-fully-qualified # ๐Ÿคน๐Ÿผโ€โ™€ woman juggling: medium-light skin tone +1F939 1F3FD 200D 2640 FE0F ; fully-qualified # ๐Ÿคน๐Ÿฝโ€โ™€๏ธ woman juggling: medium skin tone +1F939 1F3FD 200D 2640 ; non-fully-qualified # ๐Ÿคน๐Ÿฝโ€โ™€ woman juggling: medium skin tone +1F939 1F3FE 200D 2640 FE0F ; fully-qualified # ๐Ÿคน๐Ÿพโ€โ™€๏ธ woman juggling: medium-dark skin tone +1F939 1F3FE 200D 2640 ; non-fully-qualified # ๐Ÿคน๐Ÿพโ€โ™€ woman juggling: medium-dark skin tone +1F939 1F3FF 200D 2640 FE0F ; fully-qualified # ๐Ÿคน๐Ÿฟโ€โ™€๏ธ woman juggling: dark skin tone +1F939 1F3FF 200D 2640 ; non-fully-qualified # ๐Ÿคน๐Ÿฟโ€โ™€ woman juggling: dark skin tone + +# subgroup: family +1F46B ; fully-qualified # ๐Ÿ‘ซ man and woman holding hands +1F46C ; fully-qualified # ๐Ÿ‘ฌ two men holding hands +1F46D ; fully-qualified # ๐Ÿ‘ญ two women holding hands +1F48F ; fully-qualified # ๐Ÿ’ kiss +1F469 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # ๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ kiss: woman, man +1F469 200D 2764 200D 1F48B 200D 1F468 ; non-fully-qualified # ๐Ÿ‘ฉโ€โคโ€๐Ÿ’‹โ€๐Ÿ‘จ kiss: woman, man +1F468 200D 2764 FE0F 200D 1F48B 200D 1F468 ; fully-qualified # ๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ kiss: man, man +1F468 200D 2764 200D 1F48B 200D 1F468 ; non-fully-qualified # ๐Ÿ‘จโ€โคโ€๐Ÿ’‹โ€๐Ÿ‘จ kiss: man, man +1F469 200D 2764 FE0F 200D 1F48B 200D 1F469 ; fully-qualified # ๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ kiss: woman, woman +1F469 200D 2764 200D 1F48B 200D 1F469 ; non-fully-qualified # ๐Ÿ‘ฉโ€โคโ€๐Ÿ’‹โ€๐Ÿ‘ฉ kiss: woman, woman +1F491 ; fully-qualified # ๐Ÿ’‘ couple with heart +1F469 200D 2764 FE0F 200D 1F468 ; fully-qualified # ๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ couple with heart: woman, man +1F469 200D 2764 200D 1F468 ; non-fully-qualified # ๐Ÿ‘ฉโ€โคโ€๐Ÿ‘จ couple with heart: woman, man +1F468 200D 2764 FE0F 200D 1F468 ; fully-qualified # ๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ couple with heart: man, man +1F468 200D 2764 200D 1F468 ; non-fully-qualified # ๐Ÿ‘จโ€โคโ€๐Ÿ‘จ couple with heart: man, man +1F469 200D 2764 FE0F 200D 1F469 ; fully-qualified # ๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ couple with heart: woman, woman +1F469 200D 2764 200D 1F469 ; non-fully-qualified # ๐Ÿ‘ฉโ€โคโ€๐Ÿ‘ฉ couple with heart: woman, woman +1F46A ; fully-qualified # ๐Ÿ‘ช family +1F468 200D 1F469 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ family: man, woman, boy +1F468 200D 1F469 200D 1F467 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง family: man, woman, girl +1F468 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ family: man, woman, girl, boy +1F468 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ family: man, woman, boy, boy +1F468 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง family: man, woman, girl, girl +1F468 200D 1F468 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ family: man, man, boy +1F468 200D 1F468 200D 1F467 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง family: man, man, girl +1F468 200D 1F468 200D 1F467 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ family: man, man, girl, boy +1F468 200D 1F468 200D 1F466 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ family: man, man, boy, boy +1F468 200D 1F468 200D 1F467 200D 1F467 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง family: man, man, girl, girl +1F469 200D 1F469 200D 1F466 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ family: woman, woman, boy +1F469 200D 1F469 200D 1F467 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง family: woman, woman, girl +1F469 200D 1F469 200D 1F467 200D 1F466 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ family: woman, woman, girl, boy +1F469 200D 1F469 200D 1F466 200D 1F466 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ family: woman, woman, boy, boy +1F469 200D 1F469 200D 1F467 200D 1F467 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง family: woman, woman, girl, girl +1F468 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ฆ family: man, boy +1F468 200D 1F466 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ family: man, boy, boy +1F468 200D 1F467 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘ง family: man, girl +1F468 200D 1F467 200D 1F466 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ family: man, girl, boy +1F468 200D 1F467 200D 1F467 ; fully-qualified # ๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง family: man, girl, girl +1F469 200D 1F466 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ฆ family: woman, boy +1F469 200D 1F466 200D 1F466 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ family: woman, boy, boy +1F469 200D 1F467 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘ง family: woman, girl +1F469 200D 1F467 200D 1F466 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ family: woman, girl, boy +1F469 200D 1F467 200D 1F467 ; fully-qualified # ๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง family: woman, girl, girl + +# subgroup: body +1F933 ; fully-qualified # ๐Ÿคณ selfie +1F933 1F3FB ; fully-qualified # ๐Ÿคณ๐Ÿป selfie: light skin tone +1F933 1F3FC ; fully-qualified # ๐Ÿคณ๐Ÿผ selfie: medium-light skin tone +1F933 1F3FD ; fully-qualified # ๐Ÿคณ๐Ÿฝ selfie: medium skin tone +1F933 1F3FE ; fully-qualified # ๐Ÿคณ๐Ÿพ selfie: medium-dark skin tone +1F933 1F3FF ; fully-qualified # ๐Ÿคณ๐Ÿฟ selfie: dark skin tone +1F4AA ; fully-qualified # ๐Ÿ’ช flexed biceps +1F4AA 1F3FB ; fully-qualified # ๐Ÿ’ช๐Ÿป flexed biceps: light skin tone +1F4AA 1F3FC ; fully-qualified # ๐Ÿ’ช๐Ÿผ flexed biceps: medium-light skin tone +1F4AA 1F3FD ; fully-qualified # ๐Ÿ’ช๐Ÿฝ flexed biceps: medium skin tone +1F4AA 1F3FE ; fully-qualified # ๐Ÿ’ช๐Ÿพ flexed biceps: medium-dark skin tone +1F4AA 1F3FF ; fully-qualified # ๐Ÿ’ช๐Ÿฟ flexed biceps: dark skin tone +1F9B5 ; fully-qualified # ๐Ÿฆต leg +1F9B5 1F3FB ; fully-qualified # ๐Ÿฆต๐Ÿป leg: light skin tone +1F9B5 1F3FC ; fully-qualified # ๐Ÿฆต๐Ÿผ leg: medium-light skin tone +1F9B5 1F3FD ; fully-qualified # ๐Ÿฆต๐Ÿฝ leg: medium skin tone +1F9B5 1F3FE ; fully-qualified # ๐Ÿฆต๐Ÿพ leg: medium-dark skin tone +1F9B5 1F3FF ; fully-qualified # ๐Ÿฆต๐Ÿฟ leg: dark skin tone +1F9B6 ; fully-qualified # ๐Ÿฆถ foot +1F9B6 1F3FB ; fully-qualified # ๐Ÿฆถ๐Ÿป foot: light skin tone +1F9B6 1F3FC ; fully-qualified # ๐Ÿฆถ๐Ÿผ foot: medium-light skin tone +1F9B6 1F3FD ; fully-qualified # ๐Ÿฆถ๐Ÿฝ foot: medium skin tone +1F9B6 1F3FE ; fully-qualified # ๐Ÿฆถ๐Ÿพ foot: medium-dark skin tone +1F9B6 1F3FF ; fully-qualified # ๐Ÿฆถ๐Ÿฟ foot: dark skin tone +1F448 ; fully-qualified # ๐Ÿ‘ˆ backhand index pointing left +1F448 1F3FB ; fully-qualified # ๐Ÿ‘ˆ๐Ÿป backhand index pointing left: light skin tone +1F448 1F3FC ; fully-qualified # ๐Ÿ‘ˆ๐Ÿผ backhand index pointing left: medium-light skin tone +1F448 1F3FD ; fully-qualified # ๐Ÿ‘ˆ๐Ÿฝ backhand index pointing left: medium skin tone +1F448 1F3FE ; fully-qualified # ๐Ÿ‘ˆ๐Ÿพ backhand index pointing left: medium-dark skin tone +1F448 1F3FF ; fully-qualified # ๐Ÿ‘ˆ๐Ÿฟ backhand index pointing left: dark skin tone +1F449 ; fully-qualified # ๐Ÿ‘‰ backhand index pointing right +1F449 1F3FB ; fully-qualified # ๐Ÿ‘‰๐Ÿป backhand index pointing right: light skin tone +1F449 1F3FC ; fully-qualified # ๐Ÿ‘‰๐Ÿผ backhand index pointing right: medium-light skin tone +1F449 1F3FD ; fully-qualified # ๐Ÿ‘‰๐Ÿฝ backhand index pointing right: medium skin tone +1F449 1F3FE ; fully-qualified # ๐Ÿ‘‰๐Ÿพ backhand index pointing right: medium-dark skin tone +1F449 1F3FF ; fully-qualified # ๐Ÿ‘‰๐Ÿฟ backhand index pointing right: dark skin tone +261D FE0F ; fully-qualified # โ˜๏ธ index pointing up +261D ; non-fully-qualified # โ˜ index pointing up +261D 1F3FB ; fully-qualified # โ˜๐Ÿป index pointing up: light skin tone +261D 1F3FC ; fully-qualified # โ˜๐Ÿผ index pointing up: medium-light skin tone +261D 1F3FD ; fully-qualified # โ˜๐Ÿฝ index pointing up: medium skin tone +261D 1F3FE ; fully-qualified # โ˜๐Ÿพ index pointing up: medium-dark skin tone +261D 1F3FF ; fully-qualified # โ˜๐Ÿฟ index pointing up: dark skin tone +1F446 ; fully-qualified # ๐Ÿ‘† backhand index pointing up +1F446 1F3FB ; fully-qualified # ๐Ÿ‘†๐Ÿป backhand index pointing up: light skin tone +1F446 1F3FC ; fully-qualified # ๐Ÿ‘†๐Ÿผ backhand index pointing up: medium-light skin tone +1F446 1F3FD ; fully-qualified # ๐Ÿ‘†๐Ÿฝ backhand index pointing up: medium skin tone +1F446 1F3FE ; fully-qualified # ๐Ÿ‘†๐Ÿพ backhand index pointing up: medium-dark skin tone +1F446 1F3FF ; fully-qualified # ๐Ÿ‘†๐Ÿฟ backhand index pointing up: dark skin tone +1F595 ; fully-qualified # ๐Ÿ–• middle finger +1F595 1F3FB ; fully-qualified # ๐Ÿ–•๐Ÿป middle finger: light skin tone +1F595 1F3FC ; fully-qualified # ๐Ÿ–•๐Ÿผ middle finger: medium-light skin tone +1F595 1F3FD ; fully-qualified # ๐Ÿ–•๐Ÿฝ middle finger: medium skin tone +1F595 1F3FE ; fully-qualified # ๐Ÿ–•๐Ÿพ middle finger: medium-dark skin tone +1F595 1F3FF ; fully-qualified # ๐Ÿ–•๐Ÿฟ middle finger: dark skin tone +1F447 ; fully-qualified # ๐Ÿ‘‡ backhand index pointing down +1F447 1F3FB ; fully-qualified # ๐Ÿ‘‡๐Ÿป backhand index pointing down: light skin tone +1F447 1F3FC ; fully-qualified # ๐Ÿ‘‡๐Ÿผ backhand index pointing down: medium-light skin tone +1F447 1F3FD ; fully-qualified # ๐Ÿ‘‡๐Ÿฝ backhand index pointing down: medium skin tone +1F447 1F3FE ; fully-qualified # ๐Ÿ‘‡๐Ÿพ backhand index pointing down: medium-dark skin tone +1F447 1F3FF ; fully-qualified # ๐Ÿ‘‡๐Ÿฟ backhand index pointing down: dark skin tone +270C FE0F ; fully-qualified # โœŒ๏ธ victory hand +270C ; non-fully-qualified # โœŒ victory hand +270C 1F3FB ; fully-qualified # โœŒ๐Ÿป victory hand: light skin tone +270C 1F3FC ; fully-qualified # โœŒ๐Ÿผ victory hand: medium-light skin tone +270C 1F3FD ; fully-qualified # โœŒ๐Ÿฝ victory hand: medium skin tone +270C 1F3FE ; fully-qualified # โœŒ๐Ÿพ victory hand: medium-dark skin tone +270C 1F3FF ; fully-qualified # โœŒ๐Ÿฟ victory hand: dark skin tone +1F91E ; fully-qualified # ๐Ÿคž crossed fingers +1F91E 1F3FB ; fully-qualified # ๐Ÿคž๐Ÿป crossed fingers: light skin tone +1F91E 1F3FC ; fully-qualified # ๐Ÿคž๐Ÿผ crossed fingers: medium-light skin tone +1F91E 1F3FD ; fully-qualified # ๐Ÿคž๐Ÿฝ crossed fingers: medium skin tone +1F91E 1F3FE ; fully-qualified # ๐Ÿคž๐Ÿพ crossed fingers: medium-dark skin tone +1F91E 1F3FF ; fully-qualified # ๐Ÿคž๐Ÿฟ crossed fingers: dark skin tone +1F596 ; fully-qualified # ๐Ÿ–– vulcan salute +1F596 1F3FB ; fully-qualified # ๐Ÿ––๐Ÿป vulcan salute: light skin tone +1F596 1F3FC ; fully-qualified # ๐Ÿ––๐Ÿผ vulcan salute: medium-light skin tone +1F596 1F3FD ; fully-qualified # ๐Ÿ––๐Ÿฝ vulcan salute: medium skin tone +1F596 1F3FE ; fully-qualified # ๐Ÿ––๐Ÿพ vulcan salute: medium-dark skin tone +1F596 1F3FF ; fully-qualified # ๐Ÿ––๐Ÿฟ vulcan salute: dark skin tone +1F918 ; fully-qualified # ๐Ÿค˜ sign of the horns +1F918 1F3FB ; fully-qualified # ๐Ÿค˜๐Ÿป sign of the horns: light skin tone +1F918 1F3FC ; fully-qualified # ๐Ÿค˜๐Ÿผ sign of the horns: medium-light skin tone +1F918 1F3FD ; fully-qualified # ๐Ÿค˜๐Ÿฝ sign of the horns: medium skin tone +1F918 1F3FE ; fully-qualified # ๐Ÿค˜๐Ÿพ sign of the horns: medium-dark skin tone +1F918 1F3FF ; fully-qualified # ๐Ÿค˜๐Ÿฟ sign of the horns: dark skin tone +1F919 ; fully-qualified # ๐Ÿค™ call me hand +1F919 1F3FB ; fully-qualified # ๐Ÿค™๐Ÿป call me hand: light skin tone +1F919 1F3FC ; fully-qualified # ๐Ÿค™๐Ÿผ call me hand: medium-light skin tone +1F919 1F3FD ; fully-qualified # ๐Ÿค™๐Ÿฝ call me hand: medium skin tone +1F919 1F3FE ; fully-qualified # ๐Ÿค™๐Ÿพ call me hand: medium-dark skin tone +1F919 1F3FF ; fully-qualified # ๐Ÿค™๐Ÿฟ call me hand: dark skin tone +1F590 FE0F ; fully-qualified # ๐Ÿ–๏ธ hand with fingers splayed +1F590 ; non-fully-qualified # ๐Ÿ– hand with fingers splayed +1F590 1F3FB ; fully-qualified # ๐Ÿ–๐Ÿป hand with fingers splayed: light skin tone +1F590 1F3FC ; fully-qualified # ๐Ÿ–๐Ÿผ hand with fingers splayed: medium-light skin tone +1F590 1F3FD ; fully-qualified # ๐Ÿ–๐Ÿฝ hand with fingers splayed: medium skin tone +1F590 1F3FE ; fully-qualified # ๐Ÿ–๐Ÿพ hand with fingers splayed: medium-dark skin tone +1F590 1F3FF ; fully-qualified # ๐Ÿ–๐Ÿฟ hand with fingers splayed: dark skin tone +270B ; fully-qualified # โœ‹ raised hand +270B 1F3FB ; fully-qualified # โœ‹๐Ÿป raised hand: light skin tone +270B 1F3FC ; fully-qualified # โœ‹๐Ÿผ raised hand: medium-light skin tone +270B 1F3FD ; fully-qualified # โœ‹๐Ÿฝ raised hand: medium skin tone +270B 1F3FE ; fully-qualified # โœ‹๐Ÿพ raised hand: medium-dark skin tone +270B 1F3FF ; fully-qualified # โœ‹๐Ÿฟ raised hand: dark skin tone +1F44C ; fully-qualified # ๐Ÿ‘Œ OK hand +1F44C 1F3FB ; fully-qualified # ๐Ÿ‘Œ๐Ÿป OK hand: light skin tone +1F44C 1F3FC ; fully-qualified # ๐Ÿ‘Œ๐Ÿผ OK hand: medium-light skin tone +1F44C 1F3FD ; fully-qualified # ๐Ÿ‘Œ๐Ÿฝ OK hand: medium skin tone +1F44C 1F3FE ; fully-qualified # ๐Ÿ‘Œ๐Ÿพ OK hand: medium-dark skin tone +1F44C 1F3FF ; fully-qualified # ๐Ÿ‘Œ๐Ÿฟ OK hand: dark skin tone +1F44D ; fully-qualified # ๐Ÿ‘ thumbs up +1F44D 1F3FB ; fully-qualified # ๐Ÿ‘๐Ÿป thumbs up: light skin tone +1F44D 1F3FC ; fully-qualified # ๐Ÿ‘๐Ÿผ thumbs up: medium-light skin tone +1F44D 1F3FD ; fully-qualified # ๐Ÿ‘๐Ÿฝ thumbs up: medium skin tone +1F44D 1F3FE ; fully-qualified # ๐Ÿ‘๐Ÿพ thumbs up: medium-dark skin tone +1F44D 1F3FF ; fully-qualified # ๐Ÿ‘๐Ÿฟ thumbs up: dark skin tone +1F44E ; fully-qualified # ๐Ÿ‘Ž thumbs down +1F44E 1F3FB ; fully-qualified # ๐Ÿ‘Ž๐Ÿป thumbs down: light skin tone +1F44E 1F3FC ; fully-qualified # ๐Ÿ‘Ž๐Ÿผ thumbs down: medium-light skin tone +1F44E 1F3FD ; fully-qualified # ๐Ÿ‘Ž๐Ÿฝ thumbs down: medium skin tone +1F44E 1F3FE ; fully-qualified # ๐Ÿ‘Ž๐Ÿพ thumbs down: medium-dark skin tone +1F44E 1F3FF ; fully-qualified # ๐Ÿ‘Ž๐Ÿฟ thumbs down: dark skin tone +270A ; fully-qualified # โœŠ raised fist +270A 1F3FB ; fully-qualified # โœŠ๐Ÿป raised fist: light skin tone +270A 1F3FC ; fully-qualified # โœŠ๐Ÿผ raised fist: medium-light skin tone +270A 1F3FD ; fully-qualified # โœŠ๐Ÿฝ raised fist: medium skin tone +270A 1F3FE ; fully-qualified # โœŠ๐Ÿพ raised fist: medium-dark skin tone +270A 1F3FF ; fully-qualified # โœŠ๐Ÿฟ raised fist: dark skin tone +1F44A ; fully-qualified # ๐Ÿ‘Š oncoming fist +1F44A 1F3FB ; fully-qualified # ๐Ÿ‘Š๐Ÿป oncoming fist: light skin tone +1F44A 1F3FC ; fully-qualified # ๐Ÿ‘Š๐Ÿผ oncoming fist: medium-light skin tone +1F44A 1F3FD ; fully-qualified # ๐Ÿ‘Š๐Ÿฝ oncoming fist: medium skin tone +1F44A 1F3FE ; fully-qualified # ๐Ÿ‘Š๐Ÿพ oncoming fist: medium-dark skin tone +1F44A 1F3FF ; fully-qualified # ๐Ÿ‘Š๐Ÿฟ oncoming fist: dark skin tone +1F91B ; fully-qualified # ๐Ÿค› left-facing fist +1F91B 1F3FB ; fully-qualified # ๐Ÿค›๐Ÿป left-facing fist: light skin tone +1F91B 1F3FC ; fully-qualified # ๐Ÿค›๐Ÿผ left-facing fist: medium-light skin tone +1F91B 1F3FD ; fully-qualified # ๐Ÿค›๐Ÿฝ left-facing fist: medium skin tone +1F91B 1F3FE ; fully-qualified # ๐Ÿค›๐Ÿพ left-facing fist: medium-dark skin tone +1F91B 1F3FF ; fully-qualified # ๐Ÿค›๐Ÿฟ left-facing fist: dark skin tone +1F91C ; fully-qualified # ๐Ÿคœ right-facing fist +1F91C 1F3FB ; fully-qualified # ๐Ÿคœ๐Ÿป right-facing fist: light skin tone +1F91C 1F3FC ; fully-qualified # ๐Ÿคœ๐Ÿผ right-facing fist: medium-light skin tone +1F91C 1F3FD ; fully-qualified # ๐Ÿคœ๐Ÿฝ right-facing fist: medium skin tone +1F91C 1F3FE ; fully-qualified # ๐Ÿคœ๐Ÿพ right-facing fist: medium-dark skin tone +1F91C 1F3FF ; fully-qualified # ๐Ÿคœ๐Ÿฟ right-facing fist: dark skin tone +1F91A ; fully-qualified # ๐Ÿคš raised back of hand +1F91A 1F3FB ; fully-qualified # ๐Ÿคš๐Ÿป raised back of hand: light skin tone +1F91A 1F3FC ; fully-qualified # ๐Ÿคš๐Ÿผ raised back of hand: medium-light skin tone +1F91A 1F3FD ; fully-qualified # ๐Ÿคš๐Ÿฝ raised back of hand: medium skin tone +1F91A 1F3FE ; fully-qualified # ๐Ÿคš๐Ÿพ raised back of hand: medium-dark skin tone +1F91A 1F3FF ; fully-qualified # ๐Ÿคš๐Ÿฟ raised back of hand: dark skin tone +1F44B ; fully-qualified # ๐Ÿ‘‹ waving hand +1F44B 1F3FB ; fully-qualified # ๐Ÿ‘‹๐Ÿป waving hand: light skin tone +1F44B 1F3FC ; fully-qualified # ๐Ÿ‘‹๐Ÿผ waving hand: medium-light skin tone +1F44B 1F3FD ; fully-qualified # ๐Ÿ‘‹๐Ÿฝ waving hand: medium skin tone +1F44B 1F3FE ; fully-qualified # ๐Ÿ‘‹๐Ÿพ waving hand: medium-dark skin tone +1F44B 1F3FF ; fully-qualified # ๐Ÿ‘‹๐Ÿฟ waving hand: dark skin tone +1F91F ; fully-qualified # ๐ŸคŸ love-you gesture +1F91F 1F3FB ; fully-qualified # ๐ŸคŸ๐Ÿป love-you gesture: light skin tone +1F91F 1F3FC ; fully-qualified # ๐ŸคŸ๐Ÿผ love-you gesture: medium-light skin tone +1F91F 1F3FD ; fully-qualified # ๐ŸคŸ๐Ÿฝ love-you gesture: medium skin tone +1F91F 1F3FE ; fully-qualified # ๐ŸคŸ๐Ÿพ love-you gesture: medium-dark skin tone +1F91F 1F3FF ; fully-qualified # ๐ŸคŸ๐Ÿฟ love-you gesture: dark skin tone +270D FE0F ; fully-qualified # โœ๏ธ writing hand +270D ; non-fully-qualified # โœ writing hand +270D 1F3FB ; fully-qualified # โœ๐Ÿป writing hand: light skin tone +270D 1F3FC ; fully-qualified # โœ๐Ÿผ writing hand: medium-light skin tone +270D 1F3FD ; fully-qualified # โœ๐Ÿฝ writing hand: medium skin tone +270D 1F3FE ; fully-qualified # โœ๐Ÿพ writing hand: medium-dark skin tone +270D 1F3FF ; fully-qualified # โœ๐Ÿฟ writing hand: dark skin tone +1F44F ; fully-qualified # ๐Ÿ‘ clapping hands +1F44F 1F3FB ; fully-qualified # ๐Ÿ‘๐Ÿป clapping hands: light skin tone +1F44F 1F3FC ; fully-qualified # ๐Ÿ‘๐Ÿผ clapping hands: medium-light skin tone +1F44F 1F3FD ; fully-qualified # ๐Ÿ‘๐Ÿฝ clapping hands: medium skin tone +1F44F 1F3FE ; fully-qualified # ๐Ÿ‘๐Ÿพ clapping hands: medium-dark skin tone +1F44F 1F3FF ; fully-qualified # ๐Ÿ‘๐Ÿฟ clapping hands: dark skin tone +1F450 ; fully-qualified # ๐Ÿ‘ open hands +1F450 1F3FB ; fully-qualified # ๐Ÿ‘๐Ÿป open hands: light skin tone +1F450 1F3FC ; fully-qualified # ๐Ÿ‘๐Ÿผ open hands: medium-light skin tone +1F450 1F3FD ; fully-qualified # ๐Ÿ‘๐Ÿฝ open hands: medium skin tone +1F450 1F3FE ; fully-qualified # ๐Ÿ‘๐Ÿพ open hands: medium-dark skin tone +1F450 1F3FF ; fully-qualified # ๐Ÿ‘๐Ÿฟ open hands: dark skin tone +1F64C ; fully-qualified # ๐Ÿ™Œ raising hands +1F64C 1F3FB ; fully-qualified # ๐Ÿ™Œ๐Ÿป raising hands: light skin tone +1F64C 1F3FC ; fully-qualified # ๐Ÿ™Œ๐Ÿผ raising hands: medium-light skin tone +1F64C 1F3FD ; fully-qualified # ๐Ÿ™Œ๐Ÿฝ raising hands: medium skin tone +1F64C 1F3FE ; fully-qualified # ๐Ÿ™Œ๐Ÿพ raising hands: medium-dark skin tone +1F64C 1F3FF ; fully-qualified # ๐Ÿ™Œ๐Ÿฟ raising hands: dark skin tone +1F932 ; fully-qualified # ๐Ÿคฒ palms up together +1F932 1F3FB ; fully-qualified # ๐Ÿคฒ๐Ÿป palms up together: light skin tone +1F932 1F3FC ; fully-qualified # ๐Ÿคฒ๐Ÿผ palms up together: medium-light skin tone +1F932 1F3FD ; fully-qualified # ๐Ÿคฒ๐Ÿฝ palms up together: medium skin tone +1F932 1F3FE ; fully-qualified # ๐Ÿคฒ๐Ÿพ palms up together: medium-dark skin tone +1F932 1F3FF ; fully-qualified # ๐Ÿคฒ๐Ÿฟ palms up together: dark skin tone +1F64F ; fully-qualified # ๐Ÿ™ folded hands +1F64F 1F3FB ; fully-qualified # ๐Ÿ™๐Ÿป folded hands: light skin tone +1F64F 1F3FC ; fully-qualified # ๐Ÿ™๐Ÿผ folded hands: medium-light skin tone +1F64F 1F3FD ; fully-qualified # ๐Ÿ™๐Ÿฝ folded hands: medium skin tone +1F64F 1F3FE ; fully-qualified # ๐Ÿ™๐Ÿพ folded hands: medium-dark skin tone +1F64F 1F3FF ; fully-qualified # ๐Ÿ™๐Ÿฟ folded hands: dark skin tone +1F91D ; fully-qualified # ๐Ÿค handshake +1F485 ; fully-qualified # ๐Ÿ’… nail polish +1F485 1F3FB ; fully-qualified # ๐Ÿ’…๐Ÿป nail polish: light skin tone +1F485 1F3FC ; fully-qualified # ๐Ÿ’…๐Ÿผ nail polish: medium-light skin tone +1F485 1F3FD ; fully-qualified # ๐Ÿ’…๐Ÿฝ nail polish: medium skin tone +1F485 1F3FE ; fully-qualified # ๐Ÿ’…๐Ÿพ nail polish: medium-dark skin tone +1F485 1F3FF ; fully-qualified # ๐Ÿ’…๐Ÿฟ nail polish: dark skin tone +1F442 ; fully-qualified # ๐Ÿ‘‚ ear +1F442 1F3FB ; fully-qualified # ๐Ÿ‘‚๐Ÿป ear: light skin tone +1F442 1F3FC ; fully-qualified # ๐Ÿ‘‚๐Ÿผ ear: medium-light skin tone +1F442 1F3FD ; fully-qualified # ๐Ÿ‘‚๐Ÿฝ ear: medium skin tone +1F442 1F3FE ; fully-qualified # ๐Ÿ‘‚๐Ÿพ ear: medium-dark skin tone +1F442 1F3FF ; fully-qualified # ๐Ÿ‘‚๐Ÿฟ ear: dark skin tone +1F443 ; fully-qualified # ๐Ÿ‘ƒ nose +1F443 1F3FB ; fully-qualified # ๐Ÿ‘ƒ๐Ÿป nose: light skin tone +1F443 1F3FC ; fully-qualified # ๐Ÿ‘ƒ๐Ÿผ nose: medium-light skin tone +1F443 1F3FD ; fully-qualified # ๐Ÿ‘ƒ๐Ÿฝ nose: medium skin tone +1F443 1F3FE ; fully-qualified # ๐Ÿ‘ƒ๐Ÿพ nose: medium-dark skin tone +1F443 1F3FF ; fully-qualified # ๐Ÿ‘ƒ๐Ÿฟ nose: dark skin tone +1F9B0 ; fully-qualified # ๐Ÿฆฐ red-haired +1F9B1 ; fully-qualified # ๐Ÿฆฑ curly-haired +1F9B2 ; fully-qualified # ๐Ÿฆฒ bald +1F9B3 ; fully-qualified # ๐Ÿฆณ white-haired +1F463 ; fully-qualified # ๐Ÿ‘ฃ footprints +1F440 ; fully-qualified # ๐Ÿ‘€ eyes +1F441 FE0F ; fully-qualified # ๐Ÿ‘๏ธ eye +1F441 ; non-fully-qualified # ๐Ÿ‘ eye +1F441 FE0F 200D 1F5E8 FE0F ; fully-qualified # ๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ eye in speech bubble +1F441 200D 1F5E8 FE0F ; non-fully-qualified # ๐Ÿ‘โ€๐Ÿ—จ๏ธ eye in speech bubble +1F441 FE0F 200D 1F5E8 ; non-fully-qualified # ๐Ÿ‘๏ธโ€๐Ÿ—จ eye in speech bubble +1F441 200D 1F5E8 ; non-fully-qualified # ๐Ÿ‘โ€๐Ÿ—จ eye in speech bubble +1F9E0 ; fully-qualified # ๐Ÿง  brain +1F9B4 ; fully-qualified # ๐Ÿฆด bone +1F9B7 ; fully-qualified # ๐Ÿฆท tooth +1F445 ; fully-qualified # ๐Ÿ‘… tongue +1F444 ; fully-qualified # ๐Ÿ‘„ mouth + +# subgroup: emotion +1F48B ; fully-qualified # ๐Ÿ’‹ kiss mark +1F498 ; fully-qualified # ๐Ÿ’˜ heart with arrow +2764 FE0F ; fully-qualified # โค๏ธ red heart +2764 ; non-fully-qualified # โค red heart +1F493 ; fully-qualified # ๐Ÿ’“ beating heart +1F494 ; fully-qualified # ๐Ÿ’” broken heart +1F495 ; fully-qualified # ๐Ÿ’• two hearts +1F496 ; fully-qualified # ๐Ÿ’– sparkling heart +1F497 ; fully-qualified # ๐Ÿ’— growing heart +1F499 ; fully-qualified # ๐Ÿ’™ blue heart +1F49A ; fully-qualified # ๐Ÿ’š green heart +1F49B ; fully-qualified # ๐Ÿ’› yellow heart +1F9E1 ; fully-qualified # ๐Ÿงก orange heart +1F49C ; fully-qualified # ๐Ÿ’œ purple heart +1F5A4 ; fully-qualified # ๐Ÿ–ค black heart +1F49D ; fully-qualified # ๐Ÿ’ heart with ribbon +1F49E ; fully-qualified # ๐Ÿ’ž revolving hearts +1F49F ; fully-qualified # ๐Ÿ’Ÿ heart decoration +2763 FE0F ; fully-qualified # โฃ๏ธ heavy heart exclamation +2763 ; non-fully-qualified # โฃ heavy heart exclamation +1F48C ; fully-qualified # ๐Ÿ’Œ love letter +1F4A4 ; fully-qualified # ๐Ÿ’ค zzz +1F4A2 ; fully-qualified # ๐Ÿ’ข anger symbol +1F4A3 ; fully-qualified # ๐Ÿ’ฃ bomb +1F4A5 ; fully-qualified # ๐Ÿ’ฅ collision +1F4A6 ; fully-qualified # ๐Ÿ’ฆ sweat droplets +1F4A8 ; fully-qualified # ๐Ÿ’จ dashing away +1F4AB ; fully-qualified # ๐Ÿ’ซ dizzy +1F4AC ; fully-qualified # ๐Ÿ’ฌ speech balloon +1F5E8 FE0F ; fully-qualified # ๐Ÿ—จ๏ธ left speech bubble +1F5E8 ; non-fully-qualified # ๐Ÿ—จ left speech bubble +1F5EF FE0F ; fully-qualified # ๐Ÿ—ฏ๏ธ right anger bubble +1F5EF ; non-fully-qualified # ๐Ÿ—ฏ right anger bubble +1F4AD ; fully-qualified # ๐Ÿ’ญ thought balloon +1F573 FE0F ; fully-qualified # ๐Ÿ•ณ๏ธ hole +1F573 ; non-fully-qualified # ๐Ÿ•ณ hole + +# subgroup: clothing +1F453 ; fully-qualified # ๐Ÿ‘“ glasses +1F576 FE0F ; fully-qualified # ๐Ÿ•ถ๏ธ sunglasses +1F576 ; non-fully-qualified # ๐Ÿ•ถ sunglasses +1F97D ; fully-qualified # ๐Ÿฅฝ goggles +1F97C ; fully-qualified # ๐Ÿฅผ lab coat +1F454 ; fully-qualified # ๐Ÿ‘” necktie +1F455 ; fully-qualified # ๐Ÿ‘• t-shirt +1F456 ; fully-qualified # ๐Ÿ‘– jeans +1F9E3 ; fully-qualified # ๐Ÿงฃ scarf +1F9E4 ; fully-qualified # ๐Ÿงค gloves +1F9E5 ; fully-qualified # ๐Ÿงฅ coat +1F9E6 ; fully-qualified # ๐Ÿงฆ socks +1F457 ; fully-qualified # ๐Ÿ‘— dress +1F458 ; fully-qualified # ๐Ÿ‘˜ kimono +1F459 ; fully-qualified # ๐Ÿ‘™ bikini +1F45A ; fully-qualified # ๐Ÿ‘š womanโ€™s clothes +1F45B ; fully-qualified # ๐Ÿ‘› purse +1F45C ; fully-qualified # ๐Ÿ‘œ handbag +1F45D ; fully-qualified # ๐Ÿ‘ clutch bag +1F6CD FE0F ; fully-qualified # ๐Ÿ›๏ธ shopping bags +1F6CD ; non-fully-qualified # ๐Ÿ› shopping bags +1F392 ; fully-qualified # ๐ŸŽ’ school backpack +1F45E ; fully-qualified # ๐Ÿ‘ž manโ€™s shoe +1F45F ; fully-qualified # ๐Ÿ‘Ÿ running shoe +1F97E ; fully-qualified # ๐Ÿฅพ hiking boot +1F97F ; fully-qualified # ๐Ÿฅฟ womanโ€™s flat shoe +1F460 ; fully-qualified # ๐Ÿ‘  high-heeled shoe +1F461 ; fully-qualified # ๐Ÿ‘ก womanโ€™s sandal +1F462 ; fully-qualified # ๐Ÿ‘ข womanโ€™s boot +1F451 ; fully-qualified # ๐Ÿ‘‘ crown +1F452 ; fully-qualified # ๐Ÿ‘’ womanโ€™s hat +1F3A9 ; fully-qualified # ๐ŸŽฉ top hat +1F393 ; fully-qualified # ๐ŸŽ“ graduation cap +1F9E2 ; fully-qualified # ๐Ÿงข billed cap +26D1 FE0F ; fully-qualified # โ›‘๏ธ rescue workerโ€™s helmet +26D1 ; non-fully-qualified # โ›‘ rescue workerโ€™s helmet +1F4FF ; fully-qualified # ๐Ÿ“ฟ prayer beads +1F484 ; fully-qualified # ๐Ÿ’„ lipstick +1F48D ; fully-qualified # ๐Ÿ’ ring +1F48E ; fully-qualified # ๐Ÿ’Ž gem stone + +# Smileys & People subtotal: 2210 +# Smileys & People subtotal: 625 w/o modifiers + +# group: Animals & Nature + +# subgroup: animal-mammal +1F435 ; fully-qualified # ๐Ÿต monkey face +1F412 ; fully-qualified # ๐Ÿ’ monkey +1F98D ; fully-qualified # ๐Ÿฆ gorilla +1F436 ; fully-qualified # ๐Ÿถ dog face +1F415 ; fully-qualified # ๐Ÿ• dog +1F429 ; fully-qualified # ๐Ÿฉ poodle +1F43A ; fully-qualified # ๐Ÿบ wolf face +1F98A ; fully-qualified # ๐ŸฆŠ fox face +1F99D ; fully-qualified # ๐Ÿฆ raccoon +1F431 ; fully-qualified # ๐Ÿฑ cat face +1F408 ; fully-qualified # ๐Ÿˆ cat +1F981 ; fully-qualified # ๐Ÿฆ lion face +1F42F ; fully-qualified # ๐Ÿฏ tiger face +1F405 ; fully-qualified # ๐Ÿ… tiger +1F406 ; fully-qualified # ๐Ÿ† leopard +1F434 ; fully-qualified # ๐Ÿด horse face +1F40E ; fully-qualified # ๐ŸŽ horse +1F984 ; fully-qualified # ๐Ÿฆ„ unicorn face +1F993 ; fully-qualified # ๐Ÿฆ“ zebra +1F98C ; fully-qualified # ๐ŸฆŒ deer +1F42E ; fully-qualified # ๐Ÿฎ cow face +1F402 ; fully-qualified # ๐Ÿ‚ ox +1F403 ; fully-qualified # ๐Ÿƒ water buffalo +1F404 ; fully-qualified # ๐Ÿ„ cow +1F437 ; fully-qualified # ๐Ÿท pig face +1F416 ; fully-qualified # ๐Ÿ– pig +1F417 ; fully-qualified # ๐Ÿ— boar +1F43D ; fully-qualified # ๐Ÿฝ pig nose +1F40F ; fully-qualified # ๐Ÿ ram +1F411 ; fully-qualified # ๐Ÿ‘ ewe +1F410 ; fully-qualified # ๐Ÿ goat +1F42A ; fully-qualified # ๐Ÿช camel +1F42B ; fully-qualified # ๐Ÿซ two-hump camel +1F999 ; fully-qualified # ๐Ÿฆ™ llama +1F992 ; fully-qualified # ๐Ÿฆ’ giraffe +1F418 ; fully-qualified # ๐Ÿ˜ elephant +1F98F ; fully-qualified # ๐Ÿฆ rhinoceros +1F99B ; fully-qualified # ๐Ÿฆ› hippopotamus +1F42D ; fully-qualified # ๐Ÿญ mouse face +1F401 ; fully-qualified # ๐Ÿ mouse +1F400 ; fully-qualified # ๐Ÿ€ rat +1F439 ; fully-qualified # ๐Ÿน hamster face +1F430 ; fully-qualified # ๐Ÿฐ rabbit face +1F407 ; fully-qualified # ๐Ÿ‡ rabbit +1F43F FE0F ; fully-qualified # ๐Ÿฟ๏ธ chipmunk +1F43F ; non-fully-qualified # ๐Ÿฟ chipmunk +1F994 ; fully-qualified # ๐Ÿฆ” hedgehog +1F987 ; fully-qualified # ๐Ÿฆ‡ bat +1F43B ; fully-qualified # ๐Ÿป bear face +1F428 ; fully-qualified # ๐Ÿจ koala +1F43C ; fully-qualified # ๐Ÿผ panda face +1F998 ; fully-qualified # ๐Ÿฆ˜ kangaroo +1F9A1 ; fully-qualified # ๐Ÿฆก badger +1F43E ; fully-qualified # ๐Ÿพ paw prints + +# subgroup: animal-bird +1F983 ; fully-qualified # ๐Ÿฆƒ turkey +1F414 ; fully-qualified # ๐Ÿ” chicken +1F413 ; fully-qualified # ๐Ÿ“ rooster +1F423 ; fully-qualified # ๐Ÿฃ hatching chick +1F424 ; fully-qualified # ๐Ÿค baby chick +1F425 ; fully-qualified # ๐Ÿฅ front-facing baby chick +1F426 ; fully-qualified # ๐Ÿฆ bird +1F427 ; fully-qualified # ๐Ÿง penguin +1F54A FE0F ; fully-qualified # ๐Ÿ•Š๏ธ dove +1F54A ; non-fully-qualified # ๐Ÿ•Š dove +1F985 ; fully-qualified # ๐Ÿฆ… eagle +1F986 ; fully-qualified # ๐Ÿฆ† duck +1F9A2 ; fully-qualified # ๐Ÿฆข swan +1F989 ; fully-qualified # ๐Ÿฆ‰ owl +1F99A ; fully-qualified # ๐Ÿฆš peacock +1F99C ; fully-qualified # ๐Ÿฆœ parrot + +# subgroup: animal-amphibian +1F438 ; fully-qualified # ๐Ÿธ frog face + +# subgroup: animal-reptile +1F40A ; fully-qualified # ๐ŸŠ crocodile +1F422 ; fully-qualified # ๐Ÿข turtle +1F98E ; fully-qualified # ๐ŸฆŽ lizard +1F40D ; fully-qualified # ๐Ÿ snake +1F432 ; fully-qualified # ๐Ÿฒ dragon face +1F409 ; fully-qualified # ๐Ÿ‰ dragon +1F995 ; fully-qualified # ๐Ÿฆ• sauropod +1F996 ; fully-qualified # ๐Ÿฆ– T-Rex + +# subgroup: animal-marine +1F433 ; fully-qualified # ๐Ÿณ spouting whale +1F40B ; fully-qualified # ๐Ÿ‹ whale +1F42C ; fully-qualified # ๐Ÿฌ dolphin +1F41F ; fully-qualified # ๐ŸŸ fish +1F420 ; fully-qualified # ๐Ÿ  tropical fish +1F421 ; fully-qualified # ๐Ÿก blowfish +1F988 ; fully-qualified # ๐Ÿฆˆ shark +1F419 ; fully-qualified # ๐Ÿ™ octopus +1F41A ; fully-qualified # ๐Ÿš spiral shell +1F980 ; fully-qualified # ๐Ÿฆ€ crab +1F99E ; fully-qualified # ๐Ÿฆž lobster +1F990 ; fully-qualified # ๐Ÿฆ shrimp +1F991 ; fully-qualified # ๐Ÿฆ‘ squid + +# subgroup: animal-bug +1F40C ; fully-qualified # ๐ŸŒ snail +1F98B ; fully-qualified # ๐Ÿฆ‹ butterfly +1F41B ; fully-qualified # ๐Ÿ› bug +1F41C ; fully-qualified # ๐Ÿœ ant +1F41D ; fully-qualified # ๐Ÿ honeybee +1F41E ; fully-qualified # ๐Ÿž lady beetle +1F997 ; fully-qualified # ๐Ÿฆ— cricket +1F577 FE0F ; fully-qualified # ๐Ÿ•ท๏ธ spider +1F577 ; non-fully-qualified # ๐Ÿ•ท spider +1F578 FE0F ; fully-qualified # ๐Ÿ•ธ๏ธ spider web +1F578 ; non-fully-qualified # ๐Ÿ•ธ spider web +1F982 ; fully-qualified # ๐Ÿฆ‚ scorpion +1F99F ; fully-qualified # ๐ŸฆŸ mosquito +1F9A0 ; fully-qualified # ๐Ÿฆ  microbe + +# subgroup: plant-flower +1F490 ; fully-qualified # ๐Ÿ’ bouquet +1F338 ; fully-qualified # ๐ŸŒธ cherry blossom +1F4AE ; fully-qualified # ๐Ÿ’ฎ white flower +1F3F5 FE0F ; fully-qualified # ๐Ÿต๏ธ rosette +1F3F5 ; non-fully-qualified # ๐Ÿต rosette +1F339 ; fully-qualified # ๐ŸŒน rose +1F940 ; fully-qualified # ๐Ÿฅ€ wilted flower +1F33A ; fully-qualified # ๐ŸŒบ hibiscus +1F33B ; fully-qualified # ๐ŸŒป sunflower +1F33C ; fully-qualified # ๐ŸŒผ blossom +1F337 ; fully-qualified # ๐ŸŒท tulip + +# subgroup: plant-other +1F331 ; fully-qualified # ๐ŸŒฑ seedling +1F332 ; fully-qualified # ๐ŸŒฒ evergreen tree +1F333 ; fully-qualified # ๐ŸŒณ deciduous tree +1F334 ; fully-qualified # ๐ŸŒด palm tree +1F335 ; fully-qualified # ๐ŸŒต cactus +1F33E ; fully-qualified # ๐ŸŒพ sheaf of rice +1F33F ; fully-qualified # ๐ŸŒฟ herb +2618 FE0F ; fully-qualified # โ˜˜๏ธ shamrock +2618 ; non-fully-qualified # โ˜˜ shamrock +1F340 ; fully-qualified # ๐Ÿ€ four leaf clover +1F341 ; fully-qualified # ๐Ÿ maple leaf +1F342 ; fully-qualified # ๐Ÿ‚ fallen leaf +1F343 ; fully-qualified # ๐Ÿƒ leaf fluttering in wind + +# Animals & Nature subtotal: 130 +# Animals & Nature subtotal: 130 w/o modifiers + +# group: Food & Drink + +# subgroup: food-fruit +1F347 ; fully-qualified # ๐Ÿ‡ grapes +1F348 ; fully-qualified # ๐Ÿˆ melon +1F349 ; fully-qualified # ๐Ÿ‰ watermelon +1F34A ; fully-qualified # ๐ŸŠ tangerine +1F34B ; fully-qualified # ๐Ÿ‹ lemon +1F34C ; fully-qualified # ๐ŸŒ banana +1F34D ; fully-qualified # ๐Ÿ pineapple +1F96D ; fully-qualified # ๐Ÿฅญ mango +1F34E ; fully-qualified # ๐ŸŽ red apple +1F34F ; fully-qualified # ๐Ÿ green apple +1F350 ; fully-qualified # ๐Ÿ pear +1F351 ; fully-qualified # ๐Ÿ‘ peach +1F352 ; fully-qualified # ๐Ÿ’ cherries +1F353 ; fully-qualified # ๐Ÿ“ strawberry +1F95D ; fully-qualified # ๐Ÿฅ kiwi fruit +1F345 ; fully-qualified # ๐Ÿ… tomato +1F965 ; fully-qualified # ๐Ÿฅฅ coconut + +# subgroup: food-vegetable +1F951 ; fully-qualified # ๐Ÿฅ‘ avocado +1F346 ; fully-qualified # ๐Ÿ† eggplant +1F954 ; fully-qualified # ๐Ÿฅ” potato +1F955 ; fully-qualified # ๐Ÿฅ• carrot +1F33D ; fully-qualified # ๐ŸŒฝ ear of corn +1F336 FE0F ; fully-qualified # ๐ŸŒถ๏ธ hot pepper +1F336 ; non-fully-qualified # ๐ŸŒถ hot pepper +1F952 ; fully-qualified # ๐Ÿฅ’ cucumber +1F96C ; fully-qualified # ๐Ÿฅฌ leafy green +1F966 ; fully-qualified # ๐Ÿฅฆ broccoli +1F344 ; fully-qualified # ๐Ÿ„ mushroom +1F95C ; fully-qualified # ๐Ÿฅœ peanuts +1F330 ; fully-qualified # ๐ŸŒฐ chestnut + +# subgroup: food-prepared +1F35E ; fully-qualified # ๐Ÿž bread +1F950 ; fully-qualified # ๐Ÿฅ croissant +1F956 ; fully-qualified # ๐Ÿฅ– baguette bread +1F968 ; fully-qualified # ๐Ÿฅจ pretzel +1F96F ; fully-qualified # ๐Ÿฅฏ bagel +1F95E ; fully-qualified # ๐Ÿฅž pancakes +1F9C0 ; fully-qualified # ๐Ÿง€ cheese wedge +1F356 ; fully-qualified # ๐Ÿ– meat on bone +1F357 ; fully-qualified # ๐Ÿ— poultry leg +1F969 ; fully-qualified # ๐Ÿฅฉ cut of meat +1F953 ; fully-qualified # ๐Ÿฅ“ bacon +1F354 ; fully-qualified # ๐Ÿ” hamburger +1F35F ; fully-qualified # ๐ŸŸ french fries +1F355 ; fully-qualified # ๐Ÿ• pizza +1F32D ; fully-qualified # ๐ŸŒญ hot dog +1F96A ; fully-qualified # ๐Ÿฅช sandwich +1F32E ; fully-qualified # ๐ŸŒฎ taco +1F32F ; fully-qualified # ๐ŸŒฏ burrito +1F959 ; fully-qualified # ๐Ÿฅ™ stuffed flatbread +1F95A ; fully-qualified # ๐Ÿฅš egg +1F373 ; fully-qualified # ๐Ÿณ cooking +1F958 ; fully-qualified # ๐Ÿฅ˜ shallow pan of food +1F372 ; fully-qualified # ๐Ÿฒ pot of food +1F963 ; fully-qualified # ๐Ÿฅฃ bowl with spoon +1F957 ; fully-qualified # ๐Ÿฅ— green salad +1F37F ; fully-qualified # ๐Ÿฟ popcorn +1F9C2 ; fully-qualified # ๐Ÿง‚ salt +1F96B ; fully-qualified # ๐Ÿฅซ canned food + +# subgroup: food-asian +1F371 ; fully-qualified # ๐Ÿฑ bento box +1F358 ; fully-qualified # ๐Ÿ˜ rice cracker +1F359 ; fully-qualified # ๐Ÿ™ rice ball +1F35A ; fully-qualified # ๐Ÿš cooked rice +1F35B ; fully-qualified # ๐Ÿ› curry rice +1F35C ; fully-qualified # ๐Ÿœ steaming bowl +1F35D ; fully-qualified # ๐Ÿ spaghetti +1F360 ; fully-qualified # ๐Ÿ  roasted sweet potato +1F362 ; fully-qualified # ๐Ÿข oden +1F363 ; fully-qualified # ๐Ÿฃ sushi +1F364 ; fully-qualified # ๐Ÿค fried shrimp +1F365 ; fully-qualified # ๐Ÿฅ fish cake with swirl +1F96E ; fully-qualified # ๐Ÿฅฎ moon cake +1F361 ; fully-qualified # ๐Ÿก dango +1F95F ; fully-qualified # ๐ŸฅŸ dumpling +1F960 ; fully-qualified # ๐Ÿฅ  fortune cookie +1F961 ; fully-qualified # ๐Ÿฅก takeout box + +# subgroup: food-sweet +1F366 ; fully-qualified # ๐Ÿฆ soft ice cream +1F367 ; fully-qualified # ๐Ÿง shaved ice +1F368 ; fully-qualified # ๐Ÿจ ice cream +1F369 ; fully-qualified # ๐Ÿฉ doughnut +1F36A ; fully-qualified # ๐Ÿช cookie +1F382 ; fully-qualified # ๐ŸŽ‚ birthday cake +1F370 ; fully-qualified # ๐Ÿฐ shortcake +1F9C1 ; fully-qualified # ๐Ÿง cupcake +1F967 ; fully-qualified # ๐Ÿฅง pie +1F36B ; fully-qualified # ๐Ÿซ chocolate bar +1F36C ; fully-qualified # ๐Ÿฌ candy +1F36D ; fully-qualified # ๐Ÿญ lollipop +1F36E ; fully-qualified # ๐Ÿฎ custard +1F36F ; fully-qualified # ๐Ÿฏ honey pot + +# subgroup: drink +1F37C ; fully-qualified # ๐Ÿผ baby bottle +1F95B ; fully-qualified # ๐Ÿฅ› glass of milk +2615 ; fully-qualified # โ˜• hot beverage +1F375 ; fully-qualified # ๐Ÿต teacup without handle +1F376 ; fully-qualified # ๐Ÿถ sake +1F37E ; fully-qualified # ๐Ÿพ bottle with popping cork +1F377 ; fully-qualified # ๐Ÿท wine glass +1F378 ; fully-qualified # ๐Ÿธ cocktail glass +1F379 ; fully-qualified # ๐Ÿน tropical drink +1F37A ; fully-qualified # ๐Ÿบ beer mug +1F37B ; fully-qualified # ๐Ÿป clinking beer mugs +1F942 ; fully-qualified # ๐Ÿฅ‚ clinking glasses +1F943 ; fully-qualified # ๐Ÿฅƒ tumbler glass +1F964 ; fully-qualified # ๐Ÿฅค cup with straw + +# subgroup: dishware +1F962 ; fully-qualified # ๐Ÿฅข chopsticks +1F37D FE0F ; fully-qualified # ๐Ÿฝ๏ธ fork and knife with plate +1F37D ; non-fully-qualified # ๐Ÿฝ fork and knife with plate +1F374 ; fully-qualified # ๐Ÿด fork and knife +1F944 ; fully-qualified # ๐Ÿฅ„ spoon +1F52A ; fully-qualified # ๐Ÿ”ช kitchen knife +1F3FA ; fully-qualified # ๐Ÿบ amphora + +# Food & Drink subtotal: 110 +# Food & Drink subtotal: 110 w/o modifiers + +# group: Travel & Places + +# subgroup: place-map +1F30D ; fully-qualified # ๐ŸŒ globe showing Europe-Africa +1F30E ; fully-qualified # ๐ŸŒŽ globe showing Americas +1F30F ; fully-qualified # ๐ŸŒ globe showing Asia-Australia +1F310 ; fully-qualified # ๐ŸŒ globe with meridians +1F5FA FE0F ; fully-qualified # ๐Ÿ—บ๏ธ world map +1F5FA ; non-fully-qualified # ๐Ÿ—บ world map +1F5FE ; fully-qualified # ๐Ÿ—พ map of Japan +1F9ED ; fully-qualified # ๐Ÿงญ compass + +# subgroup: place-geographic +1F3D4 FE0F ; fully-qualified # ๐Ÿ”๏ธ snow-capped mountain +1F3D4 ; non-fully-qualified # ๐Ÿ” snow-capped mountain +26F0 FE0F ; fully-qualified # โ›ฐ๏ธ mountain +26F0 ; non-fully-qualified # โ›ฐ mountain +1F30B ; fully-qualified # ๐ŸŒ‹ volcano +1F5FB ; fully-qualified # ๐Ÿ—ป mount fuji +1F3D5 FE0F ; fully-qualified # ๐Ÿ•๏ธ camping +1F3D5 ; non-fully-qualified # ๐Ÿ• camping +1F3D6 FE0F ; fully-qualified # ๐Ÿ–๏ธ beach with umbrella +1F3D6 ; non-fully-qualified # ๐Ÿ– beach with umbrella +1F3DC FE0F ; fully-qualified # ๐Ÿœ๏ธ desert +1F3DC ; non-fully-qualified # ๐Ÿœ desert +1F3DD FE0F ; fully-qualified # ๐Ÿ๏ธ desert island +1F3DD ; non-fully-qualified # ๐Ÿ desert island +1F3DE FE0F ; fully-qualified # ๐Ÿž๏ธ national park +1F3DE ; non-fully-qualified # ๐Ÿž national park + +# subgroup: place-building +1F3DF FE0F ; fully-qualified # ๐ŸŸ๏ธ stadium +1F3DF ; non-fully-qualified # ๐ŸŸ stadium +1F3DB FE0F ; fully-qualified # ๐Ÿ›๏ธ classical building +1F3DB ; non-fully-qualified # ๐Ÿ› classical building +1F3D7 FE0F ; fully-qualified # ๐Ÿ—๏ธ building construction +1F3D7 ; non-fully-qualified # ๐Ÿ— building construction +1F9F1 ; fully-qualified # ๐Ÿงฑ bricks +1F3D8 FE0F ; fully-qualified # ๐Ÿ˜๏ธ houses +1F3D8 ; non-fully-qualified # ๐Ÿ˜ houses +1F3DA FE0F ; fully-qualified # ๐Ÿš๏ธ derelict house +1F3DA ; non-fully-qualified # ๐Ÿš derelict house +1F3E0 ; fully-qualified # ๐Ÿ  house +1F3E1 ; fully-qualified # ๐Ÿก house with garden +1F3E2 ; fully-qualified # ๐Ÿข office building +1F3E3 ; fully-qualified # ๐Ÿฃ Japanese post office +1F3E4 ; fully-qualified # ๐Ÿค post office +1F3E5 ; fully-qualified # ๐Ÿฅ hospital +1F3E6 ; fully-qualified # ๐Ÿฆ bank +1F3E8 ; fully-qualified # ๐Ÿจ hotel +1F3E9 ; fully-qualified # ๐Ÿฉ love hotel +1F3EA ; fully-qualified # ๐Ÿช convenience store +1F3EB ; fully-qualified # ๐Ÿซ school +1F3EC ; fully-qualified # ๐Ÿฌ department store +1F3ED ; fully-qualified # ๐Ÿญ factory +1F3EF ; fully-qualified # ๐Ÿฏ Japanese castle +1F3F0 ; fully-qualified # ๐Ÿฐ castle +1F492 ; fully-qualified # ๐Ÿ’’ wedding +1F5FC ; fully-qualified # ๐Ÿ—ผ Tokyo tower +1F5FD ; fully-qualified # ๐Ÿ—ฝ Statue of Liberty + +# subgroup: place-religious +26EA ; fully-qualified # โ›ช church +1F54C ; fully-qualified # ๐Ÿ•Œ mosque +1F54D ; fully-qualified # ๐Ÿ• synagogue +26E9 FE0F ; fully-qualified # โ›ฉ๏ธ shinto shrine +26E9 ; non-fully-qualified # โ›ฉ shinto shrine +1F54B ; fully-qualified # ๐Ÿ•‹ kaaba + +# subgroup: place-other +26F2 ; fully-qualified # โ›ฒ fountain +26FA ; fully-qualified # โ›บ tent +1F301 ; fully-qualified # ๐ŸŒ foggy +1F303 ; fully-qualified # ๐ŸŒƒ night with stars +1F3D9 FE0F ; fully-qualified # ๐Ÿ™๏ธ cityscape +1F3D9 ; non-fully-qualified # ๐Ÿ™ cityscape +1F304 ; fully-qualified # ๐ŸŒ„ sunrise over mountains +1F305 ; fully-qualified # ๐ŸŒ… sunrise +1F306 ; fully-qualified # ๐ŸŒ† cityscape at dusk +1F307 ; fully-qualified # ๐ŸŒ‡ sunset +1F309 ; fully-qualified # ๐ŸŒ‰ bridge at night +2668 FE0F ; fully-qualified # โ™จ๏ธ hot springs +2668 ; non-fully-qualified # โ™จ hot springs +1F30C ; fully-qualified # ๐ŸŒŒ milky way +1F3A0 ; fully-qualified # ๐ŸŽ  carousel horse +1F3A1 ; fully-qualified # ๐ŸŽก ferris wheel +1F3A2 ; fully-qualified # ๐ŸŽข roller coaster +1F488 ; fully-qualified # ๐Ÿ’ˆ barber pole +1F3AA ; fully-qualified # ๐ŸŽช circus tent + +# subgroup: transport-ground +1F682 ; fully-qualified # ๐Ÿš‚ locomotive +1F683 ; fully-qualified # ๐Ÿšƒ railway car +1F684 ; fully-qualified # ๐Ÿš„ high-speed train +1F685 ; fully-qualified # ๐Ÿš… bullet train +1F686 ; fully-qualified # ๐Ÿš† train +1F687 ; fully-qualified # ๐Ÿš‡ metro +1F688 ; fully-qualified # ๐Ÿšˆ light rail +1F689 ; fully-qualified # ๐Ÿš‰ station +1F68A ; fully-qualified # ๐ŸšŠ tram +1F69D ; fully-qualified # ๐Ÿš monorail +1F69E ; fully-qualified # ๐Ÿšž mountain railway +1F68B ; fully-qualified # ๐Ÿš‹ tram car +1F68C ; fully-qualified # ๐ŸšŒ bus +1F68D ; fully-qualified # ๐Ÿš oncoming bus +1F68E ; fully-qualified # ๐ŸšŽ trolleybus +1F690 ; fully-qualified # ๐Ÿš minibus +1F691 ; fully-qualified # ๐Ÿš‘ ambulance +1F692 ; fully-qualified # ๐Ÿš’ fire engine +1F693 ; fully-qualified # ๐Ÿš“ police car +1F694 ; fully-qualified # ๐Ÿš” oncoming police car +1F695 ; fully-qualified # ๐Ÿš• taxi +1F696 ; fully-qualified # ๐Ÿš– oncoming taxi +1F697 ; fully-qualified # ๐Ÿš— automobile +1F698 ; fully-qualified # ๐Ÿš˜ oncoming automobile +1F699 ; fully-qualified # ๐Ÿš™ sport utility vehicle +1F69A ; fully-qualified # ๐Ÿšš delivery truck +1F69B ; fully-qualified # ๐Ÿš› articulated lorry +1F69C ; fully-qualified # ๐Ÿšœ tractor +1F6B2 ; fully-qualified # ๐Ÿšฒ bicycle +1F6F4 ; fully-qualified # ๐Ÿ›ด kick scooter +1F6F9 ; fully-qualified # ๐Ÿ›น skateboard +1F6F5 ; fully-qualified # ๐Ÿ›ต motor scooter +1F68F ; fully-qualified # ๐Ÿš bus stop +1F6E3 FE0F ; fully-qualified # ๐Ÿ›ฃ๏ธ motorway +1F6E3 ; non-fully-qualified # ๐Ÿ›ฃ motorway +1F6E4 FE0F ; fully-qualified # ๐Ÿ›ค๏ธ railway track +1F6E4 ; non-fully-qualified # ๐Ÿ›ค railway track +1F6E2 FE0F ; fully-qualified # ๐Ÿ›ข๏ธ oil drum +1F6E2 ; non-fully-qualified # ๐Ÿ›ข oil drum +26FD ; fully-qualified # โ›ฝ fuel pump +1F6A8 ; fully-qualified # ๐Ÿšจ police car light +1F6A5 ; fully-qualified # ๐Ÿšฅ horizontal traffic light +1F6A6 ; fully-qualified # ๐Ÿšฆ vertical traffic light +1F6D1 ; fully-qualified # ๐Ÿ›‘ stop sign +1F6A7 ; fully-qualified # ๐Ÿšง construction + +# subgroup: transport-water +2693 ; fully-qualified # โš“ anchor +26F5 ; fully-qualified # โ›ต sailboat +1F6F6 ; fully-qualified # ๐Ÿ›ถ canoe +1F6A4 ; fully-qualified # ๐Ÿšค speedboat +1F6F3 FE0F ; fully-qualified # ๐Ÿ›ณ๏ธ passenger ship +1F6F3 ; non-fully-qualified # ๐Ÿ›ณ passenger ship +26F4 FE0F ; fully-qualified # โ›ด๏ธ ferry +26F4 ; non-fully-qualified # โ›ด ferry +1F6E5 FE0F ; fully-qualified # ๐Ÿ›ฅ๏ธ motor boat +1F6E5 ; non-fully-qualified # ๐Ÿ›ฅ motor boat +1F6A2 ; fully-qualified # ๐Ÿšข ship + +# subgroup: transport-air +2708 FE0F ; fully-qualified # โœˆ๏ธ airplane +2708 ; non-fully-qualified # โœˆ airplane +1F6E9 FE0F ; fully-qualified # ๐Ÿ›ฉ๏ธ small airplane +1F6E9 ; non-fully-qualified # ๐Ÿ›ฉ small airplane +1F6EB ; fully-qualified # ๐Ÿ›ซ airplane departure +1F6EC ; fully-qualified # ๐Ÿ›ฌ airplane arrival +1F4BA ; fully-qualified # ๐Ÿ’บ seat +1F681 ; fully-qualified # ๐Ÿš helicopter +1F69F ; fully-qualified # ๐ŸšŸ suspension railway +1F6A0 ; fully-qualified # ๐Ÿš  mountain cableway +1F6A1 ; fully-qualified # ๐Ÿšก aerial tramway +1F6F0 FE0F ; fully-qualified # ๐Ÿ›ฐ๏ธ satellite +1F6F0 ; non-fully-qualified # ๐Ÿ›ฐ satellite +1F680 ; fully-qualified # ๐Ÿš€ rocket +1F6F8 ; fully-qualified # ๐Ÿ›ธ flying saucer + +# subgroup: hotel +1F6CE FE0F ; fully-qualified # ๐Ÿ›Ž๏ธ bellhop bell +1F6CE ; non-fully-qualified # ๐Ÿ›Ž bellhop bell +1F9F3 ; fully-qualified # ๐Ÿงณ luggage + +# subgroup: time +231B ; fully-qualified # โŒ› hourglass done +23F3 ; fully-qualified # โณ hourglass not done +231A ; fully-qualified # โŒš watch +23F0 ; fully-qualified # โฐ alarm clock +23F1 FE0F ; fully-qualified # โฑ๏ธ stopwatch +23F1 ; non-fully-qualified # โฑ stopwatch +23F2 FE0F ; fully-qualified # โฒ๏ธ timer clock +23F2 ; non-fully-qualified # โฒ timer clock +1F570 FE0F ; fully-qualified # ๐Ÿ•ฐ๏ธ mantelpiece clock +1F570 ; non-fully-qualified # ๐Ÿ•ฐ mantelpiece clock +1F55B ; fully-qualified # ๐Ÿ•› twelve oโ€™clock +1F567 ; fully-qualified # ๐Ÿ•ง twelve-thirty +1F550 ; fully-qualified # ๐Ÿ• one oโ€™clock +1F55C ; fully-qualified # ๐Ÿ•œ one-thirty +1F551 ; fully-qualified # ๐Ÿ•‘ two oโ€™clock +1F55D ; fully-qualified # ๐Ÿ• two-thirty +1F552 ; fully-qualified # ๐Ÿ•’ three oโ€™clock +1F55E ; fully-qualified # ๐Ÿ•ž three-thirty +1F553 ; fully-qualified # ๐Ÿ•“ four oโ€™clock +1F55F ; fully-qualified # ๐Ÿ•Ÿ four-thirty +1F554 ; fully-qualified # ๐Ÿ•” five oโ€™clock +1F560 ; fully-qualified # ๐Ÿ•  five-thirty +1F555 ; fully-qualified # ๐Ÿ•• six oโ€™clock +1F561 ; fully-qualified # ๐Ÿ•ก six-thirty +1F556 ; fully-qualified # ๐Ÿ•– seven oโ€™clock +1F562 ; fully-qualified # ๐Ÿ•ข seven-thirty +1F557 ; fully-qualified # ๐Ÿ•— eight oโ€™clock +1F563 ; fully-qualified # ๐Ÿ•ฃ eight-thirty +1F558 ; fully-qualified # ๐Ÿ•˜ nine oโ€™clock +1F564 ; fully-qualified # ๐Ÿ•ค nine-thirty +1F559 ; fully-qualified # ๐Ÿ•™ ten oโ€™clock +1F565 ; fully-qualified # ๐Ÿ•ฅ ten-thirty +1F55A ; fully-qualified # ๐Ÿ•š eleven oโ€™clock +1F566 ; fully-qualified # ๐Ÿ•ฆ eleven-thirty + +# subgroup: sky & weather +1F311 ; fully-qualified # ๐ŸŒ‘ new moon +1F312 ; fully-qualified # ๐ŸŒ’ waxing crescent moon +1F313 ; fully-qualified # ๐ŸŒ“ first quarter moon +1F314 ; fully-qualified # ๐ŸŒ” waxing gibbous moon +1F315 ; fully-qualified # ๐ŸŒ• full moon +1F316 ; fully-qualified # ๐ŸŒ– waning gibbous moon +1F317 ; fully-qualified # ๐ŸŒ— last quarter moon +1F318 ; fully-qualified # ๐ŸŒ˜ waning crescent moon +1F319 ; fully-qualified # ๐ŸŒ™ crescent moon +1F31A ; fully-qualified # ๐ŸŒš new moon face +1F31B ; fully-qualified # ๐ŸŒ› first quarter moon face +1F31C ; fully-qualified # ๐ŸŒœ last quarter moon face +1F321 FE0F ; fully-qualified # ๐ŸŒก๏ธ thermometer +1F321 ; non-fully-qualified # ๐ŸŒก thermometer +2600 FE0F ; fully-qualified # โ˜€๏ธ sun +2600 ; non-fully-qualified # โ˜€ sun +1F31D ; fully-qualified # ๐ŸŒ full moon face +1F31E ; fully-qualified # ๐ŸŒž sun with face +2B50 ; fully-qualified # โญ star +1F31F ; fully-qualified # ๐ŸŒŸ glowing star +1F320 ; fully-qualified # ๐ŸŒ  shooting star +2601 FE0F ; fully-qualified # โ˜๏ธ cloud +2601 ; non-fully-qualified # โ˜ cloud +26C5 ; fully-qualified # โ›… sun behind cloud +26C8 FE0F ; fully-qualified # โ›ˆ๏ธ cloud with lightning and rain +26C8 ; non-fully-qualified # โ›ˆ cloud with lightning and rain +1F324 FE0F ; fully-qualified # ๐ŸŒค๏ธ sun behind small cloud +1F324 ; non-fully-qualified # ๐ŸŒค sun behind small cloud +1F325 FE0F ; fully-qualified # ๐ŸŒฅ๏ธ sun behind large cloud +1F325 ; non-fully-qualified # ๐ŸŒฅ sun behind large cloud +1F326 FE0F ; fully-qualified # ๐ŸŒฆ๏ธ sun behind rain cloud +1F326 ; non-fully-qualified # ๐ŸŒฆ sun behind rain cloud +1F327 FE0F ; fully-qualified # ๐ŸŒง๏ธ cloud with rain +1F327 ; non-fully-qualified # ๐ŸŒง cloud with rain +1F328 FE0F ; fully-qualified # ๐ŸŒจ๏ธ cloud with snow +1F328 ; non-fully-qualified # ๐ŸŒจ cloud with snow +1F329 FE0F ; fully-qualified # ๐ŸŒฉ๏ธ cloud with lightning +1F329 ; non-fully-qualified # ๐ŸŒฉ cloud with lightning +1F32A FE0F ; fully-qualified # ๐ŸŒช๏ธ tornado +1F32A ; non-fully-qualified # ๐ŸŒช tornado +1F32B FE0F ; fully-qualified # ๐ŸŒซ๏ธ fog +1F32B ; non-fully-qualified # ๐ŸŒซ fog +1F32C FE0F ; fully-qualified # ๐ŸŒฌ๏ธ wind face +1F32C ; non-fully-qualified # ๐ŸŒฌ wind face +1F300 ; fully-qualified # ๐ŸŒ€ cyclone +1F308 ; fully-qualified # ๐ŸŒˆ rainbow +1F302 ; fully-qualified # ๐ŸŒ‚ closed umbrella +2602 FE0F ; fully-qualified # โ˜‚๏ธ umbrella +2602 ; non-fully-qualified # โ˜‚ umbrella +2614 ; fully-qualified # โ˜” umbrella with rain drops +26F1 FE0F ; fully-qualified # โ›ฑ๏ธ umbrella on ground +26F1 ; non-fully-qualified # โ›ฑ umbrella on ground +26A1 ; fully-qualified # โšก high voltage +2744 FE0F ; fully-qualified # โ„๏ธ snowflake +2744 ; non-fully-qualified # โ„ snowflake +2603 FE0F ; fully-qualified # โ˜ƒ๏ธ snowman +2603 ; non-fully-qualified # โ˜ƒ snowman +26C4 ; fully-qualified # โ›„ snowman without snow +2604 FE0F ; fully-qualified # โ˜„๏ธ comet +2604 ; non-fully-qualified # โ˜„ comet +1F525 ; fully-qualified # ๐Ÿ”ฅ fire +1F4A7 ; fully-qualified # ๐Ÿ’ง droplet +1F30A ; fully-qualified # ๐ŸŒŠ water wave + +# Travel & Places subtotal: 249 +# Travel & Places subtotal: 249 w/o modifiers + +# group: Activities + +# subgroup: event +1F383 ; fully-qualified # ๐ŸŽƒ jack-o-lantern +1F384 ; fully-qualified # ๐ŸŽ„ Christmas tree +1F386 ; fully-qualified # ๐ŸŽ† fireworks +1F387 ; fully-qualified # ๐ŸŽ‡ sparkler +1F9E8 ; fully-qualified # ๐Ÿงจ firecracker +2728 ; fully-qualified # โœจ sparkles +1F388 ; fully-qualified # ๐ŸŽˆ balloon +1F389 ; fully-qualified # ๐ŸŽ‰ party popper +1F38A ; fully-qualified # ๐ŸŽŠ confetti ball +1F38B ; fully-qualified # ๐ŸŽ‹ tanabata tree +1F38D ; fully-qualified # ๐ŸŽ pine decoration +1F38E ; fully-qualified # ๐ŸŽŽ Japanese dolls +1F38F ; fully-qualified # ๐ŸŽ carp streamer +1F390 ; fully-qualified # ๐ŸŽ wind chime +1F391 ; fully-qualified # ๐ŸŽ‘ moon viewing ceremony +1F9E7 ; fully-qualified # ๐Ÿงง red envelope +1F380 ; fully-qualified # ๐ŸŽ€ ribbon +1F381 ; fully-qualified # ๐ŸŽ wrapped gift +1F397 FE0F ; fully-qualified # ๐ŸŽ—๏ธ reminder ribbon +1F397 ; non-fully-qualified # ๐ŸŽ— reminder ribbon +1F39F FE0F ; fully-qualified # ๐ŸŽŸ๏ธ admission tickets +1F39F ; non-fully-qualified # ๐ŸŽŸ admission tickets +1F3AB ; fully-qualified # ๐ŸŽซ ticket + +# subgroup: award-medal +1F396 FE0F ; fully-qualified # ๐ŸŽ–๏ธ military medal +1F396 ; non-fully-qualified # ๐ŸŽ– military medal +1F3C6 ; fully-qualified # ๐Ÿ† trophy +1F3C5 ; fully-qualified # ๐Ÿ… sports medal +1F947 ; fully-qualified # ๐Ÿฅ‡ 1st place medal +1F948 ; fully-qualified # ๐Ÿฅˆ 2nd place medal +1F949 ; fully-qualified # ๐Ÿฅ‰ 3rd place medal + +# subgroup: sport +26BD ; fully-qualified # โšฝ soccer ball +26BE ; fully-qualified # โšพ baseball +1F94E ; fully-qualified # ๐ŸฅŽ softball +1F3C0 ; fully-qualified # ๐Ÿ€ basketball +1F3D0 ; fully-qualified # ๐Ÿ volleyball +1F3C8 ; fully-qualified # ๐Ÿˆ american football +1F3C9 ; fully-qualified # ๐Ÿ‰ rugby football +1F3BE ; fully-qualified # ๐ŸŽพ tennis +1F94F ; fully-qualified # ๐Ÿฅ flying disc +1F3B3 ; fully-qualified # ๐ŸŽณ bowling +1F3CF ; fully-qualified # ๐Ÿ cricket game +1F3D1 ; fully-qualified # ๐Ÿ‘ field hockey +1F3D2 ; fully-qualified # ๐Ÿ’ ice hockey +1F94D ; fully-qualified # ๐Ÿฅ lacrosse +1F3D3 ; fully-qualified # ๐Ÿ“ ping pong +1F3F8 ; fully-qualified # ๐Ÿธ badminton +1F94A ; fully-qualified # ๐ŸฅŠ boxing glove +1F94B ; fully-qualified # ๐Ÿฅ‹ martial arts uniform +1F945 ; fully-qualified # ๐Ÿฅ… goal net +26F3 ; fully-qualified # โ›ณ flag in hole +26F8 FE0F ; fully-qualified # โ›ธ๏ธ ice skate +26F8 ; non-fully-qualified # โ›ธ ice skate +1F3A3 ; fully-qualified # ๐ŸŽฃ fishing pole +1F3BD ; fully-qualified # ๐ŸŽฝ running shirt +1F3BF ; fully-qualified # ๐ŸŽฟ skis +1F6F7 ; fully-qualified # ๐Ÿ›ท sled +1F94C ; fully-qualified # ๐ŸฅŒ curling stone + +# subgroup: game +1F3AF ; fully-qualified # ๐ŸŽฏ direct hit +1F3B1 ; fully-qualified # ๐ŸŽฑ pool 8 ball +1F52E ; fully-qualified # ๐Ÿ”ฎ crystal ball +1F9FF ; fully-qualified # ๐Ÿงฟ nazar amulet +1F3AE ; fully-qualified # ๐ŸŽฎ video game +1F579 FE0F ; fully-qualified # ๐Ÿ•น๏ธ joystick +1F579 ; non-fully-qualified # ๐Ÿ•น joystick +1F3B0 ; fully-qualified # ๐ŸŽฐ slot machine +1F3B2 ; fully-qualified # ๐ŸŽฒ game die +1F9E9 ; fully-qualified # ๐Ÿงฉ jigsaw +1F9F8 ; fully-qualified # ๐Ÿงธ teddy bear +2660 FE0F ; fully-qualified # โ™ ๏ธ spade suit +2660 ; non-fully-qualified # โ™  spade suit +2665 FE0F ; fully-qualified # โ™ฅ๏ธ heart suit +2665 ; non-fully-qualified # โ™ฅ heart suit +2666 FE0F ; fully-qualified # โ™ฆ๏ธ diamond suit +2666 ; non-fully-qualified # โ™ฆ diamond suit +2663 FE0F ; fully-qualified # โ™ฃ๏ธ club suit +2663 ; non-fully-qualified # โ™ฃ club suit +265F FE0F ; fully-qualified # โ™Ÿ๏ธ chess pawn +265F ; non-fully-qualified # โ™Ÿ chess pawn +1F0CF ; fully-qualified # ๐Ÿƒ joker +1F004 ; fully-qualified # ๐Ÿ€„ mahjong red dragon +1F3B4 ; fully-qualified # ๐ŸŽด flower playing cards + +# subgroup: arts & crafts +1F3AD ; fully-qualified # ๐ŸŽญ performing arts +1F5BC FE0F ; fully-qualified # ๐Ÿ–ผ๏ธ framed picture +1F5BC ; non-fully-qualified # ๐Ÿ–ผ framed picture +1F3A8 ; fully-qualified # ๐ŸŽจ artist palette +1F9F5 ; fully-qualified # ๐Ÿงต thread +1F9F6 ; fully-qualified # ๐Ÿงถ yarn + +# Activities subtotal: 87 +# Activities subtotal: 87 w/o modifiers + +# group: Objects + +# subgroup: sound +1F507 ; fully-qualified # ๐Ÿ”‡ muted speaker +1F508 ; fully-qualified # ๐Ÿ”ˆ speaker low volume +1F509 ; fully-qualified # ๐Ÿ”‰ speaker medium volume +1F50A ; fully-qualified # ๐Ÿ”Š speaker high volume +1F4E2 ; fully-qualified # ๐Ÿ“ข loudspeaker +1F4E3 ; fully-qualified # ๐Ÿ“ฃ megaphone +1F4EF ; fully-qualified # ๐Ÿ“ฏ postal horn +1F514 ; fully-qualified # ๐Ÿ”” bell +1F515 ; fully-qualified # ๐Ÿ”• bell with slash + +# subgroup: music +1F3BC ; fully-qualified # ๐ŸŽผ musical score +1F3B5 ; fully-qualified # ๐ŸŽต musical note +1F3B6 ; fully-qualified # ๐ŸŽถ musical notes +1F399 FE0F ; fully-qualified # ๐ŸŽ™๏ธ studio microphone +1F399 ; non-fully-qualified # ๐ŸŽ™ studio microphone +1F39A FE0F ; fully-qualified # ๐ŸŽš๏ธ level slider +1F39A ; non-fully-qualified # ๐ŸŽš level slider +1F39B FE0F ; fully-qualified # ๐ŸŽ›๏ธ control knobs +1F39B ; non-fully-qualified # ๐ŸŽ› control knobs +1F3A4 ; fully-qualified # ๐ŸŽค microphone +1F3A7 ; fully-qualified # ๐ŸŽง headphone +1F4FB ; fully-qualified # ๐Ÿ“ป radio + +# subgroup: musical-instrument +1F3B7 ; fully-qualified # ๐ŸŽท saxophone +1F3B8 ; fully-qualified # ๐ŸŽธ guitar +1F3B9 ; fully-qualified # ๐ŸŽน musical keyboard +1F3BA ; fully-qualified # ๐ŸŽบ trumpet +1F3BB ; fully-qualified # ๐ŸŽป violin +1F941 ; fully-qualified # ๐Ÿฅ drum + +# subgroup: phone +1F4F1 ; fully-qualified # ๐Ÿ“ฑ mobile phone +1F4F2 ; fully-qualified # ๐Ÿ“ฒ mobile phone with arrow +260E FE0F ; fully-qualified # โ˜Ž๏ธ telephone +260E ; non-fully-qualified # โ˜Ž telephone +1F4DE ; fully-qualified # ๐Ÿ“ž telephone receiver +1F4DF ; fully-qualified # ๐Ÿ“Ÿ pager +1F4E0 ; fully-qualified # ๐Ÿ“  fax machine + +# subgroup: computer +1F50B ; fully-qualified # ๐Ÿ”‹ battery +1F50C ; fully-qualified # ๐Ÿ”Œ electric plug +1F4BB ; fully-qualified # ๐Ÿ’ป laptop computer +1F5A5 FE0F ; fully-qualified # ๐Ÿ–ฅ๏ธ desktop computer +1F5A5 ; non-fully-qualified # ๐Ÿ–ฅ desktop computer +1F5A8 FE0F ; fully-qualified # ๐Ÿ–จ๏ธ printer +1F5A8 ; non-fully-qualified # ๐Ÿ–จ printer +2328 FE0F ; fully-qualified # โŒจ๏ธ keyboard +2328 ; non-fully-qualified # โŒจ keyboard +1F5B1 FE0F ; fully-qualified # ๐Ÿ–ฑ๏ธ computer mouse +1F5B1 ; non-fully-qualified # ๐Ÿ–ฑ computer mouse +1F5B2 FE0F ; fully-qualified # ๐Ÿ–ฒ๏ธ trackball +1F5B2 ; non-fully-qualified # ๐Ÿ–ฒ trackball +1F4BD ; fully-qualified # ๐Ÿ’ฝ computer disk +1F4BE ; fully-qualified # ๐Ÿ’พ floppy disk +1F4BF ; fully-qualified # ๐Ÿ’ฟ optical disk +1F4C0 ; fully-qualified # ๐Ÿ“€ dvd +1F9EE ; fully-qualified # ๐Ÿงฎ abacus + +# subgroup: light & video +1F3A5 ; fully-qualified # ๐ŸŽฅ movie camera +1F39E FE0F ; fully-qualified # ๐ŸŽž๏ธ film frames +1F39E ; non-fully-qualified # ๐ŸŽž film frames +1F4FD FE0F ; fully-qualified # ๐Ÿ“ฝ๏ธ film projector +1F4FD ; non-fully-qualified # ๐Ÿ“ฝ film projector +1F3AC ; fully-qualified # ๐ŸŽฌ clapper board +1F4FA ; fully-qualified # ๐Ÿ“บ television +1F4F7 ; fully-qualified # ๐Ÿ“ท camera +1F4F8 ; fully-qualified # ๐Ÿ“ธ camera with flash +1F4F9 ; fully-qualified # ๐Ÿ“น video camera +1F4FC ; fully-qualified # ๐Ÿ“ผ videocassette +1F50D ; fully-qualified # ๐Ÿ” magnifying glass tilted left +1F50E ; fully-qualified # ๐Ÿ”Ž magnifying glass tilted right +1F56F FE0F ; fully-qualified # ๐Ÿ•ฏ๏ธ candle +1F56F ; non-fully-qualified # ๐Ÿ•ฏ candle +1F4A1 ; fully-qualified # ๐Ÿ’ก light bulb +1F526 ; fully-qualified # ๐Ÿ”ฆ flashlight +1F3EE ; fully-qualified # ๐Ÿฎ red paper lantern + +# subgroup: book-paper +1F4D4 ; fully-qualified # ๐Ÿ“” notebook with decorative cover +1F4D5 ; fully-qualified # ๐Ÿ“• closed book +1F4D6 ; fully-qualified # ๐Ÿ“– open book +1F4D7 ; fully-qualified # ๐Ÿ“— green book +1F4D8 ; fully-qualified # ๐Ÿ“˜ blue book +1F4D9 ; fully-qualified # ๐Ÿ“™ orange book +1F4DA ; fully-qualified # ๐Ÿ“š books +1F4D3 ; fully-qualified # ๐Ÿ““ notebook +1F4D2 ; fully-qualified # ๐Ÿ“’ ledger +1F4C3 ; fully-qualified # ๐Ÿ“ƒ page with curl +1F4DC ; fully-qualified # ๐Ÿ“œ scroll +1F4C4 ; fully-qualified # ๐Ÿ“„ page facing up +1F4F0 ; fully-qualified # ๐Ÿ“ฐ newspaper +1F5DE FE0F ; fully-qualified # ๐Ÿ—ž๏ธ rolled-up newspaper +1F5DE ; non-fully-qualified # ๐Ÿ—ž rolled-up newspaper +1F4D1 ; fully-qualified # ๐Ÿ“‘ bookmark tabs +1F516 ; fully-qualified # ๐Ÿ”– bookmark +1F3F7 FE0F ; fully-qualified # ๐Ÿท๏ธ label +1F3F7 ; non-fully-qualified # ๐Ÿท label + +# subgroup: money +1F4B0 ; fully-qualified # ๐Ÿ’ฐ money bag +1F4B4 ; fully-qualified # ๐Ÿ’ด yen banknote +1F4B5 ; fully-qualified # ๐Ÿ’ต dollar banknote +1F4B6 ; fully-qualified # ๐Ÿ’ถ euro banknote +1F4B7 ; fully-qualified # ๐Ÿ’ท pound banknote +1F4B8 ; fully-qualified # ๐Ÿ’ธ money with wings +1F4B3 ; fully-qualified # ๐Ÿ’ณ credit card +1F9FE ; fully-qualified # ๐Ÿงพ receipt +1F4B9 ; fully-qualified # ๐Ÿ’น chart increasing with yen +1F4B1 ; fully-qualified # ๐Ÿ’ฑ currency exchange +1F4B2 ; fully-qualified # ๐Ÿ’ฒ heavy dollar sign + +# subgroup: mail +2709 FE0F ; fully-qualified # โœ‰๏ธ envelope +2709 ; non-fully-qualified # โœ‰ envelope +1F4E7 ; fully-qualified # ๐Ÿ“ง e-mail +1F4E8 ; fully-qualified # ๐Ÿ“จ incoming envelope +1F4E9 ; fully-qualified # ๐Ÿ“ฉ envelope with arrow +1F4E4 ; fully-qualified # ๐Ÿ“ค outbox tray +1F4E5 ; fully-qualified # ๐Ÿ“ฅ inbox tray +1F4E6 ; fully-qualified # ๐Ÿ“ฆ package +1F4EB ; fully-qualified # ๐Ÿ“ซ closed mailbox with raised flag +1F4EA ; fully-qualified # ๐Ÿ“ช closed mailbox with lowered flag +1F4EC ; fully-qualified # ๐Ÿ“ฌ open mailbox with raised flag +1F4ED ; fully-qualified # ๐Ÿ“ญ open mailbox with lowered flag +1F4EE ; fully-qualified # ๐Ÿ“ฎ postbox +1F5F3 FE0F ; fully-qualified # ๐Ÿ—ณ๏ธ ballot box with ballot +1F5F3 ; non-fully-qualified # ๐Ÿ—ณ ballot box with ballot + +# subgroup: writing +270F FE0F ; fully-qualified # โœ๏ธ pencil +270F ; non-fully-qualified # โœ pencil +2712 FE0F ; fully-qualified # โœ’๏ธ black nib +2712 ; non-fully-qualified # โœ’ black nib +1F58B FE0F ; fully-qualified # ๐Ÿ–‹๏ธ fountain pen +1F58B ; non-fully-qualified # ๐Ÿ–‹ fountain pen +1F58A FE0F ; fully-qualified # ๐Ÿ–Š๏ธ pen +1F58A ; non-fully-qualified # ๐Ÿ–Š pen +1F58C FE0F ; fully-qualified # ๐Ÿ–Œ๏ธ paintbrush +1F58C ; non-fully-qualified # ๐Ÿ–Œ paintbrush +1F58D FE0F ; fully-qualified # ๐Ÿ–๏ธ crayon +1F58D ; non-fully-qualified # ๐Ÿ– crayon +1F4DD ; fully-qualified # ๐Ÿ“ memo + +# subgroup: office +1F4BC ; fully-qualified # ๐Ÿ’ผ briefcase +1F4C1 ; fully-qualified # ๐Ÿ“ file folder +1F4C2 ; fully-qualified # ๐Ÿ“‚ open file folder +1F5C2 FE0F ; fully-qualified # ๐Ÿ—‚๏ธ card index dividers +1F5C2 ; non-fully-qualified # ๐Ÿ—‚ card index dividers +1F4C5 ; fully-qualified # ๐Ÿ“… calendar +1F4C6 ; fully-qualified # ๐Ÿ“† tear-off calendar +1F5D2 FE0F ; fully-qualified # ๐Ÿ—’๏ธ spiral notepad +1F5D2 ; non-fully-qualified # ๐Ÿ—’ spiral notepad +1F5D3 FE0F ; fully-qualified # ๐Ÿ—“๏ธ spiral calendar +1F5D3 ; non-fully-qualified # ๐Ÿ—“ spiral calendar +1F4C7 ; fully-qualified # ๐Ÿ“‡ card index +1F4C8 ; fully-qualified # ๐Ÿ“ˆ chart increasing +1F4C9 ; fully-qualified # ๐Ÿ“‰ chart decreasing +1F4CA ; fully-qualified # ๐Ÿ“Š bar chart +1F4CB ; fully-qualified # ๐Ÿ“‹ clipboard +1F4CC ; fully-qualified # ๐Ÿ“Œ pushpin +1F4CD ; fully-qualified # ๐Ÿ“ round pushpin +1F4CE ; fully-qualified # ๐Ÿ“Ž paperclip +1F587 FE0F ; fully-qualified # ๐Ÿ–‡๏ธ linked paperclips +1F587 ; non-fully-qualified # ๐Ÿ–‡ linked paperclips +1F4CF ; fully-qualified # ๐Ÿ“ straight ruler +1F4D0 ; fully-qualified # ๐Ÿ“ triangular ruler +2702 FE0F ; fully-qualified # โœ‚๏ธ scissors +2702 ; non-fully-qualified # โœ‚ scissors +1F5C3 FE0F ; fully-qualified # ๐Ÿ—ƒ๏ธ card file box +1F5C3 ; non-fully-qualified # ๐Ÿ—ƒ card file box +1F5C4 FE0F ; fully-qualified # ๐Ÿ—„๏ธ file cabinet +1F5C4 ; non-fully-qualified # ๐Ÿ—„ file cabinet +1F5D1 FE0F ; fully-qualified # ๐Ÿ—‘๏ธ wastebasket +1F5D1 ; non-fully-qualified # ๐Ÿ—‘ wastebasket + +# subgroup: lock +1F512 ; fully-qualified # ๐Ÿ”’ locked +1F513 ; fully-qualified # ๐Ÿ”“ unlocked +1F50F ; fully-qualified # ๐Ÿ” locked with pen +1F510 ; fully-qualified # ๐Ÿ” locked with key +1F511 ; fully-qualified # ๐Ÿ”‘ key +1F5DD FE0F ; fully-qualified # ๐Ÿ—๏ธ old key +1F5DD ; non-fully-qualified # ๐Ÿ— old key + +# subgroup: tool +1F528 ; fully-qualified # ๐Ÿ”จ hammer +26CF FE0F ; fully-qualified # โ›๏ธ pick +26CF ; non-fully-qualified # โ› pick +2692 FE0F ; fully-qualified # โš’๏ธ hammer and pick +2692 ; non-fully-qualified # โš’ hammer and pick +1F6E0 FE0F ; fully-qualified # ๐Ÿ› ๏ธ hammer and wrench +1F6E0 ; non-fully-qualified # ๐Ÿ›  hammer and wrench +1F5E1 FE0F ; fully-qualified # ๐Ÿ—ก๏ธ dagger +1F5E1 ; non-fully-qualified # ๐Ÿ—ก dagger +2694 FE0F ; fully-qualified # โš”๏ธ crossed swords +2694 ; non-fully-qualified # โš” crossed swords +1F52B ; fully-qualified # ๐Ÿ”ซ pistol +1F3F9 ; fully-qualified # ๐Ÿน bow and arrow +1F6E1 FE0F ; fully-qualified # ๐Ÿ›ก๏ธ shield +1F6E1 ; non-fully-qualified # ๐Ÿ›ก shield +1F527 ; fully-qualified # ๐Ÿ”ง wrench +1F529 ; fully-qualified # ๐Ÿ”ฉ nut and bolt +2699 FE0F ; fully-qualified # โš™๏ธ gear +2699 ; non-fully-qualified # โš™ gear +1F5DC FE0F ; fully-qualified # ๐Ÿ—œ๏ธ clamp +1F5DC ; non-fully-qualified # ๐Ÿ—œ clamp +2696 FE0F ; fully-qualified # โš–๏ธ balance scale +2696 ; non-fully-qualified # โš– balance scale +1F517 ; fully-qualified # ๐Ÿ”— link +26D3 FE0F ; fully-qualified # โ›“๏ธ chains +26D3 ; non-fully-qualified # โ›“ chains +1F9F0 ; fully-qualified # ๐Ÿงฐ toolbox +1F9F2 ; fully-qualified # ๐Ÿงฒ magnet + +# subgroup: science +2697 FE0F ; fully-qualified # โš—๏ธ alembic +2697 ; non-fully-qualified # โš— alembic +1F9EA ; fully-qualified # ๐Ÿงช test tube +1F9EB ; fully-qualified # ๐Ÿงซ petri dish +1F9EC ; fully-qualified # ๐Ÿงฌ dna +1F52C ; fully-qualified # ๐Ÿ”ฌ microscope +1F52D ; fully-qualified # ๐Ÿ”ญ telescope +1F4E1 ; fully-qualified # ๐Ÿ“ก satellite antenna + +# subgroup: medical +1F489 ; fully-qualified # ๐Ÿ’‰ syringe +1F48A ; fully-qualified # ๐Ÿ’Š pill + +# subgroup: household +1F6AA ; fully-qualified # ๐Ÿšช door +1F6CF FE0F ; fully-qualified # ๐Ÿ›๏ธ bed +1F6CF ; non-fully-qualified # ๐Ÿ› bed +1F6CB FE0F ; fully-qualified # ๐Ÿ›‹๏ธ couch and lamp +1F6CB ; non-fully-qualified # ๐Ÿ›‹ couch and lamp +1F6BD ; fully-qualified # ๐Ÿšฝ toilet +1F6BF ; fully-qualified # ๐Ÿšฟ shower +1F6C1 ; fully-qualified # ๐Ÿ› bathtub +1F9F4 ; fully-qualified # ๐Ÿงด lotion bottle +1F9F7 ; fully-qualified # ๐Ÿงท safety pin +1F9F9 ; fully-qualified # ๐Ÿงน broom +1F9FA ; fully-qualified # ๐Ÿงบ basket +1F9FB ; fully-qualified # ๐Ÿงป roll of paper +1F9FC ; fully-qualified # ๐Ÿงผ soap +1F9FD ; fully-qualified # ๐Ÿงฝ sponge +1F9EF ; fully-qualified # ๐Ÿงฏ fire extinguisher +1F6D2 ; fully-qualified # ๐Ÿ›’ shopping cart + +# subgroup: other-object +1F6AC ; fully-qualified # ๐Ÿšฌ cigarette +26B0 FE0F ; fully-qualified # โšฐ๏ธ coffin +26B0 ; non-fully-qualified # โšฐ coffin +26B1 FE0F ; fully-qualified # โšฑ๏ธ funeral urn +26B1 ; non-fully-qualified # โšฑ funeral urn +1F5FF ; fully-qualified # ๐Ÿ—ฟ moai + +# Objects subtotal: 227 +# Objects subtotal: 227 w/o modifiers + +# group: Symbols + +# subgroup: transport-sign +1F3E7 ; fully-qualified # ๐Ÿง ATM sign +1F6AE ; fully-qualified # ๐Ÿšฎ litter in bin sign +1F6B0 ; fully-qualified # ๐Ÿšฐ potable water +267F ; fully-qualified # โ™ฟ wheelchair symbol +1F6B9 ; fully-qualified # ๐Ÿšน menโ€™s room +1F6BA ; fully-qualified # ๐Ÿšบ womenโ€™s room +1F6BB ; fully-qualified # ๐Ÿšป restroom +1F6BC ; fully-qualified # ๐Ÿšผ baby symbol +1F6BE ; fully-qualified # ๐Ÿšพ water closet +1F6C2 ; fully-qualified # ๐Ÿ›‚ passport control +1F6C3 ; fully-qualified # ๐Ÿ›ƒ customs +1F6C4 ; fully-qualified # ๐Ÿ›„ baggage claim +1F6C5 ; fully-qualified # ๐Ÿ›… left luggage + +# subgroup: warning +26A0 FE0F ; fully-qualified # โš ๏ธ warning +26A0 ; non-fully-qualified # โš  warning +1F6B8 ; fully-qualified # ๐Ÿšธ children crossing +26D4 ; fully-qualified # โ›” no entry +1F6AB ; fully-qualified # ๐Ÿšซ prohibited +1F6B3 ; fully-qualified # ๐Ÿšณ no bicycles +1F6AD ; fully-qualified # ๐Ÿšญ no smoking +1F6AF ; fully-qualified # ๐Ÿšฏ no littering +1F6B1 ; fully-qualified # ๐Ÿšฑ non-potable water +1F6B7 ; fully-qualified # ๐Ÿšท no pedestrians +1F4F5 ; fully-qualified # ๐Ÿ“ต no mobile phones +1F51E ; fully-qualified # ๐Ÿ”ž no one under eighteen +2622 FE0F ; fully-qualified # โ˜ข๏ธ radioactive +2622 ; non-fully-qualified # โ˜ข radioactive +2623 FE0F ; fully-qualified # โ˜ฃ๏ธ biohazard +2623 ; non-fully-qualified # โ˜ฃ biohazard + +# subgroup: arrow +2B06 FE0F ; fully-qualified # โฌ†๏ธ up arrow +2B06 ; non-fully-qualified # โฌ† up arrow +2197 FE0F ; fully-qualified # โ†—๏ธ up-right arrow +2197 ; non-fully-qualified # โ†— up-right arrow +27A1 FE0F ; fully-qualified # โžก๏ธ right arrow +27A1 ; non-fully-qualified # โžก right arrow +2198 FE0F ; fully-qualified # โ†˜๏ธ down-right arrow +2198 ; non-fully-qualified # โ†˜ down-right arrow +2B07 FE0F ; fully-qualified # โฌ‡๏ธ down arrow +2B07 ; non-fully-qualified # โฌ‡ down arrow +2199 FE0F ; fully-qualified # โ†™๏ธ down-left arrow +2199 ; non-fully-qualified # โ†™ down-left arrow +2B05 FE0F ; fully-qualified # โฌ…๏ธ left arrow +2B05 ; non-fully-qualified # โฌ… left arrow +2196 FE0F ; fully-qualified # โ†–๏ธ up-left arrow +2196 ; non-fully-qualified # โ†– up-left arrow +2195 FE0F ; fully-qualified # โ†•๏ธ up-down arrow +2195 ; non-fully-qualified # โ†• up-down arrow +2194 FE0F ; fully-qualified # โ†”๏ธ left-right arrow +2194 ; non-fully-qualified # โ†” left-right arrow +21A9 FE0F ; fully-qualified # โ†ฉ๏ธ right arrow curving left +21A9 ; non-fully-qualified # โ†ฉ right arrow curving left +21AA FE0F ; fully-qualified # โ†ช๏ธ left arrow curving right +21AA ; non-fully-qualified # โ†ช left arrow curving right +2934 FE0F ; fully-qualified # โคด๏ธ right arrow curving up +2934 ; non-fully-qualified # โคด right arrow curving up +2935 FE0F ; fully-qualified # โคต๏ธ right arrow curving down +2935 ; non-fully-qualified # โคต right arrow curving down +1F503 ; fully-qualified # ๐Ÿ”ƒ clockwise vertical arrows +1F504 ; fully-qualified # ๐Ÿ”„ counterclockwise arrows button +1F519 ; fully-qualified # ๐Ÿ”™ BACK arrow +1F51A ; fully-qualified # ๐Ÿ”š END arrow +1F51B ; fully-qualified # ๐Ÿ”› ON! arrow +1F51C ; fully-qualified # ๐Ÿ”œ SOON arrow +1F51D ; fully-qualified # ๐Ÿ” TOP arrow + +# subgroup: religion +1F6D0 ; fully-qualified # ๐Ÿ› place of worship +269B FE0F ; fully-qualified # โš›๏ธ atom symbol +269B ; non-fully-qualified # โš› atom symbol +1F549 FE0F ; fully-qualified # ๐Ÿ•‰๏ธ om +1F549 ; non-fully-qualified # ๐Ÿ•‰ om +2721 FE0F ; fully-qualified # โœก๏ธ star of David +2721 ; non-fully-qualified # โœก star of David +2638 FE0F ; fully-qualified # โ˜ธ๏ธ wheel of dharma +2638 ; non-fully-qualified # โ˜ธ wheel of dharma +262F FE0F ; fully-qualified # โ˜ฏ๏ธ yin yang +262F ; non-fully-qualified # โ˜ฏ yin yang +271D FE0F ; fully-qualified # โœ๏ธ latin cross +271D ; non-fully-qualified # โœ latin cross +2626 FE0F ; fully-qualified # โ˜ฆ๏ธ orthodox cross +2626 ; non-fully-qualified # โ˜ฆ orthodox cross +262A FE0F ; fully-qualified # โ˜ช๏ธ star and crescent +262A ; non-fully-qualified # โ˜ช star and crescent +262E FE0F ; fully-qualified # โ˜ฎ๏ธ peace symbol +262E ; non-fully-qualified # โ˜ฎ peace symbol +1F54E ; fully-qualified # ๐Ÿ•Ž menorah +1F52F ; fully-qualified # ๐Ÿ”ฏ dotted six-pointed star + +# subgroup: zodiac +2648 ; fully-qualified # โ™ˆ Aries +2649 ; fully-qualified # โ™‰ Taurus +264A ; fully-qualified # โ™Š Gemini +264B ; fully-qualified # โ™‹ Cancer +264C ; fully-qualified # โ™Œ Leo +264D ; fully-qualified # โ™ Virgo +264E ; fully-qualified # โ™Ž Libra +264F ; fully-qualified # โ™ Scorpio +2650 ; fully-qualified # โ™ Sagittarius +2651 ; fully-qualified # โ™‘ Capricorn +2652 ; fully-qualified # โ™’ Aquarius +2653 ; fully-qualified # โ™“ Pisces +26CE ; fully-qualified # โ›Ž Ophiuchus + +# subgroup: av-symbol +1F500 ; fully-qualified # ๐Ÿ”€ shuffle tracks button +1F501 ; fully-qualified # ๐Ÿ” repeat button +1F502 ; fully-qualified # ๐Ÿ”‚ repeat single button +25B6 FE0F ; fully-qualified # โ–ถ๏ธ play button +25B6 ; non-fully-qualified # โ–ถ play button +23E9 ; fully-qualified # โฉ fast-forward button +23ED FE0F ; fully-qualified # โญ๏ธ next track button +23ED ; non-fully-qualified # โญ next track button +23EF FE0F ; fully-qualified # โฏ๏ธ play or pause button +23EF ; non-fully-qualified # โฏ play or pause button +25C0 FE0F ; fully-qualified # โ—€๏ธ reverse button +25C0 ; non-fully-qualified # โ—€ reverse button +23EA ; fully-qualified # โช fast reverse button +23EE FE0F ; fully-qualified # โฎ๏ธ last track button +23EE ; non-fully-qualified # โฎ last track button +1F53C ; fully-qualified # ๐Ÿ”ผ upwards button +23EB ; fully-qualified # โซ fast up button +1F53D ; fully-qualified # ๐Ÿ”ฝ downwards button +23EC ; fully-qualified # โฌ fast down button +23F8 FE0F ; fully-qualified # โธ๏ธ pause button +23F8 ; non-fully-qualified # โธ pause button +23F9 FE0F ; fully-qualified # โน๏ธ stop button +23F9 ; non-fully-qualified # โน stop button +23FA FE0F ; fully-qualified # โบ๏ธ record button +23FA ; non-fully-qualified # โบ record button +23CF FE0F ; fully-qualified # โ๏ธ eject button +23CF ; non-fully-qualified # โ eject button +1F3A6 ; fully-qualified # ๐ŸŽฆ cinema +1F505 ; fully-qualified # ๐Ÿ”… dim button +1F506 ; fully-qualified # ๐Ÿ”† bright button +1F4F6 ; fully-qualified # ๐Ÿ“ถ antenna bars +1F4F3 ; fully-qualified # ๐Ÿ“ณ vibration mode +1F4F4 ; fully-qualified # ๐Ÿ“ด mobile phone off + +# subgroup: other-symbol +2640 FE0F ; fully-qualified # โ™€๏ธ female sign +2640 ; non-fully-qualified # โ™€ female sign +2642 FE0F ; fully-qualified # โ™‚๏ธ male sign +2642 ; non-fully-qualified # โ™‚ male sign +2695 FE0F ; fully-qualified # โš•๏ธ medical symbol +2695 ; non-fully-qualified # โš• medical symbol +267E FE0F ; fully-qualified # โ™พ๏ธ infinity +267E ; non-fully-qualified # โ™พ infinity +267B FE0F ; fully-qualified # โ™ป๏ธ recycling symbol +267B ; non-fully-qualified # โ™ป recycling symbol +269C FE0F ; fully-qualified # โšœ๏ธ fleur-de-lis +269C ; non-fully-qualified # โšœ fleur-de-lis +1F531 ; fully-qualified # ๐Ÿ”ฑ trident emblem +1F4DB ; fully-qualified # ๐Ÿ“› name badge +1F530 ; fully-qualified # ๐Ÿ”ฐ Japanese symbol for beginner +2B55 ; fully-qualified # โญ• heavy large circle +2705 ; fully-qualified # โœ… white heavy check mark +2611 FE0F ; fully-qualified # โ˜‘๏ธ ballot box with check +2611 ; non-fully-qualified # โ˜‘ ballot box with check +2714 FE0F ; fully-qualified # โœ”๏ธ heavy check mark +2714 ; non-fully-qualified # โœ” heavy check mark +2716 FE0F ; fully-qualified # โœ–๏ธ heavy multiplication x +2716 ; non-fully-qualified # โœ– heavy multiplication x +274C ; fully-qualified # โŒ cross mark +274E ; fully-qualified # โŽ cross mark button +2795 ; fully-qualified # โž• heavy plus sign +2796 ; fully-qualified # โž– heavy minus sign +2797 ; fully-qualified # โž— heavy division sign +27B0 ; fully-qualified # โžฐ curly loop +27BF ; fully-qualified # โžฟ double curly loop +303D FE0F ; fully-qualified # ใ€ฝ๏ธ part alternation mark +303D ; non-fully-qualified # ใ€ฝ part alternation mark +2733 FE0F ; fully-qualified # โœณ๏ธ eight-spoked asterisk +2733 ; non-fully-qualified # โœณ eight-spoked asterisk +2734 FE0F ; fully-qualified # โœด๏ธ eight-pointed star +2734 ; non-fully-qualified # โœด eight-pointed star +2747 FE0F ; fully-qualified # โ‡๏ธ sparkle +2747 ; non-fully-qualified # โ‡ sparkle +203C FE0F ; fully-qualified # โ€ผ๏ธ double exclamation mark +203C ; non-fully-qualified # โ€ผ double exclamation mark +2049 FE0F ; fully-qualified # โ‰๏ธ exclamation question mark +2049 ; non-fully-qualified # โ‰ exclamation question mark +2753 ; fully-qualified # โ“ question mark +2754 ; fully-qualified # โ” white question mark +2755 ; fully-qualified # โ• white exclamation mark +2757 ; fully-qualified # โ— exclamation mark +3030 FE0F ; fully-qualified # ใ€ฐ๏ธ wavy dash +3030 ; non-fully-qualified # ใ€ฐ wavy dash +00A9 FE0F ; fully-qualified # ยฉ๏ธ copyright +00A9 ; non-fully-qualified # ยฉ copyright +00AE FE0F ; fully-qualified # ยฎ๏ธ registered +00AE ; non-fully-qualified # ยฎ registered +2122 FE0F ; fully-qualified # โ„ข๏ธ trade mark +2122 ; non-fully-qualified # โ„ข trade mark + +# subgroup: keycap +0023 FE0F 20E3 ; fully-qualified # #๏ธโƒฃ keycap: # +0023 20E3 ; non-fully-qualified # #โƒฃ keycap: # +002A FE0F 20E3 ; fully-qualified # *๏ธโƒฃ keycap: * +002A 20E3 ; non-fully-qualified # *โƒฃ keycap: * +0030 FE0F 20E3 ; fully-qualified # 0๏ธโƒฃ keycap: 0 +0030 20E3 ; non-fully-qualified # 0โƒฃ keycap: 0 +0031 FE0F 20E3 ; fully-qualified # 1๏ธโƒฃ keycap: 1 +0031 20E3 ; non-fully-qualified # 1โƒฃ keycap: 1 +0032 FE0F 20E3 ; fully-qualified # 2๏ธโƒฃ keycap: 2 +0032 20E3 ; non-fully-qualified # 2โƒฃ keycap: 2 +0033 FE0F 20E3 ; fully-qualified # 3๏ธโƒฃ keycap: 3 +0033 20E3 ; non-fully-qualified # 3โƒฃ keycap: 3 +0034 FE0F 20E3 ; fully-qualified # 4๏ธโƒฃ keycap: 4 +0034 20E3 ; non-fully-qualified # 4โƒฃ keycap: 4 +0035 FE0F 20E3 ; fully-qualified # 5๏ธโƒฃ keycap: 5 +0035 20E3 ; non-fully-qualified # 5โƒฃ keycap: 5 +0036 FE0F 20E3 ; fully-qualified # 6๏ธโƒฃ keycap: 6 +0036 20E3 ; non-fully-qualified # 6โƒฃ keycap: 6 +0037 FE0F 20E3 ; fully-qualified # 7๏ธโƒฃ keycap: 7 +0037 20E3 ; non-fully-qualified # 7โƒฃ keycap: 7 +0038 FE0F 20E3 ; fully-qualified # 8๏ธโƒฃ keycap: 8 +0038 20E3 ; non-fully-qualified # 8โƒฃ keycap: 8 +0039 FE0F 20E3 ; fully-qualified # 9๏ธโƒฃ keycap: 9 +0039 20E3 ; non-fully-qualified # 9โƒฃ keycap: 9 +1F51F ; fully-qualified # ๐Ÿ”Ÿ keycap: 10 + +# subgroup: alphanum +1F4AF ; fully-qualified # ๐Ÿ’ฏ hundred points +1F520 ; fully-qualified # ๐Ÿ”  input latin uppercase +1F521 ; fully-qualified # ๐Ÿ”ก input latin lowercase +1F522 ; fully-qualified # ๐Ÿ”ข input numbers +1F523 ; fully-qualified # ๐Ÿ”ฃ input symbols +1F524 ; fully-qualified # ๐Ÿ”ค input latin letters +1F170 FE0F ; fully-qualified # ๐Ÿ…ฐ๏ธ A button (blood type) +1F170 ; non-fully-qualified # ๐Ÿ…ฐ A button (blood type) +1F18E ; fully-qualified # ๐Ÿ†Ž AB button (blood type) +1F171 FE0F ; fully-qualified # ๐Ÿ…ฑ๏ธ B button (blood type) +1F171 ; non-fully-qualified # ๐Ÿ…ฑ B button (blood type) +1F191 ; fully-qualified # ๐Ÿ†‘ CL button +1F192 ; fully-qualified # ๐Ÿ†’ COOL button +1F193 ; fully-qualified # ๐Ÿ†“ FREE button +2139 FE0F ; fully-qualified # โ„น๏ธ information +2139 ; non-fully-qualified # โ„น information +1F194 ; fully-qualified # ๐Ÿ†” ID button +24C2 FE0F ; fully-qualified # โ“‚๏ธ circled M +24C2 ; non-fully-qualified # โ“‚ circled M +1F195 ; fully-qualified # ๐Ÿ†• NEW button +1F196 ; fully-qualified # ๐Ÿ†– NG button +1F17E FE0F ; fully-qualified # ๐Ÿ…พ๏ธ O button (blood type) +1F17E ; non-fully-qualified # ๐Ÿ…พ O button (blood type) +1F197 ; fully-qualified # ๐Ÿ†— OK button +1F17F FE0F ; fully-qualified # ๐Ÿ…ฟ๏ธ P button +1F17F ; non-fully-qualified # ๐Ÿ…ฟ P button +1F198 ; fully-qualified # ๐Ÿ†˜ SOS button +1F199 ; fully-qualified # ๐Ÿ†™ UP! button +1F19A ; fully-qualified # ๐Ÿ†š VS button +1F201 ; fully-qualified # ๐Ÿˆ Japanese โ€œhereโ€ button +1F202 FE0F ; fully-qualified # ๐Ÿˆ‚๏ธ Japanese โ€œservice chargeโ€ button +1F202 ; non-fully-qualified # ๐Ÿˆ‚ Japanese โ€œservice chargeโ€ button +1F237 FE0F ; fully-qualified # ๐Ÿˆท๏ธ Japanese โ€œmonthly amountโ€ button +1F237 ; non-fully-qualified # ๐Ÿˆท Japanese โ€œmonthly amountโ€ button +1F236 ; fully-qualified # ๐Ÿˆถ Japanese โ€œnot free of chargeโ€ button +1F22F ; fully-qualified # ๐Ÿˆฏ Japanese โ€œreservedโ€ button +1F250 ; fully-qualified # ๐Ÿ‰ Japanese โ€œbargainโ€ button +1F239 ; fully-qualified # ๐Ÿˆน Japanese โ€œdiscountโ€ button +1F21A ; fully-qualified # ๐Ÿˆš Japanese โ€œfree of chargeโ€ button +1F232 ; fully-qualified # ๐Ÿˆฒ Japanese โ€œprohibitedโ€ button +1F251 ; fully-qualified # ๐Ÿ‰‘ Japanese โ€œacceptableโ€ button +1F238 ; fully-qualified # ๐Ÿˆธ Japanese โ€œapplicationโ€ button +1F234 ; fully-qualified # ๐Ÿˆด Japanese โ€œpassing gradeโ€ button +1F233 ; fully-qualified # ๐Ÿˆณ Japanese โ€œvacancyโ€ button +3297 FE0F ; fully-qualified # ใŠ—๏ธ Japanese โ€œcongratulationsโ€ button +3297 ; non-fully-qualified # ใŠ— Japanese โ€œcongratulationsโ€ button +3299 FE0F ; fully-qualified # ใŠ™๏ธ Japanese โ€œsecretโ€ button +3299 ; non-fully-qualified # ใŠ™ Japanese โ€œsecretโ€ button +1F23A ; fully-qualified # ๐Ÿˆบ Japanese โ€œopen for businessโ€ button +1F235 ; fully-qualified # ๐Ÿˆต Japanese โ€œno vacancyโ€ button + +# subgroup: geometric +25AA FE0F ; fully-qualified # โ–ช๏ธ black small square +25AA ; non-fully-qualified # โ–ช black small square +25AB FE0F ; fully-qualified # โ–ซ๏ธ white small square +25AB ; non-fully-qualified # โ–ซ white small square +25FB FE0F ; fully-qualified # โ—ป๏ธ white medium square +25FB ; non-fully-qualified # โ—ป white medium square +25FC FE0F ; fully-qualified # โ—ผ๏ธ black medium square +25FC ; non-fully-qualified # โ—ผ black medium square +25FD ; fully-qualified # โ—ฝ white medium-small square +25FE ; fully-qualified # โ—พ black medium-small square +2B1B ; fully-qualified # โฌ› black large square +2B1C ; fully-qualified # โฌœ white large square +1F536 ; fully-qualified # ๐Ÿ”ถ large orange diamond +1F537 ; fully-qualified # ๐Ÿ”ท large blue diamond +1F538 ; fully-qualified # ๐Ÿ”ธ small orange diamond +1F539 ; fully-qualified # ๐Ÿ”น small blue diamond +1F53A ; fully-qualified # ๐Ÿ”บ red triangle pointed up +1F53B ; fully-qualified # ๐Ÿ”ป red triangle pointed down +1F4A0 ; fully-qualified # ๐Ÿ’  diamond with a dot +1F518 ; fully-qualified # ๐Ÿ”˜ radio button +1F532 ; fully-qualified # ๐Ÿ”ฒ black square button +1F533 ; fully-qualified # ๐Ÿ”ณ white square button +26AA ; fully-qualified # โšช white circle +26AB ; fully-qualified # โšซ black circle +1F534 ; fully-qualified # ๐Ÿ”ด red circle +1F535 ; fully-qualified # ๐Ÿ”ต blue circle + +# Symbols subtotal: 286 +# Symbols subtotal: 286 w/o modifiers + +# group: Flags + +# subgroup: flag +1F3C1 ; fully-qualified # ๐Ÿ chequered flag +1F6A9 ; fully-qualified # ๐Ÿšฉ triangular flag +1F38C ; fully-qualified # ๐ŸŽŒ crossed flags +1F3F4 ; fully-qualified # ๐Ÿด black flag +1F3F3 FE0F ; fully-qualified # ๐Ÿณ๏ธ white flag +1F3F3 ; non-fully-qualified # ๐Ÿณ white flag +1F3F3 FE0F 200D 1F308 ; fully-qualified # ๐Ÿณ๏ธโ€๐ŸŒˆ rainbow flag +1F3F3 200D 1F308 ; non-fully-qualified # ๐Ÿณโ€๐ŸŒˆ rainbow flag +1F3F4 200D 2620 FE0F ; fully-qualified # ๐Ÿดโ€โ˜ ๏ธ pirate flag +1F3F4 200D 2620 ; non-fully-qualified # ๐Ÿดโ€โ˜  pirate flag + +# subgroup: country-flag +1F1E6 1F1E8 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡จ Ascension Island +1F1E6 1F1E9 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ฉ Andorra +1F1E6 1F1EA ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ช United Arab Emirates +1F1E6 1F1EB ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ซ Afghanistan +1F1E6 1F1EC ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ฌ Antigua & Barbuda +1F1E6 1F1EE ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ฎ Anguilla +1F1E6 1F1F1 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ฑ Albania +1F1E6 1F1F2 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ฒ Armenia +1F1E6 1F1F4 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ด Angola +1F1E6 1F1F6 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ถ Antarctica +1F1E6 1F1F7 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ท Argentina +1F1E6 1F1F8 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ธ American Samoa +1F1E6 1F1F9 ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡น Austria +1F1E6 1F1FA ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡บ Australia +1F1E6 1F1FC ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ผ Aruba +1F1E6 1F1FD ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ฝ ร…land Islands +1F1E6 1F1FF ; fully-qualified # ๐Ÿ‡ฆ๐Ÿ‡ฟ Azerbaijan +1F1E7 1F1E6 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฆ Bosnia & Herzegovina +1F1E7 1F1E7 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ง Barbados +1F1E7 1F1E9 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฉ Bangladesh +1F1E7 1F1EA ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ช Belgium +1F1E7 1F1EB ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ซ Burkina Faso +1F1E7 1F1EC ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฌ Bulgaria +1F1E7 1F1ED ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ญ Bahrain +1F1E7 1F1EE ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฎ Burundi +1F1E7 1F1EF ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฏ Benin +1F1E7 1F1F1 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฑ St. Barthรฉlemy +1F1E7 1F1F2 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฒ Bermuda +1F1E7 1F1F3 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ณ Brunei +1F1E7 1F1F4 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ด Bolivia +1F1E7 1F1F6 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ถ Caribbean Netherlands +1F1E7 1F1F7 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ท Brazil +1F1E7 1F1F8 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ธ Bahamas +1F1E7 1F1F9 ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡น Bhutan +1F1E7 1F1FB ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ป Bouvet Island +1F1E7 1F1FC ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ผ Botswana +1F1E7 1F1FE ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡พ Belarus +1F1E7 1F1FF ; fully-qualified # ๐Ÿ‡ง๐Ÿ‡ฟ Belize +1F1E8 1F1E6 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฆ Canada +1F1E8 1F1E8 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡จ Cocos (Keeling) Islands +1F1E8 1F1E9 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฉ Congo - Kinshasa +1F1E8 1F1EB ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ซ Central African Republic +1F1E8 1F1EC ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฌ Congo - Brazzaville +1F1E8 1F1ED ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ญ Switzerland +1F1E8 1F1EE ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฎ Cรดte dโ€™Ivoire +1F1E8 1F1F0 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฐ Cook Islands +1F1E8 1F1F1 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฑ Chile +1F1E8 1F1F2 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฒ Cameroon +1F1E8 1F1F3 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ณ China +1F1E8 1F1F4 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ด Colombia +1F1E8 1F1F5 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ต Clipperton Island +1F1E8 1F1F7 ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ท Costa Rica +1F1E8 1F1FA ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡บ Cuba +1F1E8 1F1FB ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ป Cape Verde +1F1E8 1F1FC ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ผ Curaรงao +1F1E8 1F1FD ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฝ Christmas Island +1F1E8 1F1FE ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡พ Cyprus +1F1E8 1F1FF ; fully-qualified # ๐Ÿ‡จ๐Ÿ‡ฟ Czechia +1F1E9 1F1EA ; fully-qualified # ๐Ÿ‡ฉ๐Ÿ‡ช Germany +1F1E9 1F1EC ; fully-qualified # ๐Ÿ‡ฉ๐Ÿ‡ฌ Diego Garcia +1F1E9 1F1EF ; fully-qualified # ๐Ÿ‡ฉ๐Ÿ‡ฏ Djibouti +1F1E9 1F1F0 ; fully-qualified # ๐Ÿ‡ฉ๐Ÿ‡ฐ Denmark +1F1E9 1F1F2 ; fully-qualified # ๐Ÿ‡ฉ๐Ÿ‡ฒ Dominica +1F1E9 1F1F4 ; fully-qualified # ๐Ÿ‡ฉ๐Ÿ‡ด Dominican Republic +1F1E9 1F1FF ; fully-qualified # ๐Ÿ‡ฉ๐Ÿ‡ฟ Algeria +1F1EA 1F1E6 ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡ฆ Ceuta & Melilla +1F1EA 1F1E8 ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡จ Ecuador +1F1EA 1F1EA ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡ช Estonia +1F1EA 1F1EC ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡ฌ Egypt +1F1EA 1F1ED ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡ญ Western Sahara +1F1EA 1F1F7 ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡ท Eritrea +1F1EA 1F1F8 ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡ธ Spain +1F1EA 1F1F9 ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡น Ethiopia +1F1EA 1F1FA ; fully-qualified # ๐Ÿ‡ช๐Ÿ‡บ European Union +1F1EB 1F1EE ; fully-qualified # ๐Ÿ‡ซ๐Ÿ‡ฎ Finland +1F1EB 1F1EF ; fully-qualified # ๐Ÿ‡ซ๐Ÿ‡ฏ Fiji +1F1EB 1F1F0 ; fully-qualified # ๐Ÿ‡ซ๐Ÿ‡ฐ Falkland Islands +1F1EB 1F1F2 ; fully-qualified # ๐Ÿ‡ซ๐Ÿ‡ฒ Micronesia +1F1EB 1F1F4 ; fully-qualified # ๐Ÿ‡ซ๐Ÿ‡ด Faroe Islands +1F1EB 1F1F7 ; fully-qualified # ๐Ÿ‡ซ๐Ÿ‡ท France +1F1EC 1F1E6 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ฆ Gabon +1F1EC 1F1E7 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom +1F1EC 1F1E9 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ฉ Grenada +1F1EC 1F1EA ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ช Georgia +1F1EC 1F1EB ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ซ French Guiana +1F1EC 1F1EC ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ฌ Guernsey +1F1EC 1F1ED ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ญ Ghana +1F1EC 1F1EE ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ฎ Gibraltar +1F1EC 1F1F1 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ฑ Greenland +1F1EC 1F1F2 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ฒ Gambia +1F1EC 1F1F3 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ณ Guinea +1F1EC 1F1F5 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ต Guadeloupe +1F1EC 1F1F6 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ถ Equatorial Guinea +1F1EC 1F1F7 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ท Greece +1F1EC 1F1F8 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ธ South Georgia & South Sandwich Islands +1F1EC 1F1F9 ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡น Guatemala +1F1EC 1F1FA ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡บ Guam +1F1EC 1F1FC ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡ผ Guinea-Bissau +1F1EC 1F1FE ; fully-qualified # ๐Ÿ‡ฌ๐Ÿ‡พ Guyana +1F1ED 1F1F0 ; fully-qualified # ๐Ÿ‡ญ๐Ÿ‡ฐ Hong Kong SAR China +1F1ED 1F1F2 ; fully-qualified # ๐Ÿ‡ญ๐Ÿ‡ฒ Heard & McDonald Islands +1F1ED 1F1F3 ; fully-qualified # ๐Ÿ‡ญ๐Ÿ‡ณ Honduras +1F1ED 1F1F7 ; fully-qualified # ๐Ÿ‡ญ๐Ÿ‡ท Croatia +1F1ED 1F1F9 ; fully-qualified # ๐Ÿ‡ญ๐Ÿ‡น Haiti +1F1ED 1F1FA ; fully-qualified # ๐Ÿ‡ญ๐Ÿ‡บ Hungary +1F1EE 1F1E8 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡จ Canary Islands +1F1EE 1F1E9 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesia +1F1EE 1F1EA ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ช Ireland +1F1EE 1F1F1 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ฑ Israel +1F1EE 1F1F2 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ฒ Isle of Man +1F1EE 1F1F3 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ณ India +1F1EE 1F1F4 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ด British Indian Ocean Territory +1F1EE 1F1F6 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ถ Iraq +1F1EE 1F1F7 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ท Iran +1F1EE 1F1F8 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡ธ Iceland +1F1EE 1F1F9 ; fully-qualified # ๐Ÿ‡ฎ๐Ÿ‡น Italy +1F1EF 1F1EA ; fully-qualified # ๐Ÿ‡ฏ๐Ÿ‡ช Jersey +1F1EF 1F1F2 ; fully-qualified # ๐Ÿ‡ฏ๐Ÿ‡ฒ Jamaica +1F1EF 1F1F4 ; fully-qualified # ๐Ÿ‡ฏ๐Ÿ‡ด Jordan +1F1EF 1F1F5 ; fully-qualified # ๐Ÿ‡ฏ๐Ÿ‡ต Japan +1F1F0 1F1EA ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ช Kenya +1F1F0 1F1EC ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ฌ Kyrgyzstan +1F1F0 1F1ED ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ญ Cambodia +1F1F0 1F1EE ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ฎ Kiribati +1F1F0 1F1F2 ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ฒ Comoros +1F1F0 1F1F3 ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ณ St. Kitts & Nevis +1F1F0 1F1F5 ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ต North Korea +1F1F0 1F1F7 ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ท South Korea +1F1F0 1F1FC ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ผ Kuwait +1F1F0 1F1FE ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡พ Cayman Islands +1F1F0 1F1FF ; fully-qualified # ๐Ÿ‡ฐ๐Ÿ‡ฟ Kazakhstan +1F1F1 1F1E6 ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡ฆ Laos +1F1F1 1F1E7 ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡ง Lebanon +1F1F1 1F1E8 ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡จ St. Lucia +1F1F1 1F1EE ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡ฎ Liechtenstein +1F1F1 1F1F0 ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡ฐ Sri Lanka +1F1F1 1F1F7 ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡ท Liberia +1F1F1 1F1F8 ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡ธ Lesotho +1F1F1 1F1F9 ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡น Lithuania +1F1F1 1F1FA ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡บ Luxembourg +1F1F1 1F1FB ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡ป Latvia +1F1F1 1F1FE ; fully-qualified # ๐Ÿ‡ฑ๐Ÿ‡พ Libya +1F1F2 1F1E6 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฆ Morocco +1F1F2 1F1E8 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡จ Monaco +1F1F2 1F1E9 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฉ Moldova +1F1F2 1F1EA ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ช Montenegro +1F1F2 1F1EB ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ซ St. Martin +1F1F2 1F1EC ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฌ Madagascar +1F1F2 1F1ED ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ญ Marshall Islands +1F1F2 1F1F0 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฐ Macedonia +1F1F2 1F1F1 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฑ Mali +1F1F2 1F1F2 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฒ Myanmar (Burma) +1F1F2 1F1F3 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ณ Mongolia +1F1F2 1F1F4 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ด Macau SAR China +1F1F2 1F1F5 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ต Northern Mariana Islands +1F1F2 1F1F6 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ถ Martinique +1F1F2 1F1F7 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ท Mauritania +1F1F2 1F1F8 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ธ Montserrat +1F1F2 1F1F9 ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡น Malta +1F1F2 1F1FA ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡บ Mauritius +1F1F2 1F1FB ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ป Maldives +1F1F2 1F1FC ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ผ Malawi +1F1F2 1F1FD ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฝ Mexico +1F1F2 1F1FE ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡พ Malaysia +1F1F2 1F1FF ; fully-qualified # ๐Ÿ‡ฒ๐Ÿ‡ฟ Mozambique +1F1F3 1F1E6 ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ฆ Namibia +1F1F3 1F1E8 ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡จ New Caledonia +1F1F3 1F1EA ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ช Niger +1F1F3 1F1EB ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ซ Norfolk Island +1F1F3 1F1EC ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ฌ Nigeria +1F1F3 1F1EE ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ฎ Nicaragua +1F1F3 1F1F1 ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands +1F1F3 1F1F4 ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ด Norway +1F1F3 1F1F5 ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ต Nepal +1F1F3 1F1F7 ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ท Nauru +1F1F3 1F1FA ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡บ Niue +1F1F3 1F1FF ; fully-qualified # ๐Ÿ‡ณ๐Ÿ‡ฟ New Zealand +1F1F4 1F1F2 ; fully-qualified # ๐Ÿ‡ด๐Ÿ‡ฒ Oman +1F1F5 1F1E6 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ฆ Panama +1F1F5 1F1EA ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ช Peru +1F1F5 1F1EB ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ซ French Polynesia +1F1F5 1F1EC ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ฌ Papua New Guinea +1F1F5 1F1ED ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ญ Philippines +1F1F5 1F1F0 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ฐ Pakistan +1F1F5 1F1F1 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ฑ Poland +1F1F5 1F1F2 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ฒ St. Pierre & Miquelon +1F1F5 1F1F3 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ณ Pitcairn Islands +1F1F5 1F1F7 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ท Puerto Rico +1F1F5 1F1F8 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ธ Palestinian Territories +1F1F5 1F1F9 ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡น Portugal +1F1F5 1F1FC ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡ผ Palau +1F1F5 1F1FE ; fully-qualified # ๐Ÿ‡ต๐Ÿ‡พ Paraguay +1F1F6 1F1E6 ; fully-qualified # ๐Ÿ‡ถ๐Ÿ‡ฆ Qatar +1F1F7 1F1EA ; fully-qualified # ๐Ÿ‡ท๐Ÿ‡ช Rรฉunion +1F1F7 1F1F4 ; fully-qualified # ๐Ÿ‡ท๐Ÿ‡ด Romania +1F1F7 1F1F8 ; fully-qualified # ๐Ÿ‡ท๐Ÿ‡ธ Serbia +1F1F7 1F1FA ; fully-qualified # ๐Ÿ‡ท๐Ÿ‡บ Russia +1F1F7 1F1FC ; fully-qualified # ๐Ÿ‡ท๐Ÿ‡ผ Rwanda +1F1F8 1F1E6 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฆ Saudi Arabia +1F1F8 1F1E7 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ง Solomon Islands +1F1F8 1F1E8 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡จ Seychelles +1F1F8 1F1E9 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฉ Sudan +1F1F8 1F1EA ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ช Sweden +1F1F8 1F1EC ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฌ Singapore +1F1F8 1F1ED ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ญ St. Helena +1F1F8 1F1EE ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฎ Slovenia +1F1F8 1F1EF ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฏ Svalbard & Jan Mayen +1F1F8 1F1F0 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฐ Slovakia +1F1F8 1F1F1 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฑ Sierra Leone +1F1F8 1F1F2 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฒ San Marino +1F1F8 1F1F3 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ณ Senegal +1F1F8 1F1F4 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ด Somalia +1F1F8 1F1F7 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ท Suriname +1F1F8 1F1F8 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ธ South Sudan +1F1F8 1F1F9 ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡น Sรฃo Tomรฉ & Prรญncipe +1F1F8 1F1FB ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ป El Salvador +1F1F8 1F1FD ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฝ Sint Maarten +1F1F8 1F1FE ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡พ Syria +1F1F8 1F1FF ; fully-qualified # ๐Ÿ‡ธ๐Ÿ‡ฟ Swaziland +1F1F9 1F1E6 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฆ Tristan da Cunha +1F1F9 1F1E8 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡จ Turks & Caicos Islands +1F1F9 1F1E9 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฉ Chad +1F1F9 1F1EB ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ซ French Southern Territories +1F1F9 1F1EC ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฌ Togo +1F1F9 1F1ED ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ญ Thailand +1F1F9 1F1EF ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฏ Tajikistan +1F1F9 1F1F0 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฐ Tokelau +1F1F9 1F1F1 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฑ Timor-Leste +1F1F9 1F1F2 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฒ Turkmenistan +1F1F9 1F1F3 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ณ Tunisia +1F1F9 1F1F4 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ด Tonga +1F1F9 1F1F7 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ท Turkey +1F1F9 1F1F9 ; fully-qualified # ๐Ÿ‡น๐Ÿ‡น Trinidad & Tobago +1F1F9 1F1FB ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ป Tuvalu +1F1F9 1F1FC ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ผ Taiwan +1F1F9 1F1FF ; fully-qualified # ๐Ÿ‡น๐Ÿ‡ฟ Tanzania +1F1FA 1F1E6 ; fully-qualified # ๐Ÿ‡บ๐Ÿ‡ฆ Ukraine +1F1FA 1F1EC ; fully-qualified # ๐Ÿ‡บ๐Ÿ‡ฌ Uganda +1F1FA 1F1F2 ; fully-qualified # ๐Ÿ‡บ๐Ÿ‡ฒ U.S. Outlying Islands +1F1FA 1F1F3 ; fully-qualified # ๐Ÿ‡บ๐Ÿ‡ณ United Nations +1F1FA 1F1F8 ; fully-qualified # ๐Ÿ‡บ๐Ÿ‡ธ United States +1F1FA 1F1FE ; fully-qualified # ๐Ÿ‡บ๐Ÿ‡พ Uruguay +1F1FA 1F1FF ; fully-qualified # ๐Ÿ‡บ๐Ÿ‡ฟ Uzbekistan +1F1FB 1F1E6 ; fully-qualified # ๐Ÿ‡ป๐Ÿ‡ฆ Vatican City +1F1FB 1F1E8 ; fully-qualified # ๐Ÿ‡ป๐Ÿ‡จ St. Vincent & Grenadines +1F1FB 1F1EA ; fully-qualified # ๐Ÿ‡ป๐Ÿ‡ช Venezuela +1F1FB 1F1EC ; fully-qualified # ๐Ÿ‡ป๐Ÿ‡ฌ British Virgin Islands +1F1FB 1F1EE ; fully-qualified # ๐Ÿ‡ป๐Ÿ‡ฎ U.S. Virgin Islands +1F1FB 1F1F3 ; fully-qualified # ๐Ÿ‡ป๐Ÿ‡ณ Vietnam +1F1FB 1F1FA ; fully-qualified # ๐Ÿ‡ป๐Ÿ‡บ Vanuatu +1F1FC 1F1EB ; fully-qualified # ๐Ÿ‡ผ๐Ÿ‡ซ Wallis & Futuna +1F1FC 1F1F8 ; fully-qualified # ๐Ÿ‡ผ๐Ÿ‡ธ Samoa +1F1FD 1F1F0 ; fully-qualified # ๐Ÿ‡ฝ๐Ÿ‡ฐ Kosovo +1F1FE 1F1EA ; fully-qualified # ๐Ÿ‡พ๐Ÿ‡ช Yemen +1F1FE 1F1F9 ; fully-qualified # ๐Ÿ‡พ๐Ÿ‡น Mayotte +1F1FF 1F1E6 ; fully-qualified # ๐Ÿ‡ฟ๐Ÿ‡ฆ South Africa +1F1FF 1F1F2 ; fully-qualified # ๐Ÿ‡ฟ๐Ÿ‡ฒ Zambia +1F1FF 1F1FC ; fully-qualified # ๐Ÿ‡ฟ๐Ÿ‡ผ Zimbabwe + +# subgroup: subdivision-flag +1F3F4 E0067 E0062 E0065 E006E E0067 E007F ; fully-qualified # ๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ England +1F3F4 E0067 E0062 E0073 E0063 E0074 E007F ; fully-qualified # ๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ Scotland +1F3F4 E0067 E0062 E0077 E006C E0073 E007F ; fully-qualified # ๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ Wales + +# Flags subtotal: 271 +# Flags subtotal: 271 w/o modifiers + +#EOF diff --git a/tests/manual/emojisequences/main.cpp b/tests/manual/emojisequences/main.cpp new file mode 100644 index 00000000000..aa3bd80333f --- /dev/null +++ b/tests/manual/emojisequences/main.cpp @@ -0,0 +1,18 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include "mainwindow.h" + +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + + MainWindow w; + w.show(); + + return a.exec(); +} + diff --git a/tests/manual/emojisequences/mainwindow.cpp b/tests/manual/emojisequences/mainwindow.cpp new file mode 100644 index 00000000000..1b50698b11e --- /dev/null +++ b/tests/manual/emojisequences/mainwindow.cpp @@ -0,0 +1,95 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include "mainwindow.h" +#include "ui_mainwindow.h" + +#include +#include +#include + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + connect(ui->toolButton, &QToolButton::clicked, this, &MainWindow::loadCustomFont); + + populateEmojiTest(); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::populateEmojiTest() +{ + QFile file(":/emoji-test.txt"); + + ui->tableWidget->clear(); + ui->tableWidget->setColumnCount(8); + + QList > strings; + if (file.open(QIODevice::ReadOnly)) { + while (!file.atEnd()) { + QString l = file.readLine(); + + QStringList toolTip; + QString testString; + QStringList tokens = l.split(QLatin1Char(' '), Qt::SkipEmptyParts); + for (int i = 0; i < tokens.size(); ++i) { + if (tokens.at(i) == QLatin1Char(';')) + break; + + bool ok; + char32_t ucs4 = tokens.at(i).toUInt(&ok, 16); + if (!ok) + break; + + testString += QString::fromUcs4(&ucs4, 1); + toolTip << QString::number(ucs4, 16); + } + + if (!toolTip.isEmpty()) { + strings.append(qMakePair(testString, toolTip.join(','))); + } + } + } + + ui->tableWidget->setRowCount(strings.count() / 8); + for (int i = 0; i < strings.count(); ++i) { + int row = i / 8; + int column = i % 8; + QString testString = strings.at(i).first; + QString toolTip = strings.at(i).second; + + QTableWidgetItem *it = new QTableWidgetItem(testString); + ui->tableWidget->setItem(row, column, it); + it->setText(testString); + it->setToolTip(toolTip); + } +} + +void MainWindow::loadCustomFont() +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + ui->tableWidget->clear(); + QFontDatabase::removeAllApplicationFonts(); + + QString fileName = QFileDialog::getOpenFileName(this, tr("Open font file"), QString(), tr("Fonts (*.ttf *.otf);All files (*)")); + if (!fileName.isEmpty()) { + int id = QFontDatabase::addApplicationFont(fileName); + if (id >= 0) { + QStringList families = QFontDatabase::applicationFontFamilies(id); + QString family = families.size() > 0 ? families.first() : QString(); + if (!family.isEmpty()) { + QFontDatabase::setApplicationEmojiFontFamilies(QStringList() << family); + populateEmojiTest(); + } + } + } +#endif +} + diff --git a/tests/manual/emojisequences/mainwindow.h b/tests/manual/emojisequences/mainwindow.h new file mode 100644 index 00000000000..cda2d9a4ecc --- /dev/null +++ b/tests/manual/emojisequences/mainwindow.h @@ -0,0 +1,31 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private slots: + void loadCustomFont(); + +private: + void populateEmojiTest(); + + + Ui::MainWindow *ui; +}; + +#endif // MAINWINDOW_H diff --git a/tests/manual/emojisequences/mainwindow.ui b/tests/manual/emojisequences/mainwindow.ui new file mode 100644 index 00000000000..622b149fc4f --- /dev/null +++ b/tests/manual/emojisequences/mainwindow.ui @@ -0,0 +1,50 @@ + + + MainWindow + + + + 0 + 0 + 1245 + 972 + + + + MainWindow + + + + + + + + 20 + + + + + + + + Load custom font... + + + + + + + + + 0 + 0 + 1245 + 22 + + + + + + + +