[latex3-commits] [git/LaTeX3-latex3-luaotfload] harfnode-dev: Don't cache color values (1bbb2db)
Marcel Fabian Krüger
tex at 2krueger.de
Sat Oct 19 01:16:44 CEST 2019
Repository : https://github.com/latex3/luaotfload
On branch : harfnode-dev
Link : https://github.com/latex3/luaotfload/commit/1bbb2db33740df01f2940bf3e7907de11ee5b7d9
>---------------------------------------------------------------
commit 1bbb2db33740df01f2940bf3e7907de11ee5b7d9
Author: Marcel Fabian Krüger <tex at 2krueger.de>
Date: Sat Oct 19 01:16:44 2019 +0200
Don't cache color values
>---------------------------------------------------------------
1bbb2db33740df01f2940bf3e7907de11ee5b7d9
src/luaotfload-harf-plug.lua | 57 ++++++++++++++++++++------------------------
1 file changed, 26 insertions(+), 31 deletions(-)
diff --git a/src/luaotfload-harf-plug.lua b/src/luaotfload-harf-plug.lua
index 356dc0b..d639a0f 100644
--- a/src/luaotfload-harf-plug.lua
+++ b/src/luaotfload-harf-plug.lua
@@ -670,45 +670,40 @@ for i, glyph in ipairs(glyphs) do
if palette then
local layers = fontglyph.layers
if layers == nil then
- layers = hbface:ot_color_glyph_get_layers(gid)
- if layers then
- local cmds = {} -- Every layer will add 5 cmds
- local prev_color = nil
- for j = 1, #layers do
- local layer = layers[j]
- local layerchar = characters[gid_offset + layer.glyph]
- if layerchar.height > character.height then
- character.height = layerchar.height
- end
- if layerchar.depth > character.depth then
- character.depth = layerchar.depth
- end
- -- color_index has a special value, 0x10000, that mean use text
- -- color, we don’t check for it here explicitly since we will
- -- get nil anyway.
- local color = palette[layer.color_index]
- cmds[5*j - 4] = (color and not prev_color) and save_cmd or nop_cmd
- cmds[5*j - 3] = prev_color == color and nop_cmd or (color and {"pdf", "text", color_to_rgba(color)} or restore_cmd)
- cmds[5*j - 2] = push_cmd
- cmds[5*j - 1] = {"char", layer.glyph + gid_offset}
- cmds[5*j] = pop_cmd
- fontglyphs[layer.glyph].used = true
- prev_color = color
- end
- cmds[#cmds + 1] = prev_color and restore_cmd
- layers = cmds
- else
- layers = false
- end
+ layers = hbface:ot_color_glyph_get_layers(gid) or false
fontglyph.layers = layers
end
if layers then
+ local cmds = {} -- Every layer will add 5 cmds
+ local prev_color = nil
+ for j = 1, #layers do
+ local layer = layers[j]
+ local layerchar = characters[gid_offset + layer.glyph]
+ if layerchar.height > character.height then
+ character.height = layerchar.height
+ end
+ if layerchar.depth > character.depth then
+ character.depth = layerchar.depth
+ end
+ -- color_index has a special value, 0x10000, that mean use text
+ -- color, we don’t check for it here explicitly since we will
+ -- get nil anyway.
+ local color = palette[layer.color_index]
+ cmds[5*j - 4] = (color and not prev_color) and save_cmd or nop_cmd
+ cmds[5*j - 3] = prev_color == color and nop_cmd or (color and {"pdf", "text", color_to_rgba(color)} or restore_cmd)
+ cmds[5*j - 2] = push_cmd
+ cmds[5*j - 1] = {"char", layer.glyph + gid_offset}
+ cmds[5*j] = pop_cmd
+ fontglyphs[layer.glyph].used = true
+ prev_color = color
+ end
+ cmds[#cmds + 1] = prev_color and restore_cmd
if not character.colored then
local coloredcharacter = {}
for k,v in next, character do
coloredcharacter[k] = v
end
- coloredcharacter.commands = layers
+ coloredcharacter.commands = cmds
local newcharacters = {[gid + 0x130000] = coloredcharacter}
characters[gid + 0x130000] = coloredcharacter
if char ~= gid + gid_offset then
More information about the latex3-commits
mailing list