更新

更新

TeX 搜索为我找到的其他问题部分回答了这个问题,但并不全面。

我是一名作家,不是数学家或学者。我写小说。因此,我的需求只是 TeX 所能提供的一部分。我已经掌握了 pdfLaTeX 和 microtype 所需的知识。我可以创建和编辑字体,获得了多种商业字体(如 Adob​​e Garamond Pro)的许可,并使用 Acrobat Pro 对生成的 PDF 进行后期处理。

到目前为止,我将 OpenType 字体分解为使用 LY1 编码的 Type 1,以便 pdfLaTeX 能够理解它们。不同的 OpenType 样式集被分解为不同的字体,每次我需要特定样式集时,我都会单独调用这些字体。到目前为止一切顺利。请理解,我不会使用任何格式的任何 TeX 字体。

现在我尝试使用 LuaLaTeX 直接读取 OpenType 字体。microtype 的无效功能不会成为问题,因为 LuaLaTeX 中的有效功能足以满足我的需求。我已经让 LuaLaTeX 处理一个简单的示例文档,该文档使用 OpenType 字体但没有任何 OpenType 功能。

如果我能弄清楚如何选择 OpenType 功能,那真是太糟糕了。我查看了可用的文档和这里的在线示例。我看到的是一些代码示例,它们通过通用名称而不是通过 4 个字符的样式集指定来选择功能。示例:

Numbers={OldStyle,Proportional},

但大多数样式集没有通用名称。那么我该怎么办呢?

我正在寻找类似的东西(伪代码):

在序言中:

\newcommand\useThisStyleSet[3]{opentype font name}{4-character style code}{string to be styled}

\newcommand\myStyle[1]{\useThisStyleSet{Adobe Garamond Pro}{c2sc}{$1}}

\newcommand\myOtherStyle[1]{\useThisStyleSet{Adobe Caslon Pro}{ss03}{$1}}

\newcommand\myNextStyle[1]{\useThisStyleSet{Source Sans Pro}{loca}{$1}}

在文档正文中:

\myStyle{The quality} of mercy \myOtherStyle{is not} \myNextStyle{strained.}

答案1

以下是我开始使用时为自己做的总结的更新版本fontspec

| tag  | fontspec option                      | comments                                            |
|------+--------------------------------------+-----------------------------------------------------|
| abvm | Diacritics=[No]AboveBase             | default                                             |
| afrc | Fractions=Alternate                  |                                                     |
| anum | Numbers=Arabic                       | luatex only: see manual §10.3                       |
| blvm | Diacritics=[No]BelowBase             | default                                             |
| c2pc | Letters=UppercasePetiteCaps          |                                                     |
| c2sc | Letters=UppercaseSmallCaps           |                                                     |
| calt | Contextuals=[No]Alternate            | default in xetex, not in luatex                     |
| case | Letters=Uppercase                    |                                                     |
| clig | Ligatures=[No]Contextual             | default                                             |
| cpsp | Kerning=Uppercase                    |                                                     |
| cswh | Contextuals=[No]Swash                |                                                     |
| cv01 | CharacterVariant=1                   | see manual §10.8                                    |
| dlig | Ligatures=Rare/Discretionary         |                                                     |
| dnom | VerticalPosition=Denominator         |                                                     |
| expt | CJKShape=Expert                      |                                                     |
| falt | Contextuals=[No]LineFinal            |                                                     |
| fina | Contextuals=[No]WordFinal            | has sometimes worked in xetex                       |
| frac | Fractions=On[/Off]                   |                                                     |
| fwid | CharacterWidth=Full                  | for Asian fonts                                     |
| halt | CharacterWidth=AlternateHalf         |                                                     |
| hist | Style=Historic                       |                                                     |
| hkna | Style=HorizontalKana                 |                                                     |
| hlig | Ligatures=Historic                   |                                                     |
| hwid | CharacterWidth=Half                  |                                                     |
| init | Contextuals=[No]WordInitial          | has sometimes worked in xetex                       |
| ital | Style=Italic                         |                                                     |
| jp78 | CJKShape=JIS1978                     |                                                     |
| jp83 | CJKShape=JIS1983                     |                                                     |
| jp90 | CJKShape=JIS1990                     |                                                     |
| kern | Kerning=On[/Off]                     | default                                             |
| liga | Ligatures=[No]Common                 | default                                             |
| lnum | Numbers=Uppercase/Lining             |                                                     |
| mark | Diacritics=[No]MarkToBase            | default                                             |
| medi | Contextuals=[No]Inner                | has sometimes worked in xetex                       |
| mkmk | Diacritics=[No]MarkToMark            | default                                             |
| nalt | Annotation=#…                        | see manual §10.14                                   |
| nlck | CJKShape=NLC                         |                                                     |
| numr | VerticalPosition=Numerator           |                                                     |
| onum | Numbers=Lowercase/OldStyle           |                                                     |
| ordn | VerticalPosition=Ordinal             |                                                     |
| palt | CharacterWidth=AlternateProportional |                                                     |
| pcap | Letters=PetiteCaps                   |                                                     |
| pnum | Numbers=Proportional                 |                                                     |
| pwid | CharacterWidth=Proportional          |                                                     |
| qwid | CharacterWidth=Quarter               |                                                     |
| rand | Letters=Random                       |                                                     |
| rlig | Ligatures=[No]Required               | default                                             |
| ruby | Style=Ruby                           |                                                     |
| salt | Style=Alternate or Alternate=…       | see manual §10.9                                    |
| sinf | VerticalPosition=ScientificInferior  |                                                     |
| size | SizeFeatures={…} and OpticalSize=…   | default for some fonts; see manual §§7.6, 8.6, 12.4 |
| smcp | Letters=SmallCaps                    |                                                     |
| smpl | CJKShape=Simplified                  |                                                     |
| ss01 | StylisticSet=1                       |                                                     |
| subs | VerticalPosition=Inferior            |                                                     |
| sups | VerticalPosition=Superior            | see also realscripts package                        |
| swsh | Style=Swash                          |                                                     |
| titl | Style=TitlingCaps                    |                                                     |
| tnum | Numbers=Monospaced                   |                                                     |
| trad | CJKShape=Traditional                 |                                                     |
| twid | CharacterWidth=Third                 |                                                     |
| unic | Letters=Unicase                      |                                                     |
| vkna | Style=VerticalKana                   |                                                     |
| zero | Numbers=[No]SlashedZero              |                                                     |

(忽略颜色,这是该网站以我的 ASCII 表为.tex来源。)

请注意,默认值可能因脚本而异;请参阅 Khaled Hosny 的评论article.gmane.org/gmane.comp.tex.xetex/15187

根据手册§28.0.12 来判断,还有垂直字距调整选项,大概会在§10.17 中解释。

更新

自 2.5c 版(2017/01/20)起,该fontspec手册还包含一个表格;在 2.6g 版(2017/11/09)中,它是表 2,第 35 页。

答案2

编辑:根据上面接受的答案、以下答案和评论,我已经能够详细解决我的问题。谢谢大家!这是一个 MWE,展示了它的工作原理。

% !TeX program = LuaLaTeX
% !TEX encoding = UTF-8
\documentclass{article}
\usepackage{fontspec} % required with LuaLaTeX
\setmainfont[
  Ligatures=TeX,
  Numbers=Proportional, % but cannot use Monospaced as below
]{Adobe Garamond Pro}
\newfontfamily{\myCustom}[
  Ligatures=TeX,
]{RAcustom} % my own created opentype font
\newcommand\myFraktur{\addfontfeature{StylisticSet=1}} % only for \myCustom
\newcommand\myUncial{\addfontfeature{StylisticSet=2}} % only for \myCustom
\newcommand\myEmoticons{\addfontfeature{StylisticSet=3}} % only for \myCustom
\begin{document}
Hello {\myCustom world.} Here: {\myCustom\myEmoticons ^^^^46c7}
\end{document}

以上代码给出了预期的输出:AGaramondPro 中的“Hello”,RAcustom 中的“world.”,AGaramondPro 中的“Here:”,RAcustom opentype feature ss03 中的 Unicode 46c7(通常是亚洲汉字),这是一个笑脸表情符号。事实:汉字的意思是“笑脸”。我不想使用 BMP 以外的全部 Unicode 范围。

谢谢你,谢谢你,谢谢你!

输出图像:

答案3

fontspec软件包可轻松满足您的大部分需求。\addfontfeatures很少需要使用。

拉丁现代罗马字体确实不支持该+scmp功能,但您可以轻松定义小写字体。不要使用LM Roman 12,而是使用通用的家族名称。

\documentclass{article}
\usepackage{fontspec} % required with LuaLaTeX

\setmainfont[
  Numbers={Lining,Proportional},
  SmallCapsFont=Latin Modern Roman Caps,
]{Latin Modern Roman}

\newfontfamily{\oldstyle}[
  Numbers={OldStyle,Monospaced},
  SmallCapsFont=Latin Modern Roman Caps,
]{Latin Modern Roman}

\newfontfamily{\test}[
  Numbers={OldStyle,Proportional},
  SmallCapsFont=Latin Modern Roman Caps,
]{Latin Modern Roman}

\begin{document}

0123456789 {\oldstyle 0123456789} 0123456789

0123456789 Latin Modern Roman \emph{does} have small caps, so 
\textsc{This Text shows them}

{\oldstyle 0123456789 Latin Modern Roman \emph{does} have small caps, so 
\textsc{This Text shows them}}

{\test 0123456789 Latin Modern Roman \emph{does} have small caps, so 
\textsc{This Text shows them}}

\end{document}

在此处输入图片描述

相关内容