Hi,
as recently discussed on the luatex list there is an issue regarding
hyphenation ehn a frozen glyph appears next to an explicit hyphenation
character. E.g.
\setbox0\hbox{X}
X-\unhbox0
\bye
triggers an assertion error. I noticed that with the latest experimental
code a TeX error is triggered instead but IMO this should not be an
error. Therefore I suggest to fix this by treating glyph nodes failing
is_simple_character just like non-glyph nodes, e.g. with
---
source/texk/web2c/luatexdir/lang/texlang.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/texk/web2c/luatexdir/lang/texlang.c b/source/texk/web2c/luatexdir/lang/texlang.c
index 48a242fa0..e7635903a 100644
--- a/source/texk/web2c/luatexdir/lang/texlang.c
+++ b/source/texk/web2c/luatexdir/lang/texlang.c
@@ -1049,7 +1049,7 @@ void hnj_hyphenation(halfword head, halfword tail)
if (explicit_hyphen == true) {
/*tex we are not at the start, so we only need to look ahead */
halfword t = vlink(r) ;
- if ((automatic_hyphen_mode_par == 0 || automatic_hyphen_mode_par == 1) && (t != null) && ((type(t) == glyph_node) && (character(t) != ex_hyphen_char_par))) {
+ if ((automatic_hyphen_mode_par == 0 || automatic_hyphen_mode_par == 1) && (t != null) && ((type(t) == glyph_node) && is_simple_character(t) && (character(t) != ex_hyphen_char_par))) {
/*tex we have a word already but the next character may not be a hyphen too */
r = compound_word_break(r, char_lang(r));
if (compound_hyphen) {
@@ -1063,7 +1063,7 @@ void hnj_hyphenation(halfword head, halfword tail)
}
} else {
/*tex we jump over the sequence of hyphens */
- while ((t != null) && (type(t) == glyph_node) && (character(t) == ex_hyphen_char_par)) {
+ while ((t != null) && (type(t) == glyph_node) && is_simple_character(t) && (character(t) == ex_hyphen_char_par)) {
r = t ;
t = vlink(r) ;
}
--
2.29.2
Best regards,
Marcel