]> git.lyx.org Git - features.git/commitdiff
Do not error on missing ZWNJ (ligature break) characters.
authorJuergen Spitzmueller <spitz@lyx.org>
Sun, 23 Jul 2017 16:41:06 +0000 (18:41 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Sat, 14 Oct 2017 15:52:42 +0000 (17:52 +0200)
Since TeXLive 2016, "fontspec" maps the ligature break command
\textcompwordmark to the ZWNJ character (U+200C).
This character is missing in many fonts (including the default: Latin
Modern) which leads to "Missing character" warnings in the XeTeX/LuaTeX
log file if a document using non-TeX fonts contains a ligature break.

LyX reports missing characters as error since fixing #9610.
In case of "invisible" characters, there is no data loss, in case of the
ZWNJ the functionality is kept: ligatures are prevented also if the ZWNJ
is missing in a font.

Therefore, a missing ZWNJ is now treated similar to missing characters
in "nullfont" (see [63f41711/lyxgit], bug #10394) and does not trigger
an error.

Fixes: #10727
(cherry picked from commit a40868510d36ccdcf3c431cdee17f8204d4b258a)

src/LaTeX.cpp
status.22x

index 46dda96a881777ea6fab519fb4666a86a712181d..f3465d17d069a839a1b024a8457ff5be0a74b6d4 100644 (file)
@@ -911,11 +911,18 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                                // Warning about missing glyph in selected font
                                // may be dataloss (bug 9610)
                                // but can be ignored for 'nullfont' (bug 10394).
-                               retval |= LATEX_ERROR;
-                               terr.insertError(0,
-                                                from_local8bit("Missing glyphs!"),
-                                                from_local8bit(token),
-                                                child_name);
+                               // as well as for ZERO WIDTH NON-JOINER (0x200C) which is
+                               // missing in many fonts and output for ligature break (bug 10727).
+                               // Since this error only occurs with utf8 output, we can safely assume
+                               // that the log file is utf8-encoded
+                               docstring const utoken = from_utf8(token);
+                               if (!contains(utoken, 0x200C)) {
+                                       retval |= LATEX_ERROR;
+                                       terr.insertError(0,
+                                                        from_ascii("Missing glyphs!"),
+                                                        utoken,
+                                                        child_name);
+                               }
                        }
                }
        }
index 25416e173044deed2f1321691c689a88726d32ce..9c1f2cc86a54c4002d16af0e3515dc6c3de19a1d 100644 (file)
@@ -49,6 +49,9 @@ What's new
 
 - Catch "! Incomplete \if[x]" LaTeX error (bug 10666).
 
+- Ignore LaTeX error on missing ZWNJ (ligature break) characters
+  (bug 10727).
+
 - Fix PDF output of clipped graphics with recent graphics package (bug 7910).
 
 - Catch xdvipdfmx driver error that breaks XeTeX compilation (bug 10076).