如何使用 ucharclasses 和 xelatex 指定上标字体

如何使用 ucharclasses 和 xelatex 指定上标字体

我在 Xelatex 中使用的 Lohit Tamil Classical 字体没有上标 4 的字形。(请参阅https://github.com/pravins/lohit/issues/68

我曾尝试使用 ucharclasses 自动切换上标的不同字体,但是不起作用。

以下是我在序言中的内容:

\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\setmainlanguage{english}
\setotherlanguage{tamil}
\setmainfont{FreeSerif}[Scale=1]
\newfontfamily{\englishfont}[Scale=1.05]{FreeSerif}
\newfontfamily{\tamilfont}[Scale=1,Script=Tamil,Language=Tamil]{FreeSerif}
\newfontfamily{\tamilfont}[Scale=1,Script=Tamil]{Lohit Tamil Classical}

\usepackage[Latin, Tamil, SuperscriptsandSubscripts]{ucharclasses}
\setTransitionTo{SuperscriptsandSubscripts}{\normalfont}
\setTransitionFrom{SuperscriptsandSubscripts}{\tamilfont}
\setTransitionTo{Tamil}{\tamilfont}
\setTransitionFrom{Tamil}{\normalfont}
\setTransitionsFor{Latin}
  {\hyphenrules{english}\normalfont}
  {\hyphenrules{sanskrit}\tamilfont}
\setTransitionsFor{Tamil}
  {\hyphenrules{sanskrit}\tamilfont}
  {\hyphenrules{english}\normalfont}
%

以下是文档中的一段文本示例。

\section{அத² ஷட³ஸ்த்ரிம்ஶ: படல:}

ஶ்ரீஆனந்த³பை⁴ரவீ உவாச
அத² காந்த ப்ரவக்ஷ்யாமி குண்ட³லீசேதனாதி³கம் ।
ஸஹஸ்ரநாமஸகலம் குண்ட³லின்யா: ப்ரியம் ஸுக²ம் ॥ 36-1॥

அஷ்டோத்தரம் மஹாபுண்யம் ஸாக்ஷாத் ஸித்³தி⁴ப்ரதா³யகம் ।
தவ ப்ரேமவஶேனைவ கத²யாமி ஶ்ருʼணுஷ்வ தத் ॥ 36-2॥

编辑:

这是 MWE,请告诉我如何让它显示 4 上标。谢谢!

\documentclass[a5paper,11pt,twoside,onecolumn,openany,final]{memoir}
\usepackage[a5paper,hmargin=0.7in,vmargin=0.75in]{geometry}
\usepackage{multicol,polyglossia,fontspec,etoolbox}
%
\defaultfontfeatures{Mapping=tex-text}
\setmainlanguage{english}
\setotherlanguage{tamil}
\setmainfont{FreeSerif}[Scale=1]
\newfontfamily{\englishfont}[Scale=1.05]{FreeSerif}
\newfontfamily{\tamilfont}[Scale=1,Script=Tamil]{Lohit Tamil Classical}
%
\usepackage[Latin, Tamil]{ucharclasses}
\setTransitionTo{SuperscriptsandSubscripts}{\normalfont}
\setTransitionFrom{SuperscriptsandSubscripts}{\tamilfont}
\setTransitionTo{Tamil}{\tamilfont}
\setTransitionFrom{Tamil}{\normalfont}
\setTransitionsFor{Latin}
  {\hyphenrules{english}\normalfont}
  {\hyphenrules{tamil}\tamilfont}
\setTransitionsFor{Tamil}
  {\hyphenrules{tamil}\tamilfont}
  {\hyphenrules{english}\normalfont}
%
\begin{document}
\section{அத² ஷட³ஸ்த்ரிம்ஶ: படல:}

ஶ்ரீஆனந்த³பை⁴ரவீ உவாச
அத² காந்த ப்ரவக்ஷ்யாமி குண்ட³லீசேதனாதி³கம் ।
ஸஹஸ்ரநாமஸகலம் குண்ட³லின்யா: ப்ரியம் ஸுக²ம் ॥ 36-1॥

அஷ்டோத்தரம் மஹாபுண்யம் ஸாக்ஷாத் ஸித்³தி⁴ப்ரதா³யகம் ।
தவ ப்ரேமவஶேனைவ கத²யாமி ஶ்ருʼணுஷ்வ தத் ॥ 36-2॥

வினா யஜனயோகே³ன வினா த்⁴யானேன யத்ப²லம் ।
தத்ப²லம் லப⁴தே ஸத்³யோ வித்³யாயா: ஸுக்ருʼபா ப⁴வேத் ॥ 36-3॥
\end{document}

答案1

该选项是SuperscriptsAndSubscripts(注意大写的 A)。

这里我使用了我机器上的泰米尔字体。

对于上标的转换,最好使用\begingroup\normalfont\endgroup,这样它将独立于上下文工作。

\documentclass{article}
\usepackage{fontspec,polyglossia}
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\setmainlanguage{english}
\setotherlanguage{tamil}
\setmainfont{FreeSerif}[Scale=1]
\newfontfamily{\englishfont}[Scale=1.05]{FreeSerif}
\newfontfamily{\tamilfont}[Scale=1,Script=Tamil,Language=Tamil]{InaiMathi}
%\newfontfamily{\tamilfont}[Scale=1,Script=Tamil]{Lohit Tamil Classical}

\usepackage[Latin, Tamil, SuperscriptsAndSubscripts]{ucharclasses}
\setTransitionTo{SuperscriptsAndSubscripts}{\begingroup\normalfont}
\setTransitionFrom{SuperscriptsAndSubscripts}{\endgroup}

\setTransitionTo{Tamil}{\tamilfont}
\setTransitionFrom{Tamil}{\normalfont}
\setTransitionsFor{Latin}
  {\hyphenrules{english}\normalfont}
  {\hyphenrules{sanskrit}\tamilfont}
\setTransitionsFor{Tamil}
  {\hyphenrules{sanskrit}\tamilfont}
  {\hyphenrules{english}\normalfont}
%

\begin{document}

\section{அத² ஷட³ஸ்த்ரிம்ஶ: படல:}

ஶ்ரீஆனந்த³பை⁴ரவீ உவாச
அத² காந்த ப்ரவக்ஷ்யாமி குண்ட³லீசேதனாதி³கம் ।
ஸஹஸ்ரநாமஸகலம் குண்ட³லின்யா: ப்ரியம் ஸுக²ம் ॥ 36-1॥

அஷ்டோத்தரம் மஹாபுண்யம் ஸாக்ஷாத் ஸித்³தி⁴ப்ரதா³யகம் ।
தவ ப்ரேமவஶேனைவ கத²யாமி ஶ்ருʼணுஷ்வ தத் ॥ 36-2॥

\end{document}

在此处输入图片描述

相关内容