\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{pdfstandard=A-2b, lang=fr-FR}
\documentclass[paper=a4,french]{scrartcl}
% Packages
\usepackage{graphics, array, varioref}
\usepackage[svgnames]{xcolor}
\usepackage[hypcap=false]{caption}
\usepackage{shortvrb}
\usepackage{babel}
\frenchsetup{og=«, fg=», ListItemsAsPar}
\usepackage{kpfonts-otf}

% Pour les démos :
\setmathfont{KpMath-Regular.otf}[version=full,
                                 StylisticSet={1,2,3,4,5,6,7}]
\setmathfont{KpMath-Light.otf}[version=light]
\setmathfont{KpMath-Regular.otf}[version=base, CharacterVariant=3]
\setmathfont{KpMath-Bold.otf}[version=bold, Style=leqslant, CharacterVariant=3]
\setmathfont{KpMath-Sans.otf}[version=sans, Style=leqslant, CharacterVariant=3]

\usepackage{realscripts}
\usepackage{microtype}
\usepackage{hyperref}
\hypersetup{pdftitle={Mode d’emploi des Kpfonts-otf},
            pdfauthor={Daniel FLIPO},
            colorlinks,
            }
\newcommand*{\hlabel}[1]{\phantomsection\label{#1}}
%
\MakeShortVerb{\|}

\newcommand*{\pkg}[1]{\texttt{#1}}
\newcommand*{\opt}[1]{\texttt{#1}}
\newcommand*{\optit}[1]{\textit{\color{DarkBlue}#1}}
\newcommand*{\file}[1]{\texttt{#1}}
\newcommand*{\style}[1]{\textsf{\textbf{#1}}}
\newcommand*{\cmd}[1]{\texttt{\textbackslash #1}}
\newcommand*{\family}[1]{\textsb{#1}}
\newcommand*{\famvar}[1]{\textit{#1}}

\title{Kp-fonts version OpenType}
\author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}}
\newcommand*{\version}{0.47}

\begin{document}
\maketitle
\thispagestyle{empty}

\mathversion{full}

\begin{abstract}
  Le but de ce travail est de proposer une version OpenType des polices
  Kp-fonts dessinées par Christophe Caignaert au format type1, voir la
  documentation originale \file{Kpfonts-Doc-French.pdf}.

  La présente distribution, utilisable uniquement avec LuaTeX ou XeTeX,
  contient seize polices OpenType de texte, une famille romaine \family{KpRoman}
  en huit déclinaisons ---~\famvar{Regular}, \famvar{Italic}, \famvar{Bold},
  \famvar{Bold\-Italic}, \famvar{Light}, \famvar{Light\-Italic},
  \famvar{Semi\-bold}, \famvar{Semibold\-Italic}~---, une famille sans-serif
  \family{KpSans} et une à espacement fixe \family{KpMono} chacune en quatre
  déclinaisons ---~\famvar{Regular}, \famvar{Italic}, \famvar{Bold} et
  \famvar{Bold\-Italic}~--- et cinq polices mathématiques
  \family{KpMath-Regular}, \family{KpMath-Bold}, \family{KpMath-Light},
  \family{KpMath-Semibold} et \family{KpMath-Sans}.

  Les familles \family{KpRoman} et \family{KpSans} ont de vraies petites
  capitales en deux tailles (\textpsc{normale} et \textlsc{grande}),
  des chiffres elzéviriens ({\addfontfeatures{Numbers=Lowercase} 0123456789})
  et offrent des ligatures anciennes comme
  {\addfontfeatures{Ligatures=Rare} ct, st} et
  le {\addfontfeatures{Style=Swash}Q} long.
  Les chiffres et lettres supérieures et inférieures ont été ajoutées aux
  polices OpenType pour les appels de notes et les abréviations M\up{me}
  1\ier, etc.

  Les polices de texte couvrent les alphabets latin et latin étendu~A
  (U+0020 à U+017F) mais aucun des alphabets grec, cyrillique ou IPA.

  Les polices mathématiques disposent les lettres latines et grecques
  droites, italiques, grasses et grasses italiques :
  $\symup{a}$ $\symup{\beta}$ $\symup{C}$ $\symup{\Delta}$,
  $\symit{a}$ $\symit{\beta}$ $\symit{C}$ $\symit{\Delta}$,
  $\symbfup{a}$ $\symbfup{\beta}$ $\symbfup{C}$ $\symbfup{\Delta}$,
  $\symbfit{a}$ $\symbfit{\beta}$ $\symbfit{C}$ $\symbfit{\Delta}$.

  La commande |\mathbb{ABC}| affiche au choix
  \mathversion{base} $\mathbb{ABC}$ par défaut ou
  \mathversion{full}$\mathbb{ABC}$ avec l’option |Style=bbsans|,
  deux versions des capitales calligraphiées
  sont disponibles : |\mathcal{ABC}| et |\mathscr{ABC}| affichent
  respectivement \mathversion{full}$\mathcal{ABC}$ et
  \mathversion{base}$\mathcal{ABC}$ ;
  la commande |\mathfrak{ABCabc}| affiche $\mathfrak{ABCabc}$.

  La liste complète des symboles mathématiques présents dans Unicode et
  disponibles dans les polices \family{KpMath} est présentée dans
  le fichier \file{unimath-kpfonts.pdf}. Des symboles supplémentaires sont
  également disponibles, ils sont présentés à la
  section~\ref{ssec:symb-spec-kp}.

  La distribution est accompagnée d’un fichier \file{kpfont-otf.sty} destiné
  à faciliter la transition, certaines options de la version originale ont été
  reprises, d’autres ont été abandonnées…

  Veuillez noter que la présente version (\version) est \emph{expérimentale}.

  \enlargethispage*{2\baselineskip}
  La distribution est proposée sous license OFL pour les polices et LPPL-1.3
  pour les fichiers LaTeX.
\end{abstract}

\newpage
\section{Chargement par \pkg{kpfonts-otf.sty}}

Les utilisateurs de la version originale des Kp-fonts préfèreront probablement
charger \pkg{kpfonts-otf.sty} comme ceci :\\[.5\baselineskip]
|\usepackage[ |\optit{options}| ]{kpfonts-otf}|\\[.5\baselineskip]
ceci charge \pkg{unicode-math}, \pkg{fontspec} et \pkg{realscripts} et
définit \family{KpRoman} (\family{Regular} ou \family{Light} selon les options),
\family{KpSans} et \family{KpMono} comme polices de texte et \family{KpMath}
(\family{Regular} ou \family{Light} selon les options) comme police
mathématique.

En plus, tous les symboles disponibles dans \pkg{latexsym} et \pkg{amssymb}
sont définis sous les mêmes noms dans \pkg{kpfonts-otf.sty}%
\footnote{Les noms Unicode officiels diffèrent souvent.}
ainsi qu’un certain nombre de symboles et de commandes spécifiques à Kp-fonts.

\subsection{Options globales affectant texte et maths}

\begin{description}
\item[light :] pour utiliser la version \famvar{light} des polices. Les
  métriques sont inchangées.  L'affichage n'est pas très bon, au contraire de
  l'impression si vous aimez les polices fines.

  Ce texte est composé avec les polices par défaut, vous pourrez comparer
  ci-dessous les versions \famvar{regular} (à gauche) et \famvar{light} (à
  droite) :

\newcommand{\test}{Normal ou léger ? tous les goûts sont dans la nature…}
\medskip

\begin{minipage}{.45\textwidth}\test{} $E=mc^2$\end{minipage}\hfill
\begin{minipage}{.45\textwidth}\ltseries\test{} \mathversion{light}$E=mc^2$
\end{minipage}

\medskip\mathversion{base}
\begin{minipage}{.45\textwidth}\itshape \test\end{minipage}\hfill
\begin{minipage}{.45\textwidth}\ltseries\itshape \test\end{minipage}

\medskip
\begin{minipage}{.45\textwidth}\bfseries \test\end{minipage}\hfill
\begin{minipage}{.45\textwidth}\sbseries \test\end{minipage}

\medskip
\begin{minipage}{.45\textwidth}\bfseries\itshape \test\end{minipage}\hfill
\begin{minipage}{.45\textwidth}\sbseries\itshape \test\end{minipage}

\medskip

\item[nomath :] ne charge ni \pkg{unicode-math} ni les fontes \family{KpMath} ;
  utile pour les documents sans maths ou pour faire appel à d’autres fontes
  pour les maths.
\item[notext :] Kp-fonts ne modifie aucune des polices de texte par défaut.
\item[nosf :] Kp-fonts ne modifie pas les polices sans-serif de texte.
\item[nott :] Kp-fonts ne modifie pas les polices de texte à chasse fixe.
\item[onlyrm :] équivalente aux deux précédentes options.
\item[fulloldstyle :] équivalente aux options \opt{oldstyle} et
  \opt{oldstylemath}.
\item[fulloldstylenums :] équivalente aux options \opt{oldstylenums} et
  \opt{oldstylenumsmath}.
\end{description}

\subsection{Options des polices de texte}

Notez que ces options n'affectent que les polices de texte.

\begin{description}
\item[lighttext :] le texte est composé en utilisant les polices « light ».

  \pkg{kpfonts-otf.sty} donne accès à des graisses intermédiaires:
  avec l’option \famvar{lighttext} (ou \famvar{light}) on a du
  \famvar{Semibold} et du \famvar{Extrabold}, et par défaut on a du
  \famvar{Light} et du \famvar{Semibold}.
  Ces graisses s’obtiennent par les commandes |\ltseries|, |\sbseries| et
  |\ebseries| à utiliser dans un groupe ou bien grâce aux commandes à un
  argument |\textlt{}|,  |\textsb{}| et |\texteb{}|.

  |{\sbseries\itshape Foo}| ou |\textsb{\textit{Foo}}| donne
  {\sbseries\itshape Foo}.

\item[oldstylenums :] Les polices fournissent ici les nombres elzéviriens par
  défaut.

  Pour accéder aux nombres usuels : |{\addfontfeature{Numbers=Lining} 123}|
  (à faire dans un groupe).

  Quelques exemples en droit et italique, medium et gras :
  \begin{itemize}\addfontfeatures{Numbers=Lowercase}
	\item 0123456789 !
	\item \textit{0123456789 !}
	\item \textbf{0123456789 !}
	\item \textbf{\textit{0123456789 !}}
  \end{itemize}

\item[oldstyle :] Les polices fournissent ici les nombres elzéviriens par
  défaut, le Q-long ({\addfontfeatures{Style=Swash}Qui ?}), les ligatures
  anciennes {\addfontfeatures{Ligatures=Rare}« ct » et « st »}
  (en romain et sans-serif uniquement).

  Quelques exemples:
  \begin{itemize}\addfontfeatures{Style=Swash,Ligatures=Rare}
  \newcommand*{\test}{Quelle police, quelle esthétique actuelle !}
	\item \test
	\item \textit{\test}
	\item \textbf{\test}
	\item \textsc{\test}
	\item \textbf{\textit{\test}}
	\item \textsc{\textbf{\test}}
  \end{itemize}

\item[veryoldstyle :] \hlabel{veryoldstyle}
  identique à l'option \opt{oldstyle} mais en plus le « s » rond est
  remplacé par le «ſ» long sauf en fin de mot et sauf devant \textit{b},
  \textit{f} et \textit{h}%
  \footnote{Ces règles sont celles décrites
    \href{https://fr.wikipedia.org/wiki/S_long}{ici}.}
  et les ligatures
  {\addfontfeatures{RawFeature=+hist;+hlig} si, sl, st} sont activées.
  Le codage |\textit{« Des espoirs si funestes… »}| donne bien
  {\addfontfeatures{RawFeature=+hist;+hlig;+calt}
     \textit{«Des espoirs si funestes…»}.
  }

  La substitution automatique repose sur la \textit{feature} OpenType
  \texttt{StylisticSet=12}.  Il est toujours possible de forcer un «s» rond
  en codant \texttt{s\char"200B=} ou |\shorts{}| ou un «ſ» long en codant
  \texttt{ſ}%
  \footnote{Sous Unix, le \texttt{ſ} long s’obtient grâce à la touche
    \texttt{Compose} : \texttt{Compose f s}.}  ou |\longs{}|.

\item[largesmallcaps :] produit des petites capitales plus \textlsc{Grandes}
  que par les \textsc{Petites} obtenues par défaut.

\item[altfligs :] affiche des variantes des ligatures
  {\addfontfeatures{StylisticSet=1}fi, fl, ffi, ffl}
  au lieu de fi, fl, ffi, ffl.

\item[germandbls :] |\SS| affiche {\addfontfeatures{StylisticSet=2}\SS} au
  lieu de {\char"1E9E} (\textit{eszett} majuscule), idem en petites capitales.

\item[eurosym :] remplace le caractère Euro (€) par le symbole officiel
  {\addfontfeatures{StylisticSet=3}(€)}, disponible également en italique,
  gras et gras italique.
  %Cette option influe sur le résultat de la commande
  %|\kpeuro|, section~\ref{ssec:kpeuro} p.~\pageref{ssec:kpeuro}.

\item[harfbuzz :] active le moteur de rendu |Renderer=Harfbuzz| pour HBLuaTeX ;
  depuis la version 0.35, il n’est plus activé par défaut
  (il est rarement nécessaire).

\end{description}

\subsection{Options des polices mathématiques}

\begin{description}

\item[lightmath :] les mathématiques sont composées avec les polices
      « light ».

\item[bbsans :] dans tous les cas, la commande |\mathbb| produit du
  sans-serif :
  \mathversion{full}
  $\mathbb{C}$, $\mathbb{K}$, $\mathbb{N}$, $\mathbb{Q}$, $\mathbb{R}$,
  $\mathbb{Z}$, à comparer à
  \mathversion{base}
  $\mathbb{C}$, $\mathbb{K}$, $\mathbb{N}$, $\mathbb{Q}$, $\mathbb{R}$,
  $\mathbb{Z}$.

%\item[mathcal :] cette option modifie l’effet des commandes
%  |\mathcal| et |\mathscr|, elles produisent toutes les deux
%  \mathversion{full}$\mathcal{ABCD}$  % $\mathscr{ABCD}$
%  alors que par défaut \mathversion{base} on a $\mathcal{ABCD}$.

\item[frenchstyle :] les majuscules romaines et toutes les lettres grecques
  (majuscules ou minuscules) sont droites, selon la tradition typographique
  française, seules les minuscules romaines restent obliques.

\item[oldstylenumsmath :] fournit les nombres elzéviriens en mode
  mathématique.

\item[narrowiints :] fournit des intégrales multiples plus étroites, plus
      « françaises » :

  \mathversion{full}$\iiint$ et $\displaystyle\iiint$
  \quad au lieu de\quad
  \mathversion{base}$\iiint$ et $\displaystyle\iiint$

\item[partialup :] le symbole |\partial| affiche $\symup{\partial}$
  (droit) au lieu de $\partial$.

\item[fancyReIm :] les commandes |\Re| et |\Im| donnent normalement
  $\Re$ et $\Im$, avec cette option elles produisent respectivement $\RE$ et
  $\IM$.

\item[tight :] les espaces horizontaux sont réduits en math (comme
  ceux de \pkg{fourier-otf}).

\item[noDcommand :] la commande |\D| n'est pas définie (risque
  d’incompatibilité).

\end{description}

L’option \textsf{\textbf{mathcal}} a été supprimée : désormais, les commandes
|$\mathcal{ABC}$| et |$\mathscr{ABC}$| affichent respectivement
\mathversion{full}$\mathcal{ABC}$ et \mathversion{base}$\mathcal{ABC}$
lorsque \pkg{kpfonts-otf.sty} est chargé.

%\enlargethispage*{2\baselineskip}
\section{Autre façon de charger les Kp-fonts}
\label{sec:options-standard}

Lorsqu’on charge les Kp-fonts comme indiqué à la section précédente en
utilisant \file{kpfonts-otf.sty}, le choix des options reste assez limité.
Certains préféreront probablement utiliser directement les commandes
\cmd{setmainfont}, \cmd{setsansfont}, \cmd{setmonofont}, \cmd{setmathfont}
pour avoir accès à toutes leurs options. Parmi eux, ceux qui voudraient
bénéficier des définitions de symboles mathématiques faites dans
\pkg{kpfonts-otf}, peuvent charger celui-ci avec l’option \opt{symbols} qui
permet d’accéder à toutes ces définitions \emph{sans charger aucune fonte} :
\begin{verbatim}
\usepackage[symbols]{kpfonts-otf}
\end{verbatim}
Noter que dans ce cas, \pkg{unicode-math}%
\footnote{Une lecture attentive des manuels \file{unicode-math.pdf} et
  \file{fonspec.pdf} (disponibles dans toutes les distributions TeX) est
  indispensable pour bien maîtriser leur utilisation.}
(et \pkg{fontspec}) \emph{sont chargés} par \pkg{kpfonts-otf}, inutile donc de
les (re)charger, sauf à le faire \emph{avant} l’appel à \pkg{kpfonts-otf} pour
leur passer des options, par exemple :
\begin{verbatim}
\usepackage[math-style=ISO,bold-style=upright]{unicode-math}
\usepackage[symbols]{kpfonts-otf}
\end{verbatim}

L’utilisateur choisit ensuite librement ses polices de texte romaine,
sans-serif et à chasse fixe ainsi que la police mathématique en utilisant
la syntaxe classique\\[.5\baselineskip]
|\set...font{|\optit{nom-fonte}|}[|\optit{options}|]|.

Ceux qui veulent utiliser les KP-fonts pour des documents sans maths, peuvent
évidemment charger uniquement \pkg{fontspec} et faire appel aux commandes
ci-dessous sans charger \pkg{kpfonts-otf}.

\subsection{Options des polices de texte}

Pour les polices de texte de Kp-fonts les options suivantes sont proposées :
\begin{description}
\item[Numbers=Lowercase :] pour avoir les chiffres minuscules ou elzéviriens
  {\addfontfeature{Numbers=Lowercase} 1,2,3} ou
  \style{Numbers=Lining} (par défaut 1,2,3).

\item[SmallCapsFeatures = \{Letters=SmallCaps\} :] pour que la commande
  |\textsc{}| affiche de plus \textlsc{Grandes} petites capitales à la place
  des \textpsc{Petites} obtenues par défaut, correspondant à l’option%
  \footnote{Inversée en version v0.37 pour coller à celle de \pkg{kpfonts}.}
  \style{SmallCapsFeatures = \{Letters=PetiteCaps\}}%
  \footnote{Accolades indispensables à cause du signe \texttt{=} !}.

\item[Ligatures=TeX :]  (par défaut) |!`|\quad|?`|\quad|--|\quad |---|
  affichent respectivement\quad !` \quad ?` -- et ---.

\item[Ligatures=Common :] (par défaut) ligatures automatiques ff ffi ffl fi fl
  (plus s\char"200B=).

\item[StylisticSet=1] modifie l’aspect des ligatures
  {\addfontfeature{StylisticSet=1} ffi ffl fi fl} (ff inchangé).

\item[Ligatures=Required :] ajoute les ligatures
  {\addfontfeature{Ligatures=Required} ft et tt}.

\item[Ligatures=Rare :] ajoute les ligatures
  {\addfontfeature{Ligatures=Rare} ct et st}.

\item[Style=Swash :] pour le {\addfontfeature{Style=Swash}Q long également en
    petites et grandes capitales \textpsc{Que} et \textlsc{Que}}.

\item[Style=Historic :] pour remplacer systématiquement le « s » rond par un
  {\addfontfeature{Style=Historic}« s »} long, il reste possible de forcer un
  « s » rond, en fin de mot notamment, en codant \texttt{s\char"200B=}.
  Cette   option ne devrait plus être utilisée, elle est remplacée par la
  suivante \opt{StylisticSet=12}.

\item[StylisticSet=12 :] option décrite sous le nom de \opt{veryoldstyle}
  p.~\pageref{veryoldstyle}: elle opère un remplacement contextuel du `s’~rond
  par le `ſ’~long. Si \pkg{kpfonts-otf.sty} est chargé, elle a pour alias
  \opt{Style=autolongs}.

\item[Ligatures=Historic :] active les ligatures spécifiques au
  {\addfontfeature{Style=Historic,Ligatures=Historic}« s » long  si, sl, st}.

\item[StylisticSet=2 :] |\SS| affiche {\addfontfeatures{StylisticSet=2}\SS} au
  lieu de {\char"1E9E} (\textit{eszett} majuscule), idem en petites capitales.

\item[StylisticSet=3 :] remplace le caractère Euro (€) par le symbole officiel
  {\addfontfeatures{StylisticSet=3}(€)}, disponible également en italique,
  gras et gras italique.

\end{description}

Le choix parmi ces options se fait normalement globalement pour tout le
document, police par police éventuellement, exemple :
\begin{verbatim}
\setmonofont{KpMono}[Numbers=Lowercase,Style=Historic]
\end{verbatim}
mais si les options sont communes à plusieurs polices on peut ne les énoncer
qu’une fois en procédant de la façon suivante :
\begin{verbatim}
\defaultfontfeatures+[KpRoman,KpSans,KpMono]{Numbers=Lowercase}
\defaultfontfeatures+[KpRoman,KpSans]{%
  Ligatures = Rare,
  Style = Swash,
  SmallCapsFeatures = {Letters=PetiteCaps},
  }
\setmainfont{KpRoman}
\setsansfont{KpSans}
\setmonofont{KpMono}
\end{verbatim}
Remarques : 1. Les commandes |\setmonofont{KpMono}|, |\setsansfont{KpSans}| et
|\setmainfont{KpRoman}| fonctionnent parce que la distribution Kp-fonts est
fournie avec des fichiers \file{KpMono.fontspec}, \file{KpSans.fontspec} et
\file{KpRoman.fontspec}.

2. Noter le |+| après |\defaultfontfeatures| : les options sont
\emph{ajoutées} au options par défaut.

3. On peut regrouper des options : |Ligatures={Rare,Historic}| (avec accolades)
équivaut aux deux options |Ligatures=Rare| et |Ligatures=Historic|.

4. Il est possible de modifier une option \emph{localement}, ainsi pour
afficher les chiffres elzéviriens {\addfontfeatures{Numbers=Lowercase}
  1234576890} alors que l’option globale est |Numbers=Lining|, on utilise la
commande |\addfontfeatures| dans un groupe :
\begin{verbatim}
{\addfontfeatures{Numbers=Lowercase}1234576890}
\end{verbatim}

5. Avec la famille \family{KpRoman}, il est possible de definir deux graisses
supplémentaires \famvar{Light} et \famvar{Semibold} empruntées à la famille
\family{KpLight} comme ceci :
\begin{verbatim}
\newfontfamily\KpLight{KpLight}[<mêmes options que KpRoman>]
\newcommand*{\ltseries}{\KpLight}
\newcommand*{\sbseries}{\KpLight\bfseries}
\DeclareTextFontCommand{\textlt}{\ltseries}
\DeclareTextFontCommand{\textsb}{\sbseries}
\end{verbatim}
  Ces graisses s’obtiennent ensuite grâce aux commandes  |\ltseries| et
  |\sbseries| à utiliser dans un groupe ou bien avec les commandes à un
  argument |\textlt{}| et |\textsb{}|.

  Avec la famille \family{KpLight}, on peut définir de même les graisses
  \famvar{Semibold} et \famvar{Extrabold}.

\subsection{Options des polices mathématiques}

Les options suivantes peuvent être passées à \pkg{unicode-math}%
\footnote{Voir la documentation \file{unicode-math.pdf}.}
ou à la commande |\setmathfont{}| :
\begin{description}
\item[math-style =] \opt{ISO}, \opt{TeX} (défaut), \opt{french}, \opt{upright} ;
\item[bold-style =] \opt{ISO}, \opt{TeX} (défaut), \opt{upright} ;
\item[partial =] \opt{upright} (italique par défaut) ;
\item[nabla =]  \opt{italic}  (droit par défaut) ;
\end{description}

Les variantes de style affectent chacune une famille de glyphes, voici les
trois premières :
\begin{description}
\item[Style=mathcal] (\texttt{+ss01}) les commandes |\mathcal{}| et
  |\mathscr{}| produisent \mathversion{full}$\mathcal{ABC}$
  au lieu de \mathversion{base}$\mathcal{ABC}$ (voir remarque ci-dessous) ;

\item[Style=bbsans]  (\texttt{+ss02}) les glyphes produits par la commande
  |\mathbb{}| sont en sans-serif \mathversion{full}$\mathbb{ABC}$ au lieu de
  \mathversion{base}$\mathbb{ABC}$ ;

\item[Style=narrowiints] (\texttt{+ss03}) les intégrales multiples sont plus
  compactes : \mathversion{full}$\iiint$ au lieu de
  \mathversion{base}$\iiint$.
\end{description}

\textbf{Remarque :} pour que |$\mathcal{ABC}$| et |$\mathscr{ABC}$| affichent
respectivement \mathversion{full}$\mathcal{ABC}$ et
\mathversion{base}$\mathcal{ABC}$,
on peut utiliser l’option |range| de \pkg{unicode-math} comme ceci :\\
|\setmathfont{KpMath-Regular}[|\optit{options}|]|\\
|\setmathfont{KpMath-Regular}[range={cal,bfcal},StylisticSet=1]|\\
Les \emph{deux} lignes sont nécessaires : la première ligne charge
\family{KpMath} normalement, la seconde modifie la sortie de la commande
|\mathcal{}|.

\mathversion{base}
Les quatre tables suivantes recensent les autres variantes de style proposées.
\nopagebreak\par\noindent
  \begin{minipage}[t]{0.45\linewidth}\centering
    \captionof{table}{Style=leqslant (\texttt{+ss04})} \hlabel{ss04}
    \begin{tabular}[t]{@{}lcc@{}}
      \hline
      Commande          & Base           & Variante \\
      \hline
      \cmd{leq}         & $\leq$         & $\leqslant$ \\
      \cmd{geq}         & $\geq$         & $\geqslant$ \\
      \cmd{nleq}        & $\nleq$        & $\nleqslant$ \\
      \cmd{ngeq}        & $\ngeq$        & $\ngeqslant$ \\
      \cmd{leqq}        & $\leqq$        & $\leqqslant$ \\
      \cmd{geqq}        & $\geqq$        & $\geqqslant$ \\
      \cmd{eqless}      & $\eqless$      & $\eqslantless$ \\
      \cmd{eqgtr}       & $\eqgtr$       & $\eqslantgtr$ \\
      \cmd{lesseqgtr}   & $\lesseqgtr$   & $\lesseqslantgtr$ \\
      \cmd{gtreqless}   & $\gtreqless$   & $\gtreqslantless$ \\
      \cmd{lesseqqgtr}  & $\lesseqqgtr$  & $\lesseqqslantgtr$ \\
      \cmd{gtreqqless}  & $\gtreqqless$  & $\gtreqqslantless$ \\
      \hline
    \end{tabular}
  \end{minipage}\hspace{\fill}
  \begin{minipage}[t]{0.5\linewidth}\centering
    \captionof{table}{Style=smaller (\texttt{+ss05})}\hlabel{ss05}
    \begin{tabular}[t]{@{}lcc@{}}
      \hline
      Commande               & Base                & Variante \\
      \hline
      \cmd{mid}              & $\mid$              & $\shortmid$ \\
      \cmd{nmid}             & $\nmid$             & $\nshortmid$ \\
      \cmd{parallel}         & $\parallel$         & $\shortparallel$ \\
      \cmd{nparallel}        & $\nparallel$        & $\nshortparallel$ \\
      \cmd{parallelslant}    & $\parallelslant$    & $\shortparallelslant$ \\
      \cmd{nparallelslant}   & $\nparallelslant$   & $\nshortparallelslant$ \\
      \hline
    \end{tabular}
  \end{minipage}
\par\noindent
  \begin{minipage}[t]{0.45\linewidth}\centering
    \captionof{table}{Style=subsetneq (\texttt{+ss06})}\hlabel{ss06}
    \begin{tabular}[t]{@{}lcc@{}}
      \hline
      Commande          & Base            & Variante \\
      \hline
      \cmd{subsetneq}   & $\subsetneq$    & $\varsubsetneq$ \\
      \cmd{supsetneq}   & $\supsetneq$    & $\varsupsetneq$ \\
      \cmd{subsetneqq}  & $\subsetneqq$   & $\varsubsetneqq$ \\
      \cmd{supsetneqq}  & $\supsetneqq$   & $\varsupsetneqq$ \\
      \hline
    \end{tabular}
  \end{minipage}\hspace{\fill}
  \begin{minipage}[t]{0.5\linewidth}\centering
    \captionof{table}{Style=parallelslant (\texttt{+ss07})}\hlabel{ss07}
    \begin{tabular}[t]{@{}lcc@{}}
      \hline
      Commande              & Base               & Variante \\
      \hline
      \cmd{parallel}        & $\parallel$        & $\parallelslant$ \\
      \cmd{nparallel}       & $\nparallel$       & $\nparallelslant$ \\
      \cmd{shortparallel}   & $\shortparallel$   & $\shortparallelslant$ \\
      \cmd{nshortparallel}  & $\nshortparallel$  & $\nshortparallelslant$ \\
      \hline
    \end{tabular}
  \end{minipage}

\vspace{2\baselineskip}
Exemple : pour activer les styles 4 (leqslant) et 6 (subsetneq) on code\\
|\setmathfont{KpMath-Regular.otf}[StylisticSet={4,6}]|\quad ou bien\\
|\setmathfont{KpMath-Regular.otf}[Style={leqslant,subsetneq}]|\\
mais cette variante plus parlante n’est disponible que si
\pkg{kpfonts-otf.sty} a été chargé (éventuellement avec l’option \opt{symbols}).
%\end{table}

\vspace{\baselineskip}
La table~\vref{cv} recense les variantes de glyphes proposées.
\mathversion{full}

\begin{table}[ht]
  \centering
  \caption{Variantes de glyphes}
  \hlabel{cv}
  \begin{tabular}{@{}>{\ttfamily}lccl@{}}
    \hline
           & Base          & Variante         & Commande\\
    \hline
      cv00 & $\Re\quad\Im$ & $\RE\quad\IM$    & \cmd{Re}\quad\cmd{Im}\\
      cv01 & $\hslash$     & $\mithbar$       & \cmd{hslash} ou \cmd{hbar} \\
      cv02 & $\emptyset$   & $\varemptyset$   & \cmd{emptyset} \\
      cv03 & $\epsilon$    & $\varepsilon$    & \cmd{epsilon} \\
      cv04 & $\kappa$      & $\varkappa$      & \cmd{kappa} \\
      cv05 & $\pi$         & $\varpi$         & \cmd{pi} \\
      cv06 & $\phi$        & $\varphi$        & \cmd{phi} \\
      cv07 & $\rho$        & $\varrho$        & \cmd{rho} \\
      cv08 & $\sigma$      & $\varsigma$      & \cmd{sigma} \\
      cv09 & $\theta$      & $\vartheta$      & \cmd{theta} \\
      cv10 & $\Theta$      & $\varTheta$      & \cmd{Theta}\\
    \hline
  \end{tabular}
\end{table}

\vspace{\baselineskip}
Exemple : |\setmathfont{KpMath-Regular.otf}[CharacterVariant={3,6}]|\\
fera en sorte que les commandes |\epsilon| et |\phi| produisent $\varepsilon$
et $\varphi$ plutôt que $\epsilon$ et $\phi$.
Ceci vaut pour toutes les formes et graisses (droit, italique, gras, gras
italique, sans-serif, etc.), ainsi avec l’option \opt{math-style=french},
|\epsilon| et |\phi| produisent $\symup{\varepsilon}$ and $\symup{\varphi}$.

Note sur \cmd{hbar} : pour \pkg{unicode-math} les commandes \cmd{hbar} et
\cmd{hslash} affichent le même caractère Unicode U+210F
tandis que \pkg{amsmath} choisit deux définitions différentes pour ces
commandes (un h italique avec une barre horizontale ou oblique).\\
\pkg{kpfonts-otf} suit \pkg{unicode-math}, le h italique avec barre
horizontale peut être obtenu grâce à la variante \texttt{cv01}
(code \cmd{hslash} ou \cmd{hbar}) ou directement en codant \cmd{mithbar}.

\section{Commandes spécifiques definies dans
  \pkg{kpfonts-otf.sty}}

%\subsection{Commande \texttt{\boi kpeuro}}
%\label{ssec:kpeuro}

%La commande |\kpeuro| %définie dans \pkg{kpfonts-otf.sty}
%admet un argument
%optionnel : |\kpeuro[1,50]{}| imprime \kpeuro[1,50] (espace-mot insécable)
%ou {\addfontfeatures{StylisticSet=3}\kpeuro[1,50] si l’option \opt{eurosym}
%(ou la \emph{feature} |StylisticSet=3|) est activée.

\subsection{Variantes des symboles d'intégration}

Kp-fonts propose des variantes des signes intégrales spécialement adaptées
à la présentation des primitives, elles se codent |\varint|,
|\variint|, |\variiint|, |\variiiint| et |\varidotsint|.
Comparer $\int f(t)\,dt$ et $\varint f(t)\,dt$ et aussi

\[\int f(t)\,dt \qquad\text{et}\qquad\varint f(t)\,dt\]

On peut les coupler à la commande |\D{...}|, qui affiche un « d » droit
et optimise les espacements :
|\displaystyle\varint f(t)\D{t}| donne	$\displaystyle\varint f(t)\D{t}$.


\subsection{Symboles spécifiques}
\label{ssec:symb-spec-kp}

Rappelons que la liste des symboles Unicode présents dans Kp-fonts est
disponible dans le fichier \file{unimath-kpfonts.pdf}.

Sauf erreur de ma part les symboles présentés dans les tableaux suivants,
n’ont pas de code Unicode, ils sont codés en zone privée pour Kp-fonts.

\begin{center}\begin{tabular}{r>{$}c<{$}|r>{$}c<{$}}
\verb=\mmapsto=&\mmapsto&\verb=\longmmapsto=&\longmmapsto\\
\verb=\mmapsfrom=&\mmapsfrom&\verb=\longmmapsfrom=&\longmmapsfrom\\
\verb=\Mmapsto=&\Mmapsto&\verb=\Longmmapsto=&\Longmmapsto\\
\verb=\Mmapsfrom=&\Mmapsfrom&\verb=\Longmmapsfrom=&\Longmmapsfrom\\
\verb=\leftrightdasharrow=&\leftrightdasharrow&\verb=\leadsto=&\leadsto
\end{tabular}\end{center}

\begin{center}\begin{tabular}{r>{$}c<{$}|r>{$}c<{$}}
\verb=\boxright=&\boxright&\verb=\boxleft=&\boxleft\\
\verb=\circleright=&\circleright&\verb=\circleleft=&\circleleft\\
\verb=\Diamondright=&\Diamondright&\verb=\Diamondleft=&\Diamondleft\\
\verb=\boxdotright=&\boxdotright&\verb=\boxdotleft=&\boxdotleft\\
\verb=\circledotright=&\circledotright&\verb=\circledotleft=&\circledotleft\\
\verb=\Diamonddotright=&\Diamonddotright&\verb=\Diamonddotleft=&\Diamonddotleft
\end{tabular}\end{center}

\begin{center}\begin{tabular}{r>{$}c<{$}|r>{$}c<{$}}
\verb=\boxRight=&\boxRight&\verb=\boxLeft=&\boxLeft\\
\verb=\boxdotRight=&\boxdotRight&\verb=\boxdotLeft=&\boxdotLeft\\
\verb=\DiamondRight=&\DiamondRight&\verb=\DiamondLeft=&\DiamondLeft\\
\verb=\DiamonddotRight=&\DiamonddotRight&\verb=\DiamonddotLeft=&\DiamonddotLeft
\end{tabular}\end{center}

\begin{center}\begin{tabular}{r>{$}c<{$}|r>{$}c<{$}}
\verb=\multimapdot=&\multimapdot&\verb=\multimapdotinv=&\multimapdotinv\\
\verb=\multimapdotboth=&\multimapdotboth\\
\verb=\multimapbothvert=&\multimapbothvert&\verb=\multimapdotbothvert=&\multimapdotbothvert\\
\verb=\multimapdotbothAvert=&\multimapdotbothAvert&\verb=\multimapdotbothBvert=&\multimapdotbothBvert
\end{tabular}\end{center}

\begin{center}\begin{tabular}{r>{$}c<{$}|r>{$}c<{$}|r>{$}c<{$}}
\verb=\capplus=&\capplus&\verb=\sqcupplus=&\sqcupplus&\verb=\sqcapplus=&\sqcapplus\\
\verb=\parallelslant=&\parallelslant&\verb=\colonsim=&\colonsim&\verb=\colonapprox=&\colonapprox\\
\verb=\parallelbackslant=&\parallelbackslant&\verb=\Colonsim=&\Colonsim&\verb=\Colonapprox=&\Colonapprox\\
\verb=\eqqColon=&\eqqColon&\verb=\Colondash=&\Colondash&\verb=\dashColon=&\dashColon\\
\end{tabular}\end{center}

\begin{center}\begin{tabular}{r>{$}c<{$}|r>{$}c<{$}|r>{$}c<{$}}
\verb=\strictif=&\strictif&\verb=\strictfi=&\strictfi&\verb=\strictiff=&\strictiff\\
\verb=\circledvee=&\circledvee&\verb=\circledwedge=&\circledwedge&\verb=\circledbar=&\circledbar\\
\verb=\openJoin=&\openJoin&\verb=\opentimes=&\opentimes&\verb=\VvDash=&\VvDash\\
\verb=\lambdaslash=&\lambdaslash&\verb=\lambdabar=&\lambdabar&\verb=\Wr=&\Wr
\end{tabular}\end{center}

\renewcommand{\arraystretch}{2}

\begin{center}
\begin{tabular}{r>{$}c<{$}c|r>{$}c<{$}c}

\verb+\idotsint+ &\idotsint& $\displaystyle\idotsint$\\
\verb+\ointclockwise+ &\ointclockwise&$\displaystyle\ointclockwise$
&\verb+\varointctrclockwise+&\varointctrclockwise& $\displaystyle\varointctrclockwise$\\
\verb+\oiintclockwise+ &\oiintclockwise&$\displaystyle\oiintclockwise$&\verb+\oiintctrclockwise+&\oiintctrclockwise&$\displaystyle\oiintctrclockwise$\\
\verb+\varoiintclockwise+&\varoiintclockwise& $\displaystyle\varoiintclockwise$&\verb+\varoiintctrclockwise+&\varoiintctrclockwise&$\displaystyle\varoiintctrclockwise$\\
\verb+\oiiintclockwise+ &\oiiintclockwise&$\displaystyle\oiiintclockwise$&\verb+\oiiintctrclockwise+ &\oiiintctrclockwise&$\displaystyle\oiiintctrclockwise$\\
\verb+\varoiiintclockwise+ &\varoiiintclockwise& $\displaystyle\varoiiintclockwise$&\verb+\varoiiintctrclockwise+&\varoiiintctrclockwise&$\displaystyle\varoiiintctrclockwise$\\
\verb+\sqiint+&\mbox{$\sqiint$}&$\displaystyle\sqiint$&\verb+\sqiiint+&\mbox{$\sqiiint$}&$\displaystyle\sqiiint$
\end{tabular}
\end{center}

\subsection{Accents extensibles}

\begin{itemize}
\item \cmd{wideoverbar} and \cmd{mathunderbar}%
  \footnote{\cmd{overline} and \cmd{underline} utilisent \cmd{rule}, elles
     ne sont pas liées à la police.}
  \[\wideoverbar{x}\quad \wideoverbar{xy}\quad \wideoverbar{xyz}\quad
    \wideoverbar{A\cup B}\quad \wideoverbar{A\cup (B\cap C)\cup D}\quad
    \mathunderbar{m+n+p}\]

\item \cmd{widehat} et \cmd{widetilde}
\[\widehat{x}\; \widehat{xx} \;\widehat{xxx} \;\widehat{xxxx}\;
  \widehat{xxxxx} \;\widehat{xxxxxx} \;\widetilde{x}\; \widetilde{xx}\;
  \widetilde{xxx} \;\widetilde{xxxx} \;\widetilde{xxxxx}\;
  \widetilde{xxxxxx}\]

\item \cmd{widecheck}  et \cmd{widebreve}
  \[\widecheck{x}\quad \widecheck{xxxx}\quad \widecheck{xxxxxx}\quad
    \widebreve{x}\quad \widebreve{xxxx}\quad \widebreve{xxxxxx}
  \]

\item \cmd{overparen} et \cmd{underparen}
  \[\overparen{x}\quad \overparen{xy}\quad \overparen{xyz}\quad
    \mathring{\overparen{A\cup B}}\quad
    \overparen{A\cup (B\cap C)\cup D}^{\smwhtcircle}\quad
    \overparen{x+y}^{2}\quad \overparen{a+b+...+z}^{26}\]

\[\underparen{x}\quad \underparen{xz} \quad \underparen{xyz}
  \quad \underparen{x+z}_{2}\quad \underparen{a+b+...+z}_{26}\]

\item \cmd{overbrace} et \cmd{underbrace}
  \[\overbrace{a}\quad \overbrace{ab}\quad \overbrace{abc}\quad
  \overbrace{abcd}\quad \overbrace{abcde}\quad
  \overbrace{a+b+c}^{3}\quad \overbrace{ a+b+. . . +z }^{26}\]

\[\underbrace{a}\quad\underbrace{ab}\quad\underbrace{abc}\quad
  \underbrace{abcd}\quad \underbrace{abcde}\quad
  \underbrace{a+b+c}_{3}  \quad \underbrace{ a+b+...+z }_{26}\]

\item \cmd{overrightarrow} et \cmd{overleftarrow}
  \[\overrightarrow{v}\quad \overrightarrow{M}\quad \overrightarrow{vv}
  \quad \overrightarrow{AB}\quad \overrightarrow{ABC}
  \quad \overrightarrow{ABCD} \quad \overrightarrow{ABCDEFGH}.
\]

\[\overleftarrow{v}\quad \overleftarrow{M}\quad \overleftarrow{vv}
  \quad \overleftarrow{AB}\quad \overleftarrow{ABC}
  \quad \overleftarrow{ABCD} \quad \overleftarrow{ABCDEFGH}\]

\item Enfin \cmd{widearc} et \cmd{widearcarrow} (ou \cmd{overrightarc})
\[\widearc{AMB}\quad \widearcarrow{AMB}\]
\end{itemize}

\subsection{« Versions » math}

Il est possible de définir plusieurs versions de la police mathématique
\family{KpMath}, les plus courantes étant une version grasse (\textit{bold})
et une version sans empattements (\textit{sans}).

On définit dans le préambule les versions désirées, par exemple :\\
|\setmathfont{KpMath-Regular.otf}[version=base|, \optit{options} |]|\\
|\setmathfont{KpMath-Bold.otf}[version=bold|, \optit{options} |]|\\
|\setmathfont{KpMath-Semibold.otf}[version=semibold|, \optit{options} |]|\\
|\setmathfont{KpMath-Sans.otf}[version=sans|, \optit{options} |]|\\
|\setmathfont{KpMath-Light.otf}[version=light|, \optit{options} |]|\\
et ensuite on passe d’une version  à l’autre grâce à la commande
|\mathversion{|\optit{nom}|}|.

Exemple\footnote{\mathversion{full}L’option \opt{CharacterVariant=3} remplace le
$\epsilon$ par $\varepsilon$.} :
\begin{verbatim}
\setmathfont{KpMath-Bold.otf}[version=bold,
                              Style=leqslant, CharacterVariant=3]
\setmathfont{KpMath-Sans.otf}[version=sans,
                              Style=leqslant, CharacterVariant=3]
\end{verbatim}

Voici la même équation en trois versions, normale, grasse et sans empattement :
\mathversion{base}

\[ \mathbb{E}_i(N_i) = \sum_{n\ge1} P_i(N_i\ge n)
                     = \frac{\epsilon_i}{1-\epsilon_i}<+\infty \]

|\mathversion{bold}|\mathversion{bold}
\[ \mathbb{E}_i(N_i) = \sum_{n\ge1} P_i(N_i\ge n)
                     = \frac{\epsilon_i}{1-\epsilon_i}<+\infty \]

|\mathversion{sans}|\mathversion{sans}
\[ \mathbb{E}_i(N_i) = \sum_{n\ge1} P_i(N_i\ge n)
                     = \frac{\epsilon_i}{1-\epsilon_i}<+\infty \]
\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-engine: luatex
%%% TeX-master: t
%%% coding: utf-8
%%% End:
