Xetex 支持 .otf 功能

Xetex 支持 .otf 功能

在存在的 .otf 字体中,上下文替代(calt)和本地化形式(locl)功能在 LibreOffice 中运行良好。

实验:我创建一个quoteright.fr具有大方位的字形,并施加一个 calt,因为quoteright意大利语和法语中的字形被quoteright.fr字形取代了。

使用 LibreOffice 时,差异显而易见:第一行我设置了意大利语,第二行设置了英语(无方格):

在此处输入图片描述

但使用 Xetex 时,我无法启用这些功能。

如果我没有在字体功能中指定任何内容,则上下文替换规则不起作用。

如果我输入Contextuals = Alternate我会收到以下消息:

Package fontspec Warning: OpenType feature 'Contextuals = Alternate' (calt) not
(fontspec) available for font 'GaramondPremPro' with script
(fontspec) 'Latin' and language 'Default'.

上下文替换规则再次不起作用。

这是 Xetex(第一行是意大利语,第二行是英语)

在此处输入图片描述

使用以下代码:

\documentclass {article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Garamond Premier Pro}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{italian}
\setotherlanguages{english}

\begin{document}

I'I N'P

\begin{english}I'I N'P\end{english}
\end {document}

你能依赖什么?我的代码有错误或缺失吗?

谢谢

附言

otfinfo -f 仅识别系统范围的功能,而不是本地化的功能(无论是 calt 还是 locl),如果我使用 FontLab 或 FontForge 检查,这些功能也存在于字体中:

samiel@darkstar:~/work$ otfinfo --features font.otf

aalt    Access All Alternates
c2sc    Small Capitals From Capitals
cpsp    Capital Spacing
dnom    Denominators
frac    Fractions
kern    Kerning
liga    Standard Ligatures
lnum    Lining Figures
numr    Numerators
onum    Oldstyle Figures
pnum    Proportional Figures
smcp    Small Capitals
sups    Superscript
tnum    Tabular Figures
zero    Slashed Zero

PS2

我尝试了各种可能性。以下是:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle,Language=Italian,RawFeature={+calt}]{Garamond Premier Pro}
\usepackage{polyglossia}
%\setmainlanguage[babelshorthands=true]{italian}
\setotherlanguages{english}

\begin{document}

I'I N'P

\begin{english}I'I N'P\end{english}

\end{document}

在整个文档中生成 cal,而不仅仅是意大利语和法语(如字体中本地化calt 规则)。

如果我设置

\setmainfont[Ligatures=TeX,Numbers=OldStyle,RawFeature={+calt}]{Garamond Premier Pro}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{italian}

替代品从未生产

添加错误问题的答案:

我尝试了各种可能性。以下是:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle,Language=Italian,RawFeature={+calt}]{Garamond Premier Pro}
\usepackage{polyglossia}
%\setmainlanguage[babelshorthands=true]{italian}
\setotherlanguages{english}

\begin{document}

I'I N'P

\begin{english}I'I N'P\end{english}

\end{document}

在整个文档中生成 calt,而不仅仅是意大利语和法语(如字体 cal 规则中所述)。

如果我设置

\setmainfont[Ligatures=TeX,Numbers=OldStyle,RawFeature={+calt}]{Garamond Premier Pro}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{italian}

替代品从未生产

答案1

您评论中的字体对我来说很好用:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Language=Italian]{SamielPro.otf}
\setsansfont[]{SamielPro.otf}

\begin{document}

I'I N'P

\sffamily 
I'I N'P


\end{document}

在此处输入图片描述

使用 lualatex 不起作用,需要明确添加 calc-feature:

\setmainfont[Language=Italian,RawFeature=+calt]{SamielPro.otf}

可以使用 babel 和 \babelfont 设置依赖于语言的调用:

\documentclass{article}
\usepackage{fontspec}
\usepackage[english,italian]{babel}
\babelfont{rm}[Ligatures=TeX]{SamielPro.otf}

% for luatex:
%\babelfont[italian]{rm}[RawFeature=+calt,Ligatures=TeX]{SamielPro.otf}

\begin{document}

I'I N'P

\selectlanguage{english}
I'I N'P

\end{document}

相关内容