更改 \hyphenchar 的字体

更改 \hyphenchar 的字体

我使用 Tex 处理泰卢固语和英语。当单词带连字符时,连字符(显然在泰卢固语字体中找不到)会显示为未定义符号。我想将其字体更改为英语,希望它能正确显示。我对默认拉丁语集中的许多其他符号也这样做。

这就是我的 tex 文件中的序言。

\documentclass[12pt, a4paper, onecolumn]{book}
%\documentclass{memoir}
\usepackage{fontspec}
\setmainfont{Lohit Telugu}
\usepackage{polyglossia}
\setmainlanguage{telugu}

%The following is a workaround to substitute the font or default latin characterset
%with an English one, since none of the current Telugu fonts contains that set.
\setotherlanguage{english}
\newfontfamily{\TelSubstFont}[Ligatures=TeX]{Lucida Grande}

\newfontfamily{\TitleFont}{RaviPrakash}

\XeTeXinterchartokenstate=1
\newXeTeXintercharclass\TelSubst

\count255="0000
\loop\ifnum\count255<"007F
  \XeTeXcharclass\count255=\TelSubst
  \advance\count255 by 1
\repeat


\XeTeXinterchartoks 0 \TelSubst = {\begingroup\TelSubstFont}
\XeTeXinterchartoks 255 \TelSubst = {\begingroup\TelSubstFont}
\XeTeXinterchartoks \TelSubst 0 = {\endgroup}
\XeTeXinterchartoks \TelSubst 255 = {\endgroup}

输出如下:

答案1

恐怕连字符是在“interchartoken”程序执行的工作之后插入的。因此,如果字体没有连字符,您就无能为力了。

连字符不一定位于正常位置:

\setmainfont[HyphenChar={xyzt}]{Lohit Telugu}

将使位置上的字符U+xyzt(四个或更多十六进制数字)成为用于连字符的字符。

相关内容