soul + destaque remove alguns caracteres do texto

soul + destaque remove alguns caracteres do texto

Aqui está um MWE:

\documentclass[a4paper,11pt]{article}
\usepackage{polyglossia}
\usepackage[normalem]{ulem}
\defaultfontfeatures{Ligatures=TeX}
\setmainlanguage{magyar}
\usepackage{color}
\usepackage{soul}

\begin{document}

árvíztűrő tükörfórógép

ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP

\hl{árvíztűrő tükörfórógép}

\hl{ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP}

\end{document}

Aqui estão algumas mensagens interessantes do log:

Missing character: There is no ű in font ectt1000!
Missing character: There is no ő in font ectt1000!
Missing character: There is no ű in font ectt1000!
Missing character: There is no Ű in font ectt1000!
Missing character: There is no Ő in font ectt1000!
Missing character: There is no Ű in font ectt1000!

Não sei por que ele está reclamando da fonte ectt1000. Pode-se ver claramente que o texto destacado e o texto normal utilizam a mesma fonte. Não vejo nenhuma mensagem de erro no log. (Nem avisos - mas esse tipo de renderização incorreta definitivamente deve gerar um erro!)

Aqui está a saída:

Saída

Responder1

Como você está usando xelatex/lualatex, você precisa de uma fonte de máquina de escrever de tipo aberto que contenha todos os glifos. Além disso, é necessário redefinir a largura padrão do hífen para esta fonte. No seu exemplo você pode usar Latin Modern Mono, mas se tiver outros scripts talvez precise de outro.

\documentclass[a4paper,11pt]{article}
\usepackage{fontspec}
\usepackage{color}
\usepackage{soul}
\makeatletter
\font\SOUL@tt="LMMono10-Regular"
\setbox\z@\hbox{\SOUL@tt-}
\SOUL@ttwidth\wd\z@ %reset default width of -
\makeatother
\begin{document}

árvíztűrő tükörfórógép

ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP

\hl{árvíztűrő tükörfórógép}

\hl{ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP}

\end{document}

insira a descrição da imagem aqui

informação relacionada