[latex3-commits] [git/LaTeX3-latex3-luaotfload] harf-dev: Small stuff (4d33851)
Marcel Fabian Krüger
tex at 2krueger.de
Tue Sep 17 15:00:18 CEST 2019
Repository : https://github.com/latex3/luaotfload
On branch : harf-dev
Link : https://github.com/latex3/luaotfload/commit/4d33851d7b08c55dbcdbde6f23bb8890d4ef94ba
>---------------------------------------------------------------
commit 4d33851d7b08c55dbcdbde6f23bb8890d4ef94ba
Author: Marcel Fabian Krüger <tex at 2krueger.de>
Date: Mon Sep 16 23:35:56 2019 +0200
Small stuff
>---------------------------------------------------------------
4d33851d7b08c55dbcdbde6f23bb8890d4ef94ba
src/harf/harf-node.lua | 31 ++++++++++++++-----------------
1 file changed, 14 insertions(+), 17 deletions(-)
diff --git a/src/harf/harf-node.lua b/src/harf/harf-node.lua
index 80d97d5..d215e71 100644
--- a/src/harf/harf-node.lua
+++ b/src/harf/harf-node.lua
@@ -166,25 +166,24 @@ local function itemize(head, direction)
local currdir = direction or "TLT"
local currfontid = nil
- for n in direct.traverse(head) do
- local id = getid(n)
+ for n, id, subtype in direct.traverse(head) do
local code = 0xFFFC -- OBJECT REPLACEMENT CHARACTER
local script = sc_common
local skip = false
if id == glyphid then
currfontid = getfont(n)
- if getsubtype(n) > 255 then
+ if subtype > 255 then
skip = true
else
code = getchar(n)
script = getscript(code)
end
- elseif id == glueid and getsubtype(n) == spaceskip then
+ elseif id == glueid and subtype == spaceskip then
code = 0x0020 -- SPACE
elseif id == discid
- and (getsubtype(n) == explicitdisc -- \-
- or getsubtype(n) == regulardisc) -- \discretionary
+ and (subtype == explicitdisc -- \-
+ or subtype == regulardisc) -- \discretionary
then
code = 0x00AD -- SOFT HYPHEN
elseif id == dirid then
@@ -790,17 +789,15 @@ local function validate_color(s)
return s
end
-local function hex_to_rgba(s)
- if not validate_color(s) then return end
- local r = tonumber(s:sub(1, 2), 16) / 255
- local g = tonumber(s:sub(3, 4), 16) / 255
- local b = tonumber(s:sub(5, 6), 16) / 255
- if #s == 8 then
- local a = tonumber(s:sub(7, 8), 16) / 255
- -- XXX: alpha
- return format('%s %s %s rg', r, g, b)
- else
- return format('%s %s %s rg', r, g, b)
+local hex_to_rgba do
+ local hex = lpeg.R'09' + lpeg.R'AF' + lpeg.R'af'
+ local twohex = hex * hex / function(s) return tonumber(s, 16) / 255 end
+ local color_expr = twohex * twohex * twohex * twohex^-1 * -1
+ function hex_to_rgba(s)
+ local r, g, b, a = color_expr:match(s)
+ if r then
+ return format('%s %s %s rg', r, g, b)
+ end
end
end
More information about the latex3-commits
mailing list