为整个 Unicode 范围定义后备字体

为整个 Unicode 范围定义后备字体

是否可以为特定的 Unicode 范围自动定义 fallback fonts ?

我知道有软件包可以做到这一点,例如xeCJK针对 CJK 字体的软件包 回答

但这仅限于那些字体。我对孟加拉语特别感兴趣,但也许还有更通用的方法。

我知道问题是我可以定义特定的 unicode 后备字符。例如,我曾将其用于 IPA 字符。当然,我可以使用相同的机制,输入每个孟加拉语字符(幸运的是只有 128 个)作为后备字符。但如果有一种更简单的方法可以做到这一点,那就太好了,例如指定代码点 A 到 B 的范围使用字体 X,代码点 C 到 D 的范围使用字体 Y,依此类推。

例如,孟加拉语的 Unicode 范围是从 U+0980 到 U+09FF(参见这里)所以如果有办法指定:

  • 对于 Unicode 范围 U+0980 到 U+09FF,使用孟加拉字体,
  • 对于 U+0250 到 U+02AF,使用 IPA 兼容字体

等等。

% !TEX TS-program = xelatexmk
\documentclass{article}

% The standard way of typing Bengali text within a document
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{bengali}
\newfontfamily\bengalifont[Script=Bengali, Scale=MatchLowercase]{Bangla MN}

% Defining individual fallback characters
\usepackage{newunicodechar}
\newfontfamily{\fallbackfont}{Junicode}[Scale=MatchLowercase]
\DeclareTextFontCommand{\textfallback}{\fallbackfont}
\newcommand{\fallbackchar}[2][\textfallback]{%
    \newunicodechar{#2}{#1{#2}}}
 \fallbackchar{ʤ}
 \fallbackchar{ʧ}

% Package for CJK fonts
\usepackage[fallback]{xeCJK}
\setCJKmainfont{SimHei}
\setCJKfallbackfamilyfont{rm}{SimHei} 

\begin{document} 

Latin text and Bengali text \textbengali{নাম হাতটা কাছে দারাতে হবে} and Latin again. 

Latin text and Bengali text নাম হাতটা কাছে দারাতে হবে and Latin again. 

Some phonetic characters ʤ in yet another font ʧ. 

CJK example 漢字源

相关内容