- // hyperref expects LICR with 8-bit TeX and LICR or utf8 with Xe/LuaTeX.
- // (LICR encoding is provided by lib/unicodesymbols, or "inputenc".)
- // FIXME: inputenc (part 1 of 2)
- // Replace the "FullUnicode" check with
- // check for loading of inputenc or luainputenc package.
- // Otherwise \inputencoding is not defined
- // (e.g. if "latex-encoding" is set to "ascii").
- // See also BufferParams::writeEncodingPreamble
- // and runparams.encoding->package()
- // Dont forget to keep the check below (part 2) in sync!
- if (need_unicode && enc && enc->iconvName() != "UTF-8"
- &&!runparams.isFullUnicode()) {
- os << "\\inputencoding{utf8}\n"
- << setEncoding("UTF-8");
+ // hyperref expects LICR macros for non-ASCII chars.
+ // Usually, "(lua)inputenc" converts the input to LICR, with XeTeX utf-8 works, too.
+ // As hyperref provides good coverage for \inputencoding{utf8}, we can try
+ // this if the current input encoding does not support a character.
+ // FIXME: don't use \inputencoding if "inputenc" is not loaded (#9839).
+ if (need_unicode && enc && enc->iconvName() != "UTF-8") {
+ if (runparams.flavor != OutputParams::XETEX)
+ os << "\\inputencoding{utf8}\n";
+ os << setEncoding("UTF-8");