我想输入可能同时包含天城文或罗马文字的文本,并且不想每次在句子中间更改语言。是否可以将两种字体(一种支持天城文字形,一种支持罗马字形)合并为一种语言?
目前,我正在做
\setdefaultlanguage{sanskrit}
\newfontfamily\sanskritfont[Script=Devanagari]{NotoSansDevanagari-Regular}
由于NotoSansDevangari-Regular
没有罗马字符的字形,因此它会渲染该行
The ending हल् letter of an उपदेश is called 'इत्'.
作为
��� ������ हल् ������ �� �� उपदेश �� ������ 'इत्'.
是否有可能以某种方式在语言中添加,NotoSans-Regular
以便NotoSansDevanagari-Regular
它可以正确呈现两个脚本,而无需明确执行\begin{english}\end{english}
?
答案1
可以使用 来实现这一点babel
。只要您使用\textenglish
和\begin{sanskrit}
而不是\devanagarifont
,这个新的序言就应该适用于您的文档。它需要 luahbtex(TeX Live 2020 中的 lualatex 可以工作),但 xetex 有一个错误(截至 2020 年 7 月)。
\documentclass{article}
\tracinglostchars=2
\usepackage{iftex} % For \ifluahbtex, \ifxetex, etc.
\usepackage[paperwidth=10cm]{geometry} % Format the MWR for TeX.SX
\pagestyle{empty}
\ifluahbtex
\usepackage[bidi=basic,main=english]{babel}
\usepackage{fontspec}
\defaultfontfeatures{ Renderer=HarfBuzz,
Scale=MatchLowercase,
Ligatures=TeX }
\usepackage{microtype}
\else
% The only other engine that works, as of 2020, is XeTeX.
\usepackage[bidi=default,main=english]{babel}
\usepackage{fontspec}
\defaultfontfeatures{ Scale=MatchLowercase,
Ligatures=TeX }
\fi
\babelprovide[onchar=ids fonts]{sanskrit-devanagari}
\babelfont{rm}
[Ligatures=Common, Scale=1.0,Language=Default]{Noto Serif}
\babelfont{sf}
[Ligatures=Common,Language=Default]{Noto Sans}
\babelfont[sanskrit-devanagari]{rm}
{Noto Serif Devanagari}
\babelfont[sanskrit-devanagari]{sf}
[Language=Default]{Noto Sans Devanagari}
\babelfont{tt}
[Language=Default]{Noto Sans Devanagari UI}
\babeltags{sanskrit=sanskrit-devanagari} % Add \textsanskrit, \begin{sanskrit}
\babeltags{english=english} % Add \textenglish, \begin{englisn}
\begin{document}
\sffamily
The ending हल् letter of an उपदेश is called `इत्'.
\end{document}
回想一下,TeX 中的引号是
`foo ``bar" baz' or ‘foo “bar” baz’
答案2
看起来你正在使用 XeLaTeX。如果是这样,正如@kongo09 在这个问题,一个名为 works 的包ucharclasses
。这是 MWE:
\documentclass[xelatex]{article}
\usepackage{fontspec}
\newfontfamily{\defaultfont}{Times New Roman}
\newfontfamily{\latinfont}{Times New Roman}
\newfontfamily{\devanagarifont}{NotoSansDevanagari-Regular}
\usepackage[Latin, Devanagari]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsForLatin{\latinfont}{}
\setTransitionTo{Devanagari}{\devanagarifont}
\begin{document}
The ending हल् letter of an उपदेश is called 'इत्'.
\end{document}