Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## v5.1.2

- Upgrade emoji database to Unicode 16.0 (+330 emojis)
- Add support for almost all gemoji aliases (+742 aliases, 2711 total)
- FE0F handled transparently: `getUnicode()` return values for existing emojis unchanged
- `:bride_with_veil:`, `:guardsman:`, `:man_in_tuxedo:`, `:man_with_turban:`,
`:ok_woman:` now map to their gender-explicit ZWJ variants
- `:jolly_roger:` / `:pirate_flag:` had an erroneous leading ♾ removed (bugfix)

## v5.1.1

- Bugfix: respect fitzpatrick modifier when extracting emojis (thanks @sullis)
Expand Down
674 changes: 419 additions & 255 deletions EMOJIS.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ _The missing emoji library for java._
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>5.1.1</version>
<version>5.1.2</version>
</dependency>
```

Expand All @@ -25,7 +25,7 @@ You can also download the project, build it with `mvn clean install` and add the
##### Via Gradle:

```gradle
compile 'com.vdurmont:emoji-java:5.1.1'
compile 'com.vdurmont:emoji-java:5.1.2'
```

##### Via Direct Download:
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>5.1.1</version>
<version>5.1.2</version>
<packaging>jar</packaging>

<name>emoji-java</name>
Expand Down
9 changes: 6 additions & 3 deletions src/main/java/com/vdurmont/emoji/EmojiParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,8 @@ protected static UnicodeCandidate getNextUnicodeCandidate(char[] chars, int star
return new UnicodeCandidate(
emoji,
fitzpatrickString,
i
i,
emojiEnd
);
}
}
Expand Down Expand Up @@ -494,11 +495,13 @@ public static class UnicodeCandidate {
private final Emoji emoji;
private final Fitzpatrick fitzpatrick;
private final int startIndex;
private final int emojiEndIndex;

private UnicodeCandidate(Emoji emoji, String fitzpatrick, int startIndex) {
private UnicodeCandidate(Emoji emoji, String fitzpatrick, int startIndex, int emojiEndIndex) {
this.emoji = emoji;
this.fitzpatrick = Fitzpatrick.fitzpatrickFromUnicode(fitzpatrick);
this.startIndex = startIndex;
this.emojiEndIndex = emojiEndIndex;
}

public Emoji getEmoji() {
Expand Down Expand Up @@ -526,7 +529,7 @@ public int getEmojiStartIndex() {
}

public int getEmojiEndIndex() {
return startIndex + emoji.getUnicode().length();
return emojiEndIndex;
}

public int getFitzpatrickEndIndex() {
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/com/vdurmont/emoji/EmojiTrie.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@ public EmojiTrie(Collection<Emoji> emojis) {
int maxDepth = 0;
for (Emoji emoji : emojis) {
Node tree = root;
char[] chars = emoji.getUnicode().toCharArray();
maxDepth = Math.max(maxDepth, chars.length);
// Build trie keys without variation selectors; use full unicode length for
// buffer sizing in getHtmlEncodedEmojiAt (which may decode FE0F entities).
char[] chars = emoji.getUnicode().replace("\ufe0f", "").toCharArray();
maxDepth = Math.max(maxDepth, emoji.getUnicode().length());
for (char c: chars) {
if (!tree.hasChild(c)) {
tree.addChild(c);
Expand Down Expand Up @@ -64,6 +66,7 @@ public Matches isEmoji(char[] sequence, int start, int end) {

Node tree = root;
for (int i = start; i < end; i++) {
if (sequence[i] == '\ufe0f') continue;
if (!tree.hasChild(sequence[i])) {
return Matches.IMPOSSIBLE;
}
Expand Down Expand Up @@ -91,6 +94,7 @@ Emoji getEmoji(char[] sequence, int start, int end) {

Node tree = root;
for (int i = 0; i < end; i++) {
if (sequence[i] == '\ufe0f') continue;
if (!tree.hasChild(sequence[i])) {
return null;
}
Expand Down
Loading