我想使用libertine
软件包提供的 Type1 字体libertine
并使用 进行编译XeLaTeX
。根据手册第 4 部分,可以使用以下命令激活此功能type1
:
\documentclass{article}
\usepackage[type1, oldstyle]{libertine}
\begin{document}
This is a test 1234567890 fi ffi fl ffl ft fft fj ffj tt
\end{document}
当我需要访问 Type1 字体中未包含的字形时,我想使用软件包提供的 OpenType 字体libertine
。如手册第 5 节所述,我可以使用宏访问这些字形\libertineGlyph{}
:
\documentclass{article}
\usepackage{libertine}
\begin{document}
\libertineGlyph{uni025D}
\end{document}
但是我该如何将它们结合起来呢?如上所述,我希望尽可能坚持使用 Type1 字体(因为这会使连字和旧式数字在 pdf 中可复制和搜索),但是当我需要特殊字形时,我会切换到 OpenType 字体。将选项type1
与以下选项结合起来\libertineGlyph{}
无法编译:
\documentclass{article}
\usepackage[type1, oldstyle]{libertine}
\begin{document}
This is a test 1234567890 fi ffi fl ffl ft fft fj ffj tt \libertineGlyph{uni025D}
\end{document}
! 未定义的控制序列。
l.4 ...ffi fl ffl ft fft fj ffj tt \libertineGlyph{uni025D}?
答案1
您必须结合 libertine.sty 中的定义:
\documentclass{article}
\usepackage{fontspec}
\makeatletter
\def\libertine@base{LinLibertine}
\def\biolinum@base{LinBiolinum}
\defaultfontfeatures{
Ligatures = TeX ,
Extension = .otf ,
SmallCapsFeatures={Letters=SmallCaps} ,
}
\newfontfamily\libertine
[ Numbers = {Proportional,OldStyle},
UprightFont = *_R,
ItalicFont = *_RI,
BoldFont = *_RB,
BoldItalicFont = *_RBI,
] {\libertine@base}
\def\lib@fxl{LinLibertine_R}
\def\lib@fxb{LinBiolinum_R}
\def\lib@fxk{LinBiolinum_K}
\def\lib@fxi{LinLibertine_I}
\providecommand*\DeclareTextGlyphY[3]{%
% \DeclareTextGlyphY{fxl}{s_t}{64262}
% #1=basefont #2=glyphname, #3=position
\def\lib@temp{#1}%
\ifx\lib@temp\lib@fxl \@namedef{#1@#2}{{\libertine\char#3\relax}}\else%
\ifx\lib@temp\lib@fxb \@namedef{#1@#2}{{\biolinum\char#3\relax}}\else%
\ifx\lib@temp\lib@fxk \@namedef{#1@#2}{{\biolinumkey\char#3\relax}}\else%
\ifx\lib@temp\lib@fxi \@namedef{#1@#2}{{\libertineInitial\char#3\relax}}\else%
\fi\fi\fi\fi}
%
\input{LinLibertine_R}
\input{LinBiolinum_R}
\input{LinBiolinum_K}
\input{LinLibertine_I}
%
\DeclareRobustCommand*\libertineGlyph[1]{\@nameuse{LinLibertine_R@#1}}
\DeclareRobustCommand*\biolinumGlyph[1]{\@nameuse{LinBiolinum_R@#1}}
\DeclareRobustCommand*\biolinumKeyGlyph[1]{\@nameuse{LinBiolinum_K@#1}}
\DeclareRobustCommand*\libertineInitialGlyph[1]{\@nameuse{LinLibertine_I@#1}}
\makeatother
\usepackage[T1]{fontenc}
\usepackage[type1,oldstyle]{libertine}
\begin{document}
This is a test 1234567890 fi ffi fl ffl ft fft fj ffj tt
{\libertine\libertineGlyph{uni025D}}
\end{document}
答案2
Type1 中的所有字形都属于 OpenType。无需使用 Type1 版本的 Libertine:
\documentclass{article}% xelatex or lualatex
\usepackage{fontspec}
\usepackage[oldstyle]{libertine}
\begin{document}
This is a test 1234567890 fi ffi fl ffl ft fft fj ffj tt
\symbol{"025D}
\end{document}