[Tex/LaTex] Disable “Th” ligature in LuaLaTeX

ligaturesluatex

Like The New Yorker, I want my Adobe Caslon Pro to have ligatures for ffl, ffi, etc. but not for Th.

Using LuaLaTeX, how can I simply disable the Th ligature? Is it possible to do this without using the selnolig package, and, if not, could you tell me exactly how I should alter my preamble to make selnolig work?

\documentclass[fontsize=13.5pt,oneside,DIV=calc]{scrbook}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Adobe Caslon Pro}
\usepackage[paperwidth=150mm,paperheight=225mm]{geometry}
\geometry{verbose,tmargin=0.55in,bmargin=0.5in,lmargin=0.6in,rmargin=0.6in}
\pagestyle{empty}
\usepackage{microtype}
\usepackage{csquotes}
\MakeOuterQuote{"}
\MakeInnerQuote{´}
\automatichyphenmode=1
\frenchspacing
\usepackage{polyglossia}\setdefaultlanguage[variant=american]{english}

Best Answer

Note: The solution in this answer gives more fine grain control to disable/enable ligatures than using selnolig. AFAIK, selnolig disables the ligature globally for all fonts. The original question doesn’t mention the intent to disable Th ligature for all fonts used in the document, on the contrary it names the exact font family “Adobe Caslon Pro” for which it should be disabled. With fontspec solution you can achieve either result: globally disable for all fonts or on a per-font basis.

This lualatex solution is from the detailed answer here. Run with command >> lualatex <filename>.tex. The source of this is from ConTEXt land, look at section 8.14 "Fonts out of ConTEXt", by Hans Hagen of Pragma ADE

\usepackage{fontspec}
\directlua{
  fonts.handlers.otf.addfeature{
    name = "noth",
    type = "multiple",
    data = {
      ["T_h"] = { "T", "h" },
    },
  }
}

% Option-1 To disable the ligature for just Adobe Caslon Pro
\setmainfont[Ligatures=TeX,RawFeature=+noth]{Adobe Caslon Pro}

% OR

% Option-2 To disable the ligature globally for all fonts
\defaultfontfeatures{RawFeature=+noth}
\setmainfont[Ligatures=TeX]{Adobe Caslon Pro}

Related Question