Skip to content

Commit 75ada7c

Browse files
committed
Merge pull request #60 from github/resolve-unicode-aliases
Resolve the emoji.json "unicodes" mess
2 parents 0bb789e + 9beb9c0 commit 75ada7c

File tree

6 files changed

+69
-291
lines changed

6 files changed

+69
-291
lines changed

db/aliases.html

+11-17
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<script>
1414
const VARIATION_SELECTOR_15 = String.fromCharCode(0xfe0e);
1515
const VARIATION_SELECTOR_16 = String.fromCharCode(0xfe0f);
16+
const EMOJI_SIZE = 32
1617

1718
function detectAliases(db) {
1819
for (var i = 0; i < db.length; ++i) {
@@ -22,23 +23,14 @@
2223
continue;
2324
}
2425

25-
var candidates = [];
26-
27-
if (raw.length === 1) {
28-
candidates.push(raw + VARIATION_SELECTOR_15);
29-
candidates.push(raw + VARIATION_SELECTOR_16);
30-
} else if (raw[raw.length - 1] === VARIATION_SELECTOR_16) {
31-
var base = raw.substr(0, raw.length - 1);
32-
candidates.push(base);
33-
candidates.push(base + VARIATION_SELECTOR_15);
26+
if (raw.indexOf(VARIATION_SELECTOR_16) > -1) {
27+
var candidates = [raw.replace(VARIATION_SELECTOR_16, ""), raw];
28+
} else {
29+
var candidates = [raw, raw + VARIATION_SELECTOR_16];
3430
}
3531

3632
var aliases = candidates.filter(isColorEmoji);
37-
if (aliases.length) {
38-
emoji.unicodes = aliases;
39-
} else {
40-
delete emoji.unicodes;
41-
}
33+
emoji.emoji = aliases[0];
4234
}
4335

4436
dump(db);
@@ -52,14 +44,16 @@
5244
}
5345

5446
var canvas = document.createElement("canvas");
47+
canvas.width = canvas.height = EMOJI_SIZE;
48+
5549
function color(emoji, rgb) {
5650
var context = canvas.getContext("2d");
57-
context.clearRect(0, 0, 32, 32);
51+
context.clearRect(0, 0, canvas.width, canvas.height);
5852
context.fillStyle = rgb;
5953
context.textBaseline = "top";
60-
context.font = "32px Arial";
54+
context.font = EMOJI_SIZE+"px Arial";
6155
context.fillText(emoji, 0, 0);
62-
var data = context.getImageData(0, 0, 32, 32).data;
56+
var data = context.getImageData(0, 0, EMOJI_SIZE, EMOJI_SIZE).data;
6357
for (var i = 0; i < data.length; i += 4) {
6458
if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0) {
6559
continue;

db/dump.rb

+2-7
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,14 @@ def add_reference(code)
5252
trap(:PIPE) { abort }
5353

5454
items = []
55-
variation = "\u{fe0f}".freeze
56-
55+
variation_codepoint = Emoji::VARIATION_SELECTOR_16.codepoints[0]
5756

5857
for emoji in Emoji.all
59-
unicodes = emoji.unicode_aliases.dup
60-
6158
item = {}
6259

6360
unless emoji.custom?
64-
variation_codepoint = variation.codepoints[0]
6561
chars = emoji.raw.codepoints.map { |code| UnicodeCharacter.fetch(code) unless code == variation_codepoint }.compact
66-
item[:emoji] = unicodes.shift
67-
item[:unicodes] = unicodes if unicodes.any?
62+
item[:emoji] = emoji.raw
6863
item[:description] = chars.map(&:description).join(' + ')
6964
end
7065

0 commit comments

Comments
 (0)