结合 Type1 和 OpenType libertine 字体

结合 Type1 和 OpenType libertine 字体

我想使用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}

在此处输入图片描述

相关内容