%% $Id: lucida-otf.sty 751 2018-03-31 17:34:46Z herbert $
%%
%% This file is distributed under the terms of the LaTeX Project Public
%% License from CTAN archives in directory  macros/latex/base/lppl.txt.
%% Either version 1.3 or, at your option, any later version.
%%
% Copyright 2023 Herbert Voss hvoss@tug.org
%%
\ProvidesPackage{lucida-otf}[%
  2023/06/16 v. 0.09 (Herbert Voss) Supports Lucida OpenType for lualatex/xelatex.] 
%
\RequirePackage{ifxetex,ifluatex,xkeyval,textcomp}
\RequirePackage{unicode-math}  % support opentype math fonts
                               % loads itself fontspec
%
\newif\ifLucida@usefilenames \Lucida@usefilenamesfalse
\DeclareOptionX{usefilenames}[true]{\@nameuse{Lucida@usefilenames#1}}
%
\providecommand\lucidaRM@features{Scale=0.92}%  Roman
\providecommand\lucidaSS@features{Scale=0.92}%  SansSerif
\providecommand\lucidaTT@features{Scale=0.92}%  Typewriter
\providecommand\lucidaGrandeTT@features{Scale=0.92}%  Typewriter
\providecommand\lucidaConsoleTT@features{Scale=0.92}%  Typewriter
\providecommand\lucidaMM@features{}%            Math regular
\providecommand\lucidaMMbold@features{}%        Math bold
\providecommand\lucidaBL@features{}%            Blackletter
\providecommand\lucidaCAL@features{}%           Calligraphy
\providecommand\lucidaHW@features{}%            Handwriting
\providecommand\lucida@DefaultFeatures{}
\DeclareOptionX{RM}{\renewcommand*{\lucidaRM@features}{#1}}
\DeclareOptionX{SS}{\renewcommand*{\lucidaSS@features}{#1}}
\DeclareOptionX{TT}{\renewcommand*{\lucidaTT@features}{#1}}
\DeclareOptionX{GTT}{\renewcommand*{\lucidaGrandeTT@features}{#1}}
\DeclareOptionX{CTT}{\renewcommand*{\lucidaConsoleTT@features}{#1}}
\DeclareOptionX{MM}{\renewcommand*{\lucidaMM@features}{#1}}
\DeclareOptionX{MMbold}{\renewcommand*{\lucidaMMbold@features}{#1}}
\DeclareOptionX{BL}{\renewcommand*{\lucidaBL@features}{#1}}
\DeclareOptionX{CAL}{\renewcommand*{\lucidaCAL@features}{#1}}
\DeclareOptionX{HW}{\renewcommand*{\lucidaHW@features}{#1}}
\DeclareOptionX{DefaultFeatures}{\def\lucida@DefaultFeatures{#1}}

\newif\ifLucida@useKerning \Lucida@useKerningtrue
\DeclareOptionX{useKerning}[true]{\@nameuse{Lucida@useKerning#1}}

\ProcessOptionsX\relax

\def\Lucida@RawFeatures{}\def\Lucida@MathRawFeatures{}
\ifLucida@useKerning
  \ifluatex 
    \RequirePackage{luacode}
    \typeout{loading lucida-otf-kern.tex ... }%
    \input{lucida-otf-kern.tex}% 
    \def\Lucida@RawFeatures{+lucidaletterkerning,+lucidanumberkerning}
    \def\Lucida@MathRawFeatures{+lucidanumberkerning}
  \fi
\fi

\defaultfontfeatures{Ligatures=TeX,\lucida@DefaultFeatures}% default in fontspec
%
\ifLucida@usefilenames
\typeout {Using file names for the Lucida font}%
%-----------------------------------------  file names ----------------------------
\setmainfont{LucidaBrightOT}[% main rm
       Extension = .otf,
  \lucidaRM@features,
      ItalicFont = *-Italic,
        BoldFont = *-Demi,
  BoldItalicFont = *-DemiItalic,
      RawFeature = {\Lucida@RawFeatures},
]
%
\setsansfont{LucidaSansOT}[% main sans
       Extension = .otf,
  \lucidaSS@features,
      ItalicFont = *-Italic,
        BoldFont = *-Demi,
  BoldItalicFont = *-DemiItalic
]
%
\setmonofont{LucidaSansTypewriterOT}[% main typewriter
       Extension = .otf,
  \lucidaTT@features,
      ItalicFont = *-Oblique,
        BoldFont = *-Bold,
  BoldItalicFont = *-BoldOblique
]
\newfontfamily\lucidaSLshape{LucidaBrightOT}[
       FakeSlant = 0.2,
       Extension = .otf,
    \lucidaRM@features,
        BoldFont = *-Demi,
  BoldItalicFont = *-DemiItalic
]
%\renewcommand\sldefault{\lucidaSLshape}
\let\slshape\lucidaSLshape
%
% Setting math
% First we have to expand the feature macros:
%\expandafter\setmathfont\expandafter[\lucidaMM@features]{LucidaBrightMathOT}
%\expandafter\setmathfont\expandafter[\lucidaMMbold@features,version=bold]{LucidaBrightMathOT-Demibold}

\edef\Set@Math{\noexpand\setmathfont{Lucida Bright Math OT}[\lucidaMM@features, RawFeature = {\Lucida@MathRawFeatures}]%
               \noexpand\setmathfont{Lucida Bright Math OT Demibold}[\lucidaMMbold@features,version=bold]}
\Set@Math
%
% The specialized one-off fonts:
\newfontface\LucidaBlackletter{LucidaBlackletterOT}[
  Extension = .otf,
  \lucidaBL@features]
\newfontface\LucidaCalligraphy{LucidaCalligraphyOT}[
  Extension = .otf,
  \lucidaCAL@features]
\newfontface\LucidaHandwriting{LucidaHandwritingOT}[
  Extension = .otf,
  \lucidaHW@features]
%
% GrandeMono and Console fonts for an example:

\newfontfamily\LucidaGrandeMonoDK{LucidaGrandeMonoDK}[
       Extension = .otf,
  \lucidaGrandeTT@features,
      ItalicFont = *-Italic,
        BoldFont = *-Bold,
  BoldItalicFont = *-BoldItalic
]
%
\newfontfamily\LucidaConsoleDK{LucidaConsoleDK}[%
       Extension = .otf,
  \lucidaConsoleTT@features,
      ItalicFont = *-Italic,
        BoldFont = *-Bold,
  BoldItalicFont = *-BoldItalic
]
\else
\typeout {Using symbolic names for the Lucida font}%
%-----------------------------------------  symbolic names ----------------------------
\setmainfont{Lucida Bright OT}[% main rm
  \lucidaRM@features,
      ItalicFont = * Italic,
        BoldFont = * Demibold,
  BoldItalicFont = * Demibold Italic,
      RawFeature = {\Lucida@RawFeatures}
]
%
\setsansfont{Lucida Sans OT}[% main sans
  \lucidaSS@features,
      ItalicFont = * Italic,
        BoldFont = * Demibold,
  BoldItalicFont = * Demibold Italic
]
%
\setmonofont{Lucida Sans Typewriter OT}[% main typewriter
  \lucidaTT@features,
]
\newfontfamily\lucidaSLshape{Lucida Bright OT}[
        FakeSlant = 0.2,
%       Extension = .otf,
    \lucidaRM@features,
        BoldFont = * Demibold,
  BoldItalicFont = * Demibold Italic
]
%\renewcommand\sldefault{\lucidaSLshape}
\let\slshape\lucidaSLshape
%
% Setting math
% First we have to expand the feature macros:
%\expandafter\setmathfont\expandafter[\lucidaMM@features]{LucidaBright Math OT}
%\expandafter\setmathfont\expandafter[\lucidaMMbold@features,version=bold]{LucidaBright Math OT-Demibold}

\edef\Set@Math{\noexpand\setmathfont{Lucida Bright Math OT}[\lucidaMM@features, RawFeature = {\Lucida@MathRawFeatures}]%
               \noexpand\setmathfont{Lucida Bright Math OT Demibold}[\lucidaMMbold@features,version=bold]}
\Set@Math
%
% The specialized one-off fonts:
\newfontface\LucidaBlackletter{Lucida Blackletter OT}%
  [
   \lucidaBL@features]
\newfontface\LucidaCalligraphy{Lucida Calligraphy OT Italic}[\lucidaCAL@features]
\newfontface\LucidaHandwriting{Lucida Handwriting OT Italic}[\lucidaHW@features]
%
% GrandeMono and Console fonts for an example:

\newfontfamily\LucidaGrandeMonoDK{Lucida Grande Mono DK}[
  \lucidaGrandeTT@features,
]
%
\newfontfamily\LucidaConsoleDK{Lucida Console DK}[%
  \lucidaConsoleTT@features,
]
\fi

\endinput
