XeLaTeX 中孟加拉语的双引号无法正确显示

XeLaTeX 中孟加拉语的双引号无法正确显示

请参阅下面的 MWE。

\documentclass{article}

\usepackage{polyglossia}
\usepackage{fontspec}
% Bangla
\setmainlanguage[numerals=Devanagari]{bengali}
\newfontfamily\bengalifont[Script=Bengali,AutoFakeBold=4.0,AutoFakeSlant=0.4]{SolaimanLipi}
\newfontfamily\bengalifontbf[Script=Bengali,AutoFakeBold=4.0,AutoFakeSlant=0.4]{SolaimanLipi}
\newfontfamily\bengalifonttt[Script=Bengali,AutoFakeBold=4.0,AutoFakeSlant=0.4]{SolaimanLipi}
\newfontfamily\bengalifontsf[Script=Bengali,AutoFakeBold=4.0,AutoFakeSlant=0.4]{SolaimanLipi}

\setotherlanguage{english}
\defaultfontfeatures{Ligatures=TeX}

% Times New Roman used
\newfontfamily\englishfont[Mapping=tex-text, Ligatures=TeX]{Times New Roman}

\usepackage{csquotes}

\begin{document}

% LaTeX style quotes
``বাংলা ভাষা''

% Double quotes
"বাংলা ভাষা"

% Using package, produces incorrect results
\enquote{বাংলা ভাষা}

% English LaTeX style quotes
\textenglish{``Bengali Language''}

\end{document}

在此处输入图片描述

孟加拉语中的双引号要么显示不正确,要么根本没有显示。

英文版的很好用。

我该如何改善这种情况?

我对这个解决方案并不特别热衷\enquote。这会给我的大文档带来麻烦。如果可能的话,我想坚持使用 LaTeX 样式的双单引号。

(使用的字体可以在这里。

编辑1 根据评论中的建议,我将\defaultfontfeatures{Ligatures=TeX}行移到了行之前\newfontfamily\bengalifont。不幸的是,这产生了如下输出。

在此处输入图片描述

(我还删除了这些csquotes部分,因为这些不相关。)

没有任何关于缺少连字符或类似情况的警告信息。

答案1

\defaultfontfeatures在加载您想要应用的字体之前,您首先应该移动声明Ligatures=TeX

但是,如果字体没有所需的字形,您可以使用newunicodechar。您还可以定义孟加拉语引文样式。

\documentclass{article}

\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{csquotes}
\usepackage{newunicodechar}

\defaultfontfeatures{Ligatures=TeX}

% Bangla
\setmainlanguage[numerals=Devanagari]{bengali}

\newfontfamily\bengalifont{SolaimanLipi}[
  Script=Bengali,
  AutoFakeBold=4.0,
  AutoFakeSlant=0.4,
]

\setotherlanguage{english}
% Times New Roman used
\newfontfamily\englishfont{Times New Roman}

\newcommand{\testchar}[1]{\iffontchar\font`#1\relax#1\else\textenglish{#1}\fi}
\newunicodechar{“}{\testchar{“}}
\newunicodechar{”}{\testchar{”}}
\newunicodechar{‘}{\testchar{‘}}
\newunicodechar{’}{\testchar{’}}

\DeclareQuoteAlias{english}{bengali} % share the English style

\begin{document}

“বাংলা ভাষা”

\enquote{বাংলা ভাষা}

% English LaTeX style quotes
\textenglish{``Bengali Language''}

\textenglish{“Bengali Language”}

\end{document}

但是您需要使用

答案2

这更像是一条带有图片的评论。

查看字体的拉丁文方面,您可能需要添加其他字形。newunicodechar可能是最好的方法。

根据您需要做的事情、您的习惯以及涉及的键盘切换量(如果有的话),您还可以用孟加拉语定义命令,例如\let\ৡ\section\let\হ\tableofcontents,然后像平常一样使用它们,\হ\ৡ{কাকীকৌ}

请注意,SolaimanLipi 字体有粗体版本。

我尝试了一个实验,使用随机字母:

破折号引号和粗体

平均能量损失

\documentclass[12pt]{article}
\usepackage{xcolor}
\pagecolor{red!3}
\usepackage{fontspec}

\setmainfont[Script=Bengali]{SolaimanLipi}
\newfontfamily\fpunct{Noto Serif}
\newfontfamily\fdev{Noto Serif Devanagari}

\usepackage{polyglossia}
\setdefaultlanguage[numerals=Bengali,
changecounternumbering=true]{bengali}
\setotherlanguages{english}

\newcommand\bqql{{\fpunct “\thinspace}}
\newcommand\bqqr{{\fpunct\thinspace ”}}
\newcommand\bql{{\fpunct ‘\thinspace}}
\newcommand\bqr{{\fpunct\thinspace ’}}
\newcommand\bc{{\fpunct ,}}
\newcommand\bend{{\fpunct\textendash\ }}
\newcommand\bemd{{\fpunct\textemdash\  }}
\newcommand\bdanda{{\fdev ।\thinspace}}
\newcommand\bddanda{{\fdev ॥\thinspace}}

\let\ৡ\section
\let\হ\tableofcontents
\let\ন\bend
\let\ম\bemd
\let\ড\bdanda
\let\ডড\bddanda

\begin{document}
{\fpunct\small Just to try out the mechanics of the process:}

\হ
\vspace{1ex}
\hrule
\vspace{1ex}

\ৡ{রষেধৗস}
অকথষোধৈঘৄঙী \ন অকথষো \bqql ধৈঘৄঙী\bqqr\  অকথষো \ম\bql ধৈ\bqr\ \ম ঘৄঙী \ড

\noindent\textbf{অকথষোধৈঘৄঙী \ন অকথষো \bqql ধৈঘৄঙী\bqqr\  অকথষো \ম\bql ধৈ\bqr\ \ম ঘৄঙী \ড}
\ৡ{কাকীকৌ}
কাকীকৌ \ড \\
কাকীকৌ \ডড
\end{document}

更正

寻找\section等的包命令(例如像在 中titletoc)将找不到\ৡ,因此一种方法是修补所有内容,或者,继续使用\section并照常交换键盘。

例如,在目录中为章节编号添加阴影时:

tikz 部分编号

MWE2:

\documentclass[12pt]{article}
\usepackage{xcolor}
\pagecolor{red!3}
\usepackage{fontspec}

\setmainfont[Script=Bengali]{SolaimanLipi}
\newfontfamily\fpunct{Noto Serif}
\newfontfamily\fdev{Noto Serif Devanagari}

\usepackage{polyglossia}
\setdefaultlanguage[numerals=Bengali,
changecounternumbering=true]{bengali}
\setotherlanguages{english}

\newcommand\bqql{{\fpunct “\thinspace}}
\newcommand\bqqr{{\fpunct\thinspace ”}}
\newcommand\bql{{\fpunct ‘\thinspace}}
\newcommand\bqr{{\fpunct\thinspace ’}}
\newcommand\bc{{\fpunct ,}}
\newcommand\bend{{\fpunct\textendash\ }}
\newcommand\bemd{{\fpunct\textemdash\  }}
\newcommand\bdanda{{\fdev ।\thinspace}}
\newcommand\bddanda{{\fdev ॥\thinspace}}

\let\ৡ\section
\let\হ\tableofcontents
\let\ন\bend
\let\ম\bemd
\let\ড\bdanda
\let\ডড\bddanda

\usepackage{tikz}
\usetikzlibrary{shadows.blur}

\newcommand\bframe[1]{%
\begin{tikzpicture}
\node [shade,
      top color=red!40,
      bottom color=violet!5,
      rounded corners=2pt,
      blur shadow={shadow blur steps=5,violet}
    ] {#1};
      \end{tikzpicture}%
}

\usepackage{titlesec}
\titleformat{\section}{\large}{\bframe{\thesection}}{0.75em}{}

\usepackage{titletoc}
\titlecontents{section}
[1em]%left
{}%abovecode
{\bframe{\thecontentslabel}\hspace{0.75em}}%numbered format
{\huge}%numberless format
{\titlerule*[1pc]{.}\contentspage} % page number
[]%belowcode

\begin{document}

\হ
\vspace{1ex}
\hrule
\vspace{1ex}

\section{রষেধৗস}
অকথষোধৈঘৄঙী \ন অকথষো \bqql ধৈঘৄঙী\bqqr\  অকথষো \ম\bql ধৈ\bqr\ \ম ঘৄঙী \ড

\noindent\textbf{অকথষোধৈঘৄঙী \ন অকথষো \bqql ধৈঘৄঙী\bqqr\  অকথষো \ম\bql 
\begin{tikzpicture}
\node [shade,
      top color=blue!40,
      bottom color=blue!5,
      rounded corners=2pt,
      blur shadow={shadow blur steps=5}
    ] {ধৈ};
      \end{tikzpicture}
\bqr\ \ম ঘৄঙী \ড}
\section{কাকীকৌ}
কাকীকৌ \ড \\
কাকীকৌ \ডড
\end{document}

相关内容