Lulatex-유니 코드 문자 오류
Devnagari와 Latin 글꼴을 모두 사용하는 \ LaTeX 문서를 사용하고 있습니다.
사용되는 명령은 다음과 같습니다. lualatex -shell-escape -interaction nonstopmode
그러나 적절한 글꼴을 선택 했음에도 불구하고. 최소 코드는 다음과 같습니다.
나는 또한 polyglossia 패키지를 사용해 보았습니다. https://tex.stackexchange.com/a/24731/50653),하지만 여전히 차이는 없습니다.
\documentclass[10pt]{article}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hindi}
% From https://tex.stackexchange.com/a/37251
\usepackage{fontspec}
\setmainfont{Noto Serif} % sets the roman font
\setsansfont{Noto Sans} % sets the sans font
\setmonofont{Fira Code} % sets the monospace font
\defaultfontfeatures{Ligatures=TeX} % makes this a feature for all selected fonts
\newfontfamily\hindifont[Script=Devanagari]{Noto Serif Devanagari}
\newfontfamily\hindifontsf[Script=Devanagari]{Noto Sans Devanagari}
\begin{document}
All the places marked with red triangles are \emph{sites} from which archaeologists have found evidence of hunter-gatherers. (Hunter-gatherers lived in many more places. Only some are shown on the map). Many sites were located near sources of water, such as rivers and lakes.
येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।
\end{document}
얻은 결과는 다음과 같습니다.
데바 나가리 캐릭터도 렌더링 될 것으로 예상하고 있습니다.
나는 또한 일찍 시도했다
\documentclass[10pt]{article}
\usepackage[hindi, english]{babel}
% From https://tex.stackexchange.com/a/37251
\usepackage{fontspec}
\setmainfont{Noto Serif} % sets the roman font
\setsansfont{Noto Sans} % sets the sans font
\setmonofont{Fira Code} % sets the monospace font
\defaultfontfeatures{Ligatures=TeX} % makes this a feature for all selected fonts
\begin{document}
All the places marked with red triangles are \emph{sites} from which archaeologists have found evidence of hunter-gatherers. (Hunter-gatherers lived in many more places. Only some are shown on the map). Many sites were located near sources of water, such as rivers and lakes.
येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।
\end{document}
답변
여기에는 두 가지 문제가 있습니다. 주요 문제는 선택한 글꼴에 문제의 문자가 포함되어 있지 않다는 것입니다. 다른 문제는 스크립트를 명시 적으로 지정하지 않고 fontspec fontloading 명령을 사용하고 언어는 기본적으로 라틴어 스크립트로 설정되어 있지 않다는 것입니다. 올바르게 스크립트.
fontspec의 올바른 스크립트 / 언어 매개 변수에 대해 걱정하고 싶지 않다면 babel의 fontspec 래퍼 \babelfont를 사용하여 언어에 맞는 글꼴을 지정할 수 있습니다. 이 (특히 작업에 대한 언어 별의 형성에 대해) 제대로 작동하려면 당신은 언어 사용하여 문서의 변경 표시해야한다 \selectlanguage, \foreignlanguage또는 otherlanguage/ otherlanguage*환경. 다른 언어로 전체 단락을 작성하는 경우 사용할 수 있습니다 . \selectlanguage{new-language}단락의 일부에 사용할 수 있습니다 \foreignlanguage{new-language}{text-in-new-language}.
이 모든 것에 대한 자세한 내용은 babel 매뉴얼 , 섹션 1.2 (다국어 문서), 섹션 1.7 & 1.8 (기본 / 보조 언어 선택기) 및 섹션 1.14 (글꼴 선택)에서 찾을 수 있습니다.
\documentclass[10pt]{article}
\usepackage[hindi, english]{babel}
\babelfont{rm}{Noto Serif} % sets the roman font
\babelfont{sf}{Noto Sans} % sets the sans font
\babelfont{tt}{Fira Code} % sets the monospace font
\babelfont[hindi]{rm}{Noto Serif Devanagari}
\babelfont[hindi]{sf}{Noto Sans Devanagari}
\begin{document}
All the places marked with red triangles are \emph{sites} from which archaeologists have found evidence of hunter-gatherers. (Hunter-gatherers lived in many more places. Only some are shown on the map). Many sites were located near sources of water, such as rivers and lakes.
\foreignlanguage{hindi}{येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।}
More English.
\selectlanguage{hindi}
येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए। येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।
येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए। येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।
येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए। येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।
\selectlanguage{english}
And English again.
\end{document}
Davislor가 의견에서 언급했듯이 다음은 매우 현대적인 TeX 설치 (2020 년 2 월 이후에 업데이트 됨)가 필요하므로 다른 시스템에서 문서를 컴파일하려고하면 시스템에서 작동하지 않거나 중단 될 수 있습니다.
정말로 그러한 언어 전환 명령을 삽입 할 수 없다면 모든 스크립트 시스템에서 하나의 언어 만 사용하고 Devanagari 텍스트에서 적절한 단락 간격에 신경 쓰지 않는 경우 (예 : 대부분 라틴어이기 때문에) 다음을 사용할 수도 있습니다 onchar=ids fonts. Replace
\usepackage[hindi, english]{babel}
와
\usepackage[english]{babel}
\babelprovide[import, onchar=ids fonts]{hindi}
그런 다음 babel은 Devanagari 문자를 만나면 자동으로 글꼴 및 하이픈 패턴을 힌디어로 전환합니다. (물론, 당신은 전환 할 수 있습니다 english그리고 hindi당신은 대부분 힌디어 텍스트가있는 경우.)
TeX.SX에 오신 것을 환영합니다!
LuaTeX 셰이퍼 dev2는 인도어 스크립트에 약간 문제가 있었지만 다음에 deva언급 된대로 다른 버전이 호출 되었습니다.https://tex.stackexchange.com/a/362738/90407. 그러나 최근 LuaTeX는 기본 제공되는 것 대신 HarfBuzz 셰이퍼를 사용하도록 추가로 지원합니다. 약간의 차이는 있지만 두 변형 모두 비슷한 결과를 제공해야합니다. 두 경우 모두 새 글꼴 패밀리에 대한 글꼴 스위치를 만들어야합니다. polyglossia를 사용하여 sans-serif와 serif 사이의 모든 글꼴 전환을 자동으로 처리 할 다른 언어를 추가하고 해당 언어에 대한 새 글꼴 모음을 정의 할 수 있습니다.
LuaTeX deva
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hindi}
\usepackage{fontspec}
% define Devanagari script using `deva' backend
\newfontscript{Devanagari}{deva,dev2}
\setmainfont{Noto Serif}
\setsansfont{Noto Sans}
% Create font switches for Devanagari font
% These are hard-coded into polyglossia, if we name them differently
% we get:
% Package polyglossia Error: The current latin font [...] does
% not contain the "Devanagari" script!
% Please define \devanagarifont with \newfontfamily command.
\newfontfamily{\devanagarifont}{Noto Serif Devanagari}[Script=Devanagari]
\newfontfamily{\devanagarifontsf}{Noto Sans Devanagari}[Script=Devanagari]
\defaultfontfeatures{Ligatures=TeX}
\begin{document}
All the places marked with red triangles are \emph{sites} from which archaeologists have found evidence of hunter-gatherers. (Hunter-gatherers lived in many more places. Only some are shown on the map). Many sites were located near sources of water, such as rivers and lakes.
\texthindi{येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।}
All the places marked with red triangles are \emph{sites} from which archaeologists have found evidence of hunter-gatherers. (Hunter-gatherers lived in many more places. Only some are shown on the map). Many sites were located near sources of water, such as rivers and lakes.
\texthindi{\textsf{येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।}}
\end{document}
결과는 다음과 같습니다.
HarfBuzz가있는 LuaTeX (LuaHBTeX)
또는 새 스크립트를 정의하지 않고 HarfBuzz에게 무거운 작업을 요청합니다.
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\setsansfont{Noto Sans}
% Create font switches for Devanagari font
% These are hard-coded into polyglossia, if we name them differently
% we get:
% Package polyglossia Error: The current latin font [...] does
% not contain the "Devanagari" script!
% Please define \devanagarifont with \newfontfamily command.
\newfontfamily{\devanagarifont}{Noto Serif Devanagari}[Script=Devanagari,Renderer=Harfbuzz]
\newfontfamily{\devanagarifontsf}{Noto Sans Devanagari}[Script=Devanagari,Renderer=Harfbuzz]
\defaultfontfeatures{Ligatures=TeX}
\begin{document}
All the places marked with red triangles are \emph{sites} from which archaeologists have found evidence of hunter-gatherers. (Hunter-gatherers lived in many more places. Only some are shown on the map). Many sites were located near sources of water, such as rivers and lakes.
\texthindi{येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।}
All the places marked with red triangles are \emph{sites} from which archaeologists have found evidence of hunter-gatherers. (Hunter-gatherers lived in many more places. Only some are shown on the map). Many sites were located near sources of water, such as rivers and lakes.
\texthindi{\textsf{येह एक प्रयोग है हिन्दी की लिखावट देखने के लिए।}}
\end{document}
결과 :
내 브라우저 렌더링을 참조로 생각하면 괜찮아 보입니다.
적절한 간격에 신경 쓰지 않는다면 다음과 같은 방식으로 폴리 글로시 아없이이를 수행 할 수 있습니다.
\usepackage[Devanagari]{ucharclasses}
\setTransitionsFor{Devanagari}{\devanagarifont}
그러나 이렇게하면 글꼴 만 전환되고 폴리 글로시 아로 구현 된 다른 언어 조정은 제거됩니다.