Fontspec 및 Polyglossia를 사용하는 동안 lualatex의 글꼴 문제

Fontspec 및 Polyglossia를 사용하는 동안 lualatex의 글꼴 문제

나는 lualatex를 사용하여 힌디어와 영어가 혼합된 문서를 조판하려고 합니다. 다음 MWE가 작동합니다.

\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{hindi}
\setotherlanguage{english}
\usepackage{fontspec}
\newfontscript{Devanagari}{deva,dev2}
\newfontfamily{\devanagarifont}{Noto Serif Devanagari}[Scale=1.1,Script=Devanagari]
\newfontfamily{\englishfont}{Noto Serif}
\begin{document}
 
This is a test.
 
 यह एक परीक्षा है।
\end{document} 

올바른 출력을 제공합니다.

여기에 이미지 설명을 입력하세요

그런데 아래 MWE처럼 기본 언어를 영어로, 다른 언어를 힌디어로 변경하면

\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hindi}
\usepackage{fontspec}
\newfontscript{Devanagari}{deva,dev2}
\newfontfamily{\devanagarifont}{Noto Serif Devanagari}[Scale=1.1,Script=Devanagari]
\newfontfamily{\englishfont}{Noto Serif}
\begin{document}
 
This is a test.
 
 यह एक परीक्षा है।
\end{document} 

힌디어 문자는 표시되지 않습니다. 문제는 무엇입니까? 여기에 이미지 설명을 입력하세요

답변1

Polyglossia는 언어를 자동으로 감지하지 않습니다. (바벨에는 이 작업을 수행하는 명령이 있습니다.) \texthindi또는 로 선택하고 싶습니다 \textenglish. 귀하의 힌디어 글꼴도 영어를 지원하므로 이를 기본값으로 사용하면 작동합니다. 글꼴을 확인해 보면 지정한 영어 글꼴이 아닌 Devanagari 글꼴만 사용하고 있음을 알 수 있습니다.

언어를 전환하는 경우 소스 상단 근처에 다음 명령을 추가해야 합니다.

\tracinglostchars=3

이렇게 하면 자동으로 무시하는 대신(파일 중간에 메시지가 표시됨 .log) 현재 글꼴에 없는 문자 모양을 요청하는 것이 오류가 됩니다. 대신 를 사용하여 콘솔에서 경고로 전환할 수 있습니다 \tracinglostchars=2.

Babel을 사용한 다음 솔루션은 기본 언어를 영어로 설정하고 사용자가 입력하는 언어를 자동으로 감지합니다.

\documentclass{article}
\tracinglostchars=3
\usepackage[english, bidi=basic]{babel}
\usepackage{fontspec}

\babelprovide[import=hi, onchar=fonts ids]{hindi}

\babelfont{rm}
          [Ligatures={Common, TeX}]{Noto Serif}
\babelfont[hindi]{rm}
          [Scale=MatchUppercase]{Noto Serif Devanagari}

\begin{document}

This is a test.
 
यह एक परीक्षा है।
\end{document}

노토 세리프 샘플

\texthindi기존 소스가 또는 같은 명령을 사용하는 경우 Polyglossia와의 호환성을 \textdevanagari선언할 수도 있습니다 .\babeltags

관련 정보