diff options
author | Hans Hagen <pragma@wxs.nl> | 2017-05-07 01:01:21 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2017-05-07 01:01:21 +0200 |
commit | 57c3891a6b93b57f91ea77c9bbecffacbcc0da28 (patch) | |
tree | 410b95f8a809ab33ffba6ac69bac7c466b4d514d /tex/context/base/mkiv/char-ini.lua | |
parent | 762562da00d0ec1d50e6d3c2a701156ab42e6d71 (diff) | |
download | context-57c3891a6b93b57f91ea77c9bbecffacbcc0da28.tar.gz |
2017-05-06 23:13:00
Diffstat (limited to 'tex/context/base/mkiv/char-ini.lua')
-rw-r--r-- | tex/context/base/mkiv/char-ini.lua | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/tex/context/base/mkiv/char-ini.lua b/tex/context/base/mkiv/char-ini.lua index 4f2b7a4d5..f673a6a86 100644 --- a/tex/context/base/mkiv/char-ini.lua +++ b/tex/context/base/mkiv/char-ini.lua @@ -1496,8 +1496,8 @@ do local p_special = p_family + p_couple + p_kiss --- print(lpeg.match(p_special,"family man woman girl")) --- print(lpeg.match(p_special,"family man dark skin tone woman girl girl")) + -- print(lpeg.match(p_special,"family man woman girl")) + -- print(lpeg.match(p_special,"family man dark skin tone woman girl girl")) -- local p_special = P { "all", -- all = Cs (V("family") + V("couple") + V("kiss")), @@ -1509,11 +1509,11 @@ do -- rest = (space * skin)^0/"" * ((space^1/zwj) + P(-1)), -- } - -- maybe characters.emoji.toutf - local emoji = { } characters.emoji = emoji +local cache = setmetatable({ }, { __mode = "k" } ) + function emoji.resolve(name) if not hash then data, hash = load() @@ -1522,25 +1522,35 @@ do if h then return h end +local h = cache[name] +if h then + return h +elseif h == false then + return +end -- expand shortcuts local name = lpegmatch(pattern_0,name) or name -- expand some 25K variants local h = lpegmatch(p_special,name) if h then +cache[name] = h return h end -- simplify local s = lpegmatch(pattern_1,name) local h = hash[s] if h then +cache[name] = h return h end -- simplify local s = lpegmatch(pattern_2,name) local h = hash[s] if h then +cache[name] = h return h end +cache[name] = false end function emoji.known() |