This is possible using Mico's selnolig
package. It is on CTAN, and added to TeX Live and MikTeX. selnolig
requires the document to be compiled with lualatex
, but that wouldn't keep you from using your fonts; indeed, it is pretty similar to xelatex
in usage.
(Btw, microtype
is available for LuaTeX -- most of its functions -- but it cannot selectively deactivate ligatures. That's why selnolig
was created.)
In this MWE, I load selnolig
without either of its language options (it can deal with German and English), so it only gets rid of ligatures where I tell it to with \nolig
rules. Since I don't have the Adobe Caslon Pro OTF fonts, I used Linux Libertine, which has the ⟨st⟩ and ⟨ct⟩ ligatures in its Historical set.
\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={Historical}}
\setmainfont{Linux Libertine O}
\usepackage{selnolig}
\nolig{st}{s|t}
\begin{document}
best pact
\end{document}
Just as a comparison, here's the output without selnolig
:
selnolig
's main purpose is to automatically suppress ligatures across morpheme boundaries in German and English texts. Its documentation explains all about how to use it (and how to use lualatex
, if you'd like some pointers there).
See also New package, selnolig, that automates suppression of typographic ligatures on Meta.
Best Answer
To the best of my knowledge, there are no fonts out there (not even Junicode!) that provide a ready-made NB ligature.
It's actually not too difficult to create a composite
NB
glyph (not to be confused with a "true" ligature) by inserting a negative kern betweenN
andB
. However, for many font families theN-B
composite is quite unattractive. It's a vivid reminder, IMNSHO, of the fact that creating a good-looking ligature requires a lot more work than just "snugging up" two or more glyphs.The following screenshot shows possible NB candidates for 4 serif fonts and 3 sans-serif fonts. (If you wanted to use this in "real work", be sure to omit the
\textcolor{red}{...}
wrapper in the definition of\NB
.)