在存在的 .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}