나는 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