summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/char-ini.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-05-07 01:01:21 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-05-07 01:01:21 +0200
commit57c3891a6b93b57f91ea77c9bbecffacbcc0da28 (patch)
tree410b95f8a809ab33ffba6ac69bac7c466b4d514d /tex/context/base/mkiv/char-ini.lua
parent762562da00d0ec1d50e6d3c2a701156ab42e6d71 (diff)
downloadcontext-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.lua18
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()