是否可以为特定的 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 漢字源