我正在使用fontspec
帶有LuaLaTeX
.我很好奇是否有一種方法可以預設自動設定小寫字母中的數字,類似於預設情況下透過套件選項設定 OldStyle/小寫字母中的fontspec
數字Numbers=OldStyle
或Numbers=Lowercase
注意:並非所有字體都支援小型大寫字母數字。我在 MWE 中使用支援小型大寫數字的免費字體。
我問這個問題的動機是,我目前正在測試用小寫字母排版數字是否比通常的大寫、等寬數字更容易或更容易閱讀。如果有一種更簡單的方法來輸出小寫字母的數字那就太好了。
\documentclass{article}
\newcommand{\alphabet}{abcdefghijklmnopqrstuvwxyz}
\newcommand{\digits}{0123456789}
\usepackage{fontspec}
\setmainfont{Source Serif Pro}%Available for free on Google Fonts.
[
%Numbers=OldStyle%
%Numbers=Lowercase%
]
\begin{document}
\textbf{Regular letters and digits:}
\par
\alphabet\quad\digits
\par
\textbf{Small caps letters and digits:}
\par
\textsc{\alphabet\quad\digits}
\par
\textbf{Regular letters and Oldstyle digits:}
\par
\alphabet\quad\oldstylenums{\digits}
\end{document}
編輯2:我正在尋找一種解決方案,如果可能的話,使數字顯示為小寫字母預設情況下無需使用\textsc
或任何其他文字巨集。因此,\textsc{1234}
和1234
應該看起來相同。當然,如果這是不可能的,我總是可以依靠製作文字巨集。
答案1
因此,您所追求的是與小型大寫字母大小相匹配的數字(據我所知,這實際上並沒有名稱,因為術語“小型大寫字母”通常僅用於字母),但無論如何您都希望它們以這種樣式列印文字的周圍風格。
您可以fontspec
透過選項選擇特定的 OpenType 功能RawFeature=+xxxx
,其中xxxx
是相關 OpenType 功能的縮寫。因此,您RawFeature=+smcp
通常可以選擇啟用小型大寫字母。遺憾的是,Source Sans Pro 不包含允許您僅選擇這些小數字而不影響其他字母的功能,另一方面,似乎無法直接只為使用 的數字選擇此類功能fontspec
。
但是,您可以fonts.handlers.otf.addfeature
透過自己的自訂 OpenType 功能來使用和增強字體,然後將其與fontspec
.在下面的範例中,我建立了用小型大寫字母變體取代數字字形的功能xnum
(不過,您需要在字體中尋找相關的字形名稱):
\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.handlers.otf.addfeature {
name = "xnum",
type = "substitution",
data = {
["zero"] = "zero.sc",
["one"] = "one.sc",
["two"] = "two.sc",
["three"] = "three.sc",
["four"] = "four.sc",
["five"] = "five.sc",
["six"] = "six.sc",
["seven"] = "seven.sc",
["eight"] = "eight.sc",
["nine"] = "nine.sc",
},
}
}
\setmainfont[RawFeature=+xnum]{Source Serif Pro}
\newcommand{\alphabet}{abcdefghijklmnopqrstuvwxyz}
\newcommand{\digits}{0123456789}
\begin{document}
\textbf{Regular letters and digits:}
\par
\alphabet\quad\digits
\end{document}
另一種方法是使用combofont
具有相同名稱的套件建立一個(基於luaotfload
套件提供的機制)。需要注意的是,添加諸如smcp
第二種字體之類的功能僅適用於設定mode=base
。
\documentclass{article}
\usepackage{combofont}
\setupcombofont{sourceserifpro-regular}{
{name:Source Serif Pro-Regular:mode=base;language=DFLT;+tlig} at #1pt,
{name:Source Serif Pro-Regular:mode=base;language=DFLT;+tlig;+smcp} at #1pt
}{
{} ,
0x30-0x39
}
\setupcombofont{sourceserifpro-bold}{
{name:Source Serif Pro-Bold:mode=base;language=DFLT;+tlig} at #1pt,
{name:Source Serif Pro-Bold:mode=base;language=DFLT;+tlig;+smcp} at #1pt
}{
{} ,
0x30-0x39
}
\DeclareFontFamily{TU}{sourceserifpro-combo}{}
\DeclareFontShape {TU}{sourceserifpro-combo}{m}{n} {<->combo*sourceserifpro-regular}{}
\DeclareFontShape {TU}{sourceserifpro-combo}{bx}{n}{<->combo*sourceserifpro-bold}{}
\newcommand{\alphabet}{abcdefghijklmnopqrstuvwxyz}
\newcommand{\digits}{0123456789}
\begin{document}
\fontfamily{sourceserifpro-combo}\selectfont
\textbf{Regular letters and digits:}
\par
\alphabet\quad\digits
\end{document}
輸出與上面相同。