使用 fontspec 时删除连字符

使用 fontspec 时删除连字符

这是货币符号:法国法郎

考虑以下代码:

\documentclass{article}
\usepackage{fontspec}
\usepackage{siunitx}

\DeclareRobustCommand*{\myfranc}{%
  \begingroup
    \fontspec{FreeSerif.otf}%
    ^^^^20a3%
  \endgroup
}
\DeclareSIUnit{\franc}{\myfranc}

\begin{document}
Horse fififif \SI{123.45}{\franc}.
\end{document}

我该如何去除fi连字符以获得单独的连f字符i

更新

对我有用的设置如下:

\documentclass{article}

\usepackage{siunitx}
\DeclareRobustCommand*{\myfranc}{%
  \begingroup
    \fontspec{FreeSerif.otf}%
    ^^^^20a3%
  \endgroup
}
\DeclareSIUnit{\franc}{\myfranc}

\usepackage{fontspec}
\defaultfontfeatures{
  Ligatures={
    NoCommon,
    NoRequired,
    NoContextual,
    NoHistoric,
    NoDiscretionary,
    TeX
  }
}
\setmainfont[
  BoldFont=lmroman10-bold.otf,
  ItalicFont=lmroman10-italic.otf,
  BoldItalicFont=lmroman10-bolditalic.otf,
  SlantedFont=lmromanslant10-regular.otf,
  BoldSlantedFont=lmromanslant10-bold.otf,
  SmallCapsFont=lmromancaps10-regular.otf
]{lmroman10-regular.otf}

\begin{document}
\section{Horse}
off fit fly office baffle -- \SI{123.456}{\franc}
\end{document}

答案1

压制全部印刷连字,你可以发出命令

\defaultfontfeatures{Ligatures={NoCommon, NoDiscretionary, NoHistoric, NoRequired, NoContextual}}

加载包后fontspec。此指令将应用于文档中随后选择的所有字体。

评论:

  • 到目前为止,上述指令中最重要的选项是NoCommon。所谓的 f 连字(ff、fi、fl、ffi、ffl,以及可能还有其他 f 连字)通常被分配到“通用”组。
  • “Required”和“Contextual”是默认设置。但是,我所熟悉的几乎所有 OpenType 字体都不具备任何“Required”或“Contextual”连字符。因此,除非您使用某种特殊字体,否则可能不需要指定“NoRequired”和“NoContextual”。
  • “NoHistoric” 和 “NoDiscretionary” 是fontspec默认值。但是,明确指定这些选项以明确您的意图也无妨,对吧?:-)

附录\defaultfontfeatures:这是一个 MWE,说明了与 XeLaTeX 一起使用时该命令的用法:

% !TEX TS-program = xelatex
\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={NoCommon, NoRequired, NoContextual, NoHistoric, NoDiscretionary}}
\setmainfont{Latin Modern Roman}
  % If your TeX distribution/Operating System doesn't recognize "logical" font names
  % such as "Latin Modern Roman", try using the name of the file that contains the 
  % font you're trying to load. In this case, try "\setmainfont{lmroman10-regular.otf}".

\begin{document}
off fit fly office baffle 
\end{document}

在此处输入图片描述

答案2

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=NoCommon]{lmroman10-regular.otf}
\newfontface\Franc{FreeSerif.otf}
\usepackage{siunitx}

\DeclareSIUnit{\kroner}{kr.}
\DeclareRobustCommand*{\myfranc}{{\Franc^^^^20a3}}
\DeclareSIUnit{\franc}{\myfranc}

\begin{document}
Horse fififif \SI{123.45}{\franc}.
\end{document}

顺便说一句:定义字体而不是运行\fontspec

相关内容