Skip to content

fix: is_emoji() returns True for fully-qualified emoji with VS16 - #333

Open
deepakganesh78 wants to merge 1 commit into
carpedm20:masterfrom
deepakganesh78:fix/issue325-is-emoji-variant-selector
Open

fix: is_emoji() returns True for fully-qualified emoji with VS16#333
deepakganesh78 wants to merge 1 commit into
carpedm20:masterfrom
deepakganesh78:fix/issue325-is-emoji-variant-selector

Conversation

@deepakganesh78

Copy link
Copy Markdown

Fixes #325

Problem

is_emoji("☕️") returns False because the fully-qualified form (☕ + U+FE0F variation selector) is not stored in EMOJI_DATA directly — only the base character ☕ (U+2615) is.

Root Cause

is_emoji() does a simple dict lookup in EMOJI_DATA. Emoji that support variation selectors are stored only as the base codepoint, but users commonly copy-paste the fully-qualified form from platforms which append VS16.

Fix

When the string is not directly in EMOJI_DATA and ends with U+FE0F, strip it and check if the base character exists with a variant entry. This is minimal and does not affect performance for the common case (direct lookup still comes first).

Validation

  • Full test suite passes (102 tests)
  • Regression test added in test_core.py::test_is_emoji

is_emoji() now recognizes emoji with a trailing variation selector-16
(U+FE0F) by checking if the base character (without VS16) exists in
EMOJI_DATA with a variant entry. This fixes the case where e.g.
is_emoji('☕️') incorrectly returned False while is_emoji('☕')
returned True.

Fixes carpedm20#325

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

is_emoji("☕️") is False

1 participant