diff --git a/entity.js b/entity.js index 01436fb..0fbfa72 100644 --- a/entity.js +++ b/entity.js @@ -1997,8 +1997,8 @@ function getEntities() { "ш": { "codepoints": [1096], "characters": "\u0448" }, "∣": { "codepoints": [8739], "characters": "\u2223" }, "∥": { "codepoints": [8741], "characters": "\u2225" }, - "­": { "codepoints": [173], "characters": "\u00AD" }, - "­": { "codepoints": [173], "characters": "\u00AD" }, + "­": { "codepoints": [173], "characters": "" }, + "­": { "codepoints": [173], "characters": "" }, "σ": { "codepoints": [963], "characters": "\u03C3" }, "ς": { "codepoints": [962], "characters": "\u03C2" }, "ς": { "codepoints": [962], "characters": "\u03C2" }, diff --git a/etc.c b/etc.c index 3d402c5..128717b 100644 --- a/etc.c +++ b/etc.c @@ -834,6 +834,15 @@ read_token(Str buf, char **instr, int *status, int pre, int append) if (**instr == '\0') return 0; for (p = *instr; *p; p++) { + /* Drop Unicode soft hyphen */ + if (*(unsigned char *)p == 0210 + && *(unsigned char *)(p + 1) == 0200 + && *(unsigned char *)(p + 2) == 0201 + && *(unsigned char *)(p + 3) == 0255) { + p += 3; + continue; + } + prev_status = *status; next_status(*p, status); switch (*status) { diff --git a/table.c b/table.c index 7479a82..9c47d08 100644 --- a/table.c +++ b/table.c @@ -3274,8 +3274,9 @@ feed_table(struct table *tbl, char *line, struct table_mode *mode, break; default: r = conv_entity(ec); - if (r != NULL && strlen(r) == 1 && - ec == (unsigned char)*r) { + if (!r || !*r) + break; + if (strlen(r) == 1 && ec == (unsigned char)*r) { Strcat_char(tmp, *r); break; } diff --git a/tests/allentity.expected b/tests/allentity.expected index b155746..cd93459 100644 --- a/tests/allentity.expected +++ b/tests/allentity.expected @@ -1726,7 +1726,7 @@ CounterClockwiseContourIntegral; ш 0x448 ш ш ш ∣ 0x2223 ∣ ∣ ∣ ∥ 0x2225 ∥ ∥ ∥ -­ 0xAD ­ +­ 0xAD σ 0x3C3 σ σ σ ς 0x3C2 ς ς ς ς 0x3C2 ς ς ς @@ -2125,7 +2125,7 @@ CounterClockwiseContourIntegral; » 0xBB » » » ® 0xAE ® ® ® § 0xA7 § § § -­ 0xAD ­ ­ +­ 0xAD ­ ¹ 0xB9 ¹ ¹ ¹ ² 0xB2 ² ² ² ³ 0xB3 ³ ³ ³ diff --git a/tests/allentity.html b/tests/allentity.html index 80dda78..0043a66 100644 --- a/tests/allentity.html +++ b/tests/allentity.html @@ -5184,7 +5184,7 @@ ∥0x2225∥∥∥ - ­0xAD­­­ + ­0xAD­­ σ0x3C3σσσ @@ -6379,7 +6379,7 @@ &sect0xA7§§§ - &shy0xAD­­­ + &shy0xAD­­ &sup10xB9¹¹¹