summaryrefslogtreecommitdiff
path: root/luaotfload-colors.lua
diff options
context:
space:
mode:
authorPhilipp Gesang <phg42.2a@gmail.com>2013-12-30 15:06:39 +0100
committerPhilipp Gesang <phg42.2a@gmail.com>2013-12-30 15:06:39 +0100
commitd7cfaa20255c7f7d892731dbc7ba6f45bc225150 (patch)
treea125412b0d6269323bd317e6e51bbc9af4aa5ea1 /luaotfload-colors.lua
parent228ee5a14c55fd09a6caae6b5877fc375b696439 (diff)
parent1d6c958a29448b464b5a74dc42cc8ba9f219a4d0 (diff)
downloadluaotfload-d7cfaa20255c7f7d892731dbc7ba6f45bc225150.tar.gz
Merge branch 'master' of github:lualatex/luaotfload
Diffstat (limited to 'luaotfload-colors.lua')
-rw-r--r--luaotfload-colors.lua39
1 files changed, 20 insertions, 19 deletions
diff --git a/luaotfload-colors.lua b/luaotfload-colors.lua
index b5c1fb9..b8ecb87 100644
--- a/luaotfload-colors.lua
+++ b/luaotfload-colors.lua
@@ -126,19 +126,12 @@ registerotffeature {
--- something is carried around in ``res``
--- for later use by color_handler() --- but what?
-local res --- <- state of what?
+local res = nil
--- float -> unit
local function pageresources(alpha)
- local res2
- if not res then
- res = "/TransGs1<</ca 1/CA 1>>"
- end
- res2 = stringformat("/TransGs%s<</ca %s/CA %s>>",
- alpha, alpha, alpha)
- res = stringformat("%s%s",
- res,
- stringfind(res, res2) and "" or res2)
+ res = res or {}
+ res[alpha] = true
end
--- we store results of below color handler as tuples of
@@ -280,17 +273,25 @@ end
--- node -> node
local color_handler = function (head)
- -- check if our page resources existed in the previous run
- -- and remove it to avoid duplicating it later
- if res then
- local r = "/ExtGState<<" .. res .. ">>"
- tex.pdfpageresources = stringgsub(tex.pdfpageresources, r, "")
- end
local new_head = node_colorize(head, nil, nil)
-- now append our page resources
- if res and stringfind(res, "%S") then -- test for non-empty string
- local r = "/ExtGState<<" .. res .. ">>"
- tex.pdfpageresources = tex.pdfpageresources..r
+ if res then
+ res["1"] = true
+ local tpr, t = tex.pdfpageresources, ""
+ for k in pairs(res) do
+ local str = stringformat("/TransGs%s<</ca %s/CA %s>>", k, k, k)
+ if not stringfind(tpr,str) then
+ t = t .. str
+ end
+ end
+ if t ~= "" then
+ if not stringfind(tpr,"/ExtGState<<.*>>") then
+ tpr = tpr.."/ExtGState<<>>"
+ end
+ tpr = stringgsub(tpr,"/ExtGState<<","%1"..t)
+ tex.pdfpageresources = tpr
+ end
+ res = nil -- reset res
end
return new_head
end