end
while p and p~=box_end do
local pid = p.id
- if pid==id_kern then
- if p.subtype==2 then
- p = node_next(node_next(node_next(p))); pid = p.id
- elseif IC_PROCESSED == has_attr(p, attr_icflag) then
- p = node_next(p); pid = p.id
- end
- end
+ if pid==id_kern and p.subtype==2 then
+ p = node_next(node_next(node_next(p))); pid = p.id -- p must be glyph_node
+ end
if pid==id_glyph then
repeat
if find_first_char then
last_char = p; found_visible_node = true; p=node_next(p)
if (not p) or p==box_end then return found_visible_node end
until p.id~=id_glyph
- pid = p.id
+ pid = p.id -- p must be non-nil
end
- if pid==id_hlist then
+ if pid==id_kern and has_attr(p, attr_icflag)==IC_PROCESSED then
+ p = node_next(p);
+ elseif pid==id_hlist then
if PACKED == has_attr(p, attr_icflag) then
if find_first_char then
first_char = p.head; find_first_char = false