%#!lualatex -synctex=1 spotxcolor
\documentclass[luatex]{article}\listfiles
\usepackage{shortvrb}\AtBeginDocument{\MakeShortVerb{\|}}
\usepackage{needspace}
\usepackage{hyperref}
\usepackage[table]{xcolor}

% For Examples
\usepackage{tikz}
\usetikzlibrary{patterns.meta}
\usepackage{tcolorbox}
\tcbuselibrary{skins}

\usepackage{spotxcolor}

% Define Triadic Spot Colors for Examples
\definespotcolor{DIC161s}{DIC 161s*}{0, 0.64, 1, 0}   % Vermilion
\definespotcolor{DIC256s}{DIC 256s*}{0.9, 0, 0.4, 0}  % Green
\definespotcolor{DIC200s}{DIC 200s*}{0.5, 0.8, 0, 0}  % Purple

% PANTONE Metallic Coated (true spot color — Lab→CMYK via ML model)
\definespotcolor{PANTONE876C}{PANTONE 876 C}{0.4467, 0.7463, 0.9732, 0.0}

\makeatletter\let\hangingbox\@hangfrom\makeatother
\newcommand\pkg[1]{\textsf{#1}}
\newcommand\cs[1]{\texttt{\textbackslash #1}}
\newcommand\op[1]{\texttt{#1}}

\title{\textsf{spotxcolor} Package}
\author{Munehiro Yamamoto}
\date{2026/03/29 v1.7}

\begin{document}
\maketitle

\begin{abstract}
This package provides robust spot color (e.g., DIC, PANTONE) support for the \textsf{xcolor} package across all major \TeX\ engines.
It resolves structural PDF issues found in legacy packages and provides explicit fallback mechanisms for various drivers.
\end{abstract}

\section{Motivation \& Features}
While the legacy \textsf{spotcolor} package has been used for years, it suffers from structural PDF compatibility issues with modern \textsf{expl3} and \textsf{xcolor} updates.
The \textsf{colorspace} package is an excellent modern alternative, but it lacks full support for the \texttt{dvipdfmx} driver.
To address these gaps, the \textsf{spotxcolor} package natively hooks into the \textsf{xcolor} package to provide a universal, print-safe solution.
Its core features include:

\begin{itemize}
\item \textbf{Native \textsf{xcolor} Integration:} Use spot colors exactly like standard colors (e.g., |\textcolor|, |\pagecolor|), generating perfect PDF structures for \texttt{pdftex} and \texttt{luatex}.
\item \textbf{Universal Engine Support \& Safe Fallbacks:} Ensures safe CMYK fallback for \texttt{dvipdfmx} and \texttt{xetex} when using standard macros, while providing explicit injection commands (|\SpotColor|) for true spot color output in \texttt{dvipdfmx}.
\item \textbf{Advanced Graphics (\textsf{TikZ}/\textsf{PGF}) Support:} Internally patches \textsf{PGF} driver macros and pattern primitives to emit true spot color PDF operators.
It supports fill/stroke separation, fadings, blend modes, and uncolored patterns (\texttt{patterns} and \texttt{patterns.meta}).
Spot color tints are auto-detected from CMYK values throughout the entire PGF rendering pipeline.
\item \textbf{Seamless Decorations:} Works flawlessly with \textsf{colortbl} (zebra-striped tables) and \textsf{tcolorbox} (frames, backgrounds, shadows).
\item \textbf{Complete Backward Compatibility:} Perfectly emulates user commands from both \textsf{spotcolor} and \textsf{colorspace} packages.
\end{itemize}

\section{Requirements}
This package requires a modern \TeX\ Live environment (with an up-to-date \textsf{expl3}/\textsf{l3kernel}), alongside the \textsf{xcolor} and \textsf{iftex} packages.

\section{Loading the \textsf{spotxcolor} Package}

Load the \textsf{spotxcolor} package in your preamble. It automatically detects your engine via the \textsf{iftex} package.

\begin{quote}
\begin{verbatim}
\usepackage{spotxcolor}
\end{verbatim}
\end{quote}

\section{Usage}

\subsection{Defining and Using Spot Colors}
Use |\definespotcolor| to register a spot color.
The arguments are: \LaTeX\ name, PDF name, and CMYK values.
Once registered, you can use standard \textsf{xcolor} commands:

\begin{quote}
\begin{verbatim}
\definespotcolor{DIC161s}{DIC 161s*}{0, 0.64, 1, 0}

\textcolor{DIC161s}{This text is DIC 161.}
\end{verbatim}
\end{quote}

\noindent PANTONE colors work the same way.

\begin{quote}
\begin{verbatim}
% PANTONE Metallic Coated (true spot color)
\definespotcolor{PANTONE876C}{PANTONE 876 C}{0.4467, 0.7463, 0.9732, 0}

\textcolor{PANTONE876C}{This text is PANTONE 876 C (Metallic Gold).}
\textcolor{PANTONE876C!50}{50% tint of PANTONE 876 C.}
\end{verbatim}
\end{quote}

\noindent The PDF Separation array will contain |/PANTONE#20876#20C|, matching the encoding produced by Adobe Illustrator.

\vspace{0.5em}
\noindent Live example:
\textcolor{PANTONE876C}{\textbf{PANTONE 876 C (100\%)}} \quad
\textcolor{PANTONE876C!50}{\textbf{50\%}} \quad
\textcolor{PANTONE876C!25}{\textbf{25\%}}

\subsection{Dvipdfmx Explicit Spot Colors}
All standard macros (|\color|, |\textcolor|, |\pagecolor|) produce true spot color output on \texttt{dvipdfmx}/\texttt{xetex} as well, via automatic \verb|\special{pdf:code}| injection.

The |\SpotColor| command remains available as a lightweight, low-level alternative for direct PDF literal injection:

\begin{quote}
\begin{verbatim}
\SpotColor{DIC161s}{1.0}
This text is 100\% DIC 161.

\SpotColor{DIC161s}{0.5}
This text is 50\% DIC 161.
\end{verbatim}
\end{quote}

\subsection{Note for \texttt{(u)p\LaTeX} Users}
If you compile your document with \texttt{platex} or \texttt{uplatex} and generate a PDF via \texttt{dvipdfmx}, you \textbf{must} specify the \texttt{dvipdfmx} driver option globally in your document class:

\begin{quote}
\begin{verbatim}
\documentclass[dvipdfmx]{article}
\end{verbatim}
\end{quote}

Without this option, modern \textsf{expl3} and \textsf{xcolor} will default to the \texttt{dvips} driver, and the PDF objects for spot colors will not be generated correctly.


\section{Examples in Advanced Graphics}

The true power of the \textsf{spotxcolor} package lies in its flawless integration with modern graphics libraries.
For the following examples, we have defined three spot colors forming a triadic color harmony: \textcolor{DIC161s}{\textbf{DIC161s}} (Vermilion), \textcolor{DIC256s}{\textbf{DIC256s}} (Green), and \textcolor{DIC200s}{\textbf{DIC200s}} (Purple).

\subsection{TikZ: Patterns and Multiply Blend Mode}

\textsf{spotxcolor} safely forces PGF's hardcoded RGB patterns into the CMYK color space to ensure print safety. It also flawlessly handles PDF blend modes (e.g., multiply) with spot colors.

\vspace{1em}
\begin{center}
\begin{tikzpicture}
  % 1. Patterns
  \draw[DIC161s, ultra thick, pattern={Lines[angle=45, distance=6pt, line width=1.5pt]}, pattern color=DIC161s!60]
    (0,0) rectangle (3, 3)
    node[pos=0.5, fill=white, inner sep=2pt, font=\sffamily\small, text=DIC161s] {Meta Lines (60\%)};

  % 2. Multiply Blend Mode with Triadic Colors
  \begin{scope}[xshift=6cm, yshift=1.5cm, blend mode=multiply]
    \fill[DIC161s] (90:0.8) circle (1.2);
    \fill[DIC256s] (210:0.8) circle (1.2);
    \fill[DIC200s] (330:0.8) circle (1.2);
  \end{scope}
\end{tikzpicture}
\end{center}
\vspace{1em}

\subsection{tcolorbox Integration}

Spot colors and their tints (e.g., \texttt{DIC200s!10}) can be used directly within complex \textsf{tcolorbox} environments, including frames, backgrounds, and drop shadows.

\vspace{1em}
\begin{tcolorbox}[
  enhanced,
  colframe=DIC200s,               % Frame color
  colback=DIC200s!5,              % Background color (5% tint)
  coltitle=white,                 % Title text color
  colbacktitle=DIC200s!80,        % Title background color (80% tint)
  fonttitle=\sffamily\bfseries,
  title={Triadic Harmony with \textsf{tcolorbox}},
  drop fuzzy shadow=DIC200s!30    % Shadow color (30% tint)
]
This box is styled entirely using \textbf{DIC 200s} and its tints.
The frame is 100\% spot color, the title background is 80\%, the content background is 5\%, and even the drop shadow is rendered safely using a 30\% tint.

\vspace{0.5em}
\noindent You can also mix text colors easily: \textcolor{DIC161s}{\textbf{Vermilion Text}} and \textcolor{DIC256s}{\textbf{Green Text}}.
\end{tcolorbox}


\section{Spot Color Dictionaries and Tools}

\subsection{Included Dictionary (\texttt{dic.def})}
For your convenience, the package includes \texttt{dic.def} in the \texttt{doc} directory, which contains definitions for the widely used DIC Color Guide in Japanese commercial printing.
The CMYK values in this file are natively extracted from Adobe's official legacy definitions (\texttt{.acbl}), ensuring absolute print-accurate fallback values.

\begin{tcolorbox}[
  enhanced,
  colframe=DIC161s!90!black,
  colback=DIC161s!5,
  coltitle=white,
  colbacktitle=DIC161s,
  fonttitle=\sffamily\bfseries\large,
  title={\raisebox{-0.2ex}{\Huge \textbf{!}}\quad IMPORTANT WARNING},
  drop fuzzy shadow=DIC161s!30,
  attach boxed title to top left={xshift=10pt, yshift=-10pt},
  boxed title style={rounded corners, sharp corners=southwest}
]
Please do \textbf{not} load the entire \texttt{dic.def} file (or any other large dictionary) into your preamble using \verb|\input|.

Calling \verb|\definespotcolor| immediately generates PDF objects (ColorSpace dictionaries and Tint Transform Functions) to guarantee strict PDF specification compliance and robustness across all rendering engines.

Loading thousands of unused spot colors will bloat your PDF with unnecessary objects and resource aliases, which may cause PDF viewers (including Adobe Acrobat) to freeze or fail to render the document.

Instead, open \texttt{dic.def} in a text editor, copy \textbf{only} the specific \verb|\definespotcolor| lines you actually need, and paste them into your document preamble.
\end{tcolorbox}

\subsection{Extraction Tools}
If you need spot colors from other color books (e.g., PANTONE, TOYO, HKS), you can extract them from Adobe Illustrator's color book files using the provided Ruby scripts located in the \texttt{doc} directory:

\begin{itemize}
\item \textbf{\texttt{acbl2def.rb}}: Extracts native, perfect CMYK values from Adobe Color Book Legacy (\texttt{.acbl}) XML files. \emph{(Highly Recommended)}
\item \textbf{\texttt{ase2def.rb}}: Extracts CMYK values from Adobe Swatch Exchange (\texttt{.ase}) files exported directly from Illustrator.
\item \textbf{\texttt{acb2def.rb}}: Parses modern binary Adobe Color Book (\texttt{.acb}) files. Note that many \texttt{.acb} files store colors in the Lab color space. This script applies a 3rd-Degree Polynomial Regression Model (trained on native Adobe data) to predict highly accurate CMYK fallback values while minimizing K-channel muddiness. While extremely close to native values, it remains an approximation. For exact manufacturer values, use \texttt{acbl2def.rb} or \texttt{ase2def.rb}.
\end{itemize}

\subsection{A Note on PANTONE Color Families}

Not all PANTONE color books produce true spot colors in PDF.
When using \texttt{acb2def.rb} to generate PANTONE definitions, be aware of the distinction:

\begin{description}
\item[PANTONE Metallic Coated, PANTONE Solid Coated/Uncoated, etc.]
These represent actual spot inks that require a dedicated printing plate.
Adobe Illustrator creates a \texttt{/Separation} color space for these colors, and they appear as true spot colors in the output preview.
\texttt{acb2def.rb} converts their Lab values to CMYK via the built-in ML model to produce accurate fallback colors for on-screen display.

\item[PANTONE+ CMYK Coated / PANTONE+ CMYK Uncoated]
These are \emph{process color} formulations---CMYK recipes designed to approximate PANTONE colors using only the four standard process inks.
Adobe Illustrator writes them as plain CMYK operators (e.g., |1 0.94 0 0.5 k|) without creating \texttt{/Separation} entries.
While \texttt{acb2def.rb} can generate \texttt{.def} files for these families, the resulting colors will function as process colors in practice.
\end{description}

\section{Backward Compatibility}

\textsf{spotxcolor} allows you to safely reuse legacy code and dictionaries written for both the \textsf{spotcolor} and \textsf{colorspace} packages without raising errors.

\subsection{Wrapper for \textsf{spotcolor}}
The legacy \textsf{spotcolor} package defined colors using a three-step process.
\textsf{spotxcolor} seamlessly maps these to its modern implementation:

\begin{quote}
\begin{verbatim}
% Legacy syntax:
\NewSpotColorSpace{DIC}
\AddSpotColor{DIC}{DIC161s}{DIC\SpotSpace 161s*}{0 0.64 1 0}
\SetPageColorSpace{DIC}

% spotxcolor interpretation:
% The \AddSpotColor macro safely acts as a wrapper for:
% \definespotcolor{DIC161s}{DIC 161s*}{0, 0.64, 1, 0}
\end{verbatim}
\end{quote}
Note that |\NewSpotColorSpace|
and |\SetPageColorSpace| are now defined as dummy macros. In modern environments, \textsf{spotxcolor} globally and safely manages PDF resource dictionaries.

\subsection{Wrapper for \textsf{colorspace}}
The \textsf{colorspace} package required authors to manually manipulate page resource dictionaries using specific commands:

\begin{itemize}
\item |\pagecolorspace{<name>}|
\item |\resetpagecolorspace|
\end{itemize}

\textsf{spotxcolor} defines both of these as \textbf{empty dummy macros} (they do nothing).
Why?
Because \textsf{spotxcolor} utilizes robust, modern techniques (like hooking into PGF's resource management API) to inject color spaces globally and safely.
Attempting to manually manipulate the \texttt{/ColorSpace} dictionary on a per-page basis is dangerous in modern \LaTeX\ and can easily corrupt the PDF structure.
By neutralizing these legacy commands, \textsf{spotxcolor} guarantees that older documents will compile perfectly and safely without any structural PDF errors.


\section{Compatibility with pdfmanagement (l3pdf)}

\subsection{Background}

Modern \LaTeX\ (since 2020) provides an optional PDF resource management layer called \emph{pdfmanagement},
activated by placing |\DocumentMetadata{}| before |\documentclass|.
When pdfmanagement is active, it takes exclusive control of all PDF page resources---including the \texttt{/ColorSpace} dictionary---and direct access via |\pdfpageresources| or |\special{pdf:put}| is forbidden.

Furthermore, pdfmanagement redefines PGF's |\pgfutil@addpdfresource@colorspaces| with its own parser (|\__pdfmanagement_patch_pgfcolorspaces:w|), which expects a different argument format.
Passing the raw object references that \textsf{spotxcolor} produces (e.g., |42 0 R|) through this rewritten macro causes a ``Runaway argument'' error.

\subsection{Automatic Detection and Dispatch}

\textsf{spotxcolor} detects pdfmanagement at load time using |\IfPDFManagementActiveTF| and automatically switches its resource registration strategy:

\begin{center}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{ll}
\hline
\textbf{Mode} & \textbf{Resource Registration} \\
\hline
Traditional (no pdfmanagement) & |\pgfutil@addpdfresource@colorspaces| \\
                               & or |\pdfpageresources| / |\special{pdf:put}| \\
\hline
pdfmanagement active & |\pdfmanagement_add:nne| \\
                     & |{Page/Resources/ColorSpace}| \\
\hline
\end{tabular}
\end{center}

\noindent This switch is transparent to the user.
All existing |\definespotcolor|, |\color|, |\textcolor|, |\pagecolor|, and \textsf{TikZ} commands work identically in both modes.

\subsection{Usage}

To use \textsf{spotxcolor} with pdfmanagement, simply add |\DocumentMetadata{}| as the very first line of your document:

\begin{quote}
\begin{verbatim}
\DocumentMetadata{}       % activates pdfmanagement
\documentclass{article}
\usepackage{spotxcolor}
\definespotcolor{DIC161s}{DIC 161s*}{0, 0.64, 1, 0}
\begin{document}
\textcolor{DIC161s}{Spot color text}
\end{document}
\end{verbatim}
\end{quote}

\noindent No additional options or workarounds are required.


\section{Limitations}

The \textsf{spotxcolor} package auto-detects spot colors by checking whether CMYK values in the PDF output are a \emph{proportional scalar multiple} of a registered spot color's base CMYK values.
This approach covers the vast majority of practical use cases, but has inherent limitations in the following areas.
% %TODO:% For a detailed technical explanation of the interception architecture and why these limitations exist, see the companion document \texttt{spotxcolor-technote.pdf}.

\subsection{Non-Proportional Color Mixes}

When a spot color is mixed with another color model using \textsf{xcolor}'s |!| operator, the resulting CMYK values may no longer be a simple scalar multiple of the base.
In such cases, the output correctly falls back to CMYK representation.

\begin{quote}
\begin{verbatim}
% Proportional tint — auto-detected as spot color (tint=0.5)
\textcolor{DIC161s!50}{50% tint}
% Base CMYK: (0, 0.64, 1, 0)
% Computed:  (0, 0.32, 0.5, 0)  ← scalar multiple (×0.5) ✓

% Non-proportional mix — falls back to CMYK
\textcolor{DIC161s!80!black}{80% DIC161s mixed with black}
% Computed:  (0, 0.512, 0.8, 0.2)  ← K≠0 breaks proportionality ✗

% Another non-proportional mix
\textcolor{DIC161s!50!DIC256s}{50% DIC161s mixed with DIC256s}
% Computed:  (0.45, 0.32, 0.7, 0)  ← no single spot color match ✗
\end{verbatim}
\end{quote}

True representation of such mixes would require \texttt{/DeviceN} color spaces (e.g., \texttt{[/DeviceN [/DIC\string~161s* /Black] ...]}\,), which is beyond the scope of this package.

\subsection{Shading (Gradients)}

PGF's |\shade| command generates Shading dictionary objects (PDF Type~2 and Type~3 shadings) with a hardcoded \texttt{/DeviceRGB} color space.
The color values are resolved and frozen into RGB at the time the shading object is created, before any content stream operators are emitted.

This contrasts with \emph{patterns} (hatching), where the color is specified by operators in the content stream (|/pgfpspot_DIC161s cs 0.6 /pgfpat21 scn|) and can be intercepted.
For shadings, the content stream contains only |/Fm16 Do| (``paint this Form~XObject'')---no color information to intercept.

\begin{quote}
\begin{verbatim}
% Both endpoints are converted to RGB inside the Shading object.
% The PDF will contain:
%   /ColorSpace /DeviceRGB
%   /Function << /C0 [r g b] /C1 [r g b] ... >>
\shade[left color=DIC161s, right color=DIC161s!10]
  (0,0) rectangle (4, 1.5);
\end{verbatim}
\end{quote}

Since spotxcolor's interception operates at the content stream operator level, it cannot modify these pre-built PDF objects.
True spot color gradients would require generating Shading objects with \texttt{/ColorSpace [/Separation~...]} and tint-value function endpoints, which amounts to rewriting PGF's shading generation code entirely.
% %TODO:% See the Technical Note (\texttt{spotxcolor-technote.pdf}, Section~X.Y) for a detailed structural comparison.

\needspace{2\baselineskip}
\subsection{Summary}

\begin{center}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{ll>{\raggedright\arraybackslash}m{11em}}
\hline
\textbf{Feature} & \textbf{Status} & \textbf{Notes} \\
\hline
|\color|, |\textcolor|     & \textcolor{DIC256s}{\textbf{Spot}} & All engines \\
|\pagecolor|               & \textcolor{DIC256s}{\textbf{Spot}} & All engines \\
|\SpotColor|               & \textcolor{DIC256s}{\textbf{Spot}} & Direct PDF literal \\
TikZ fill/stroke           & \textcolor{DIC256s}{\textbf{Spot}} & Via PGF driver patch \\
Low-level PGF commands     & \textcolor{DIC256s}{\textbf{Spot}} & Via PGF driver patch \\
Uncolored patterns         & \textcolor{DIC256s}{\textbf{Spot}} & Via \texttt{[/Pattern\space [/Separation~...]]} \\
Fading / transparency      & \textcolor{DIC256s}{\textbf{Spot}} & Fill color is spot \\
Opacity + blend modes      & \textcolor{DIC256s}{\textbf{Spot}} & Fill color is spot \\
\textsf{colortbl} row colors & \textcolor{DIC256s}{\textbf{Spot}} & Via |\set@color| patch \\
\textsf{tcolorbox}         & \textcolor{DIC256s}{\textbf{Spot}} & Frame, background, shadow \\
\hline
Proportional tints (\texttt{!N})   & \textcolor{DIC256s}{\textbf{Spot}} & Auto-detected \\
Non-proportional mixes (\texttt{!N!color}) & \textbf{CMYK} & Needs \texttt{/DeviceN} \\
Shading (gradients)        & \textbf{RGB}  & PGF hardcodes \texttt{/DeviceRGB} \\
\hline
\end{tabular}
\end{center}


\section{Comparison with Other Spot Color Packages}

Several \LaTeX\ packages provide spot color support.
This section compares them to help you choose the right tool for your workflow.

\subsection{Package Overview}

\begin{description}
\item[\textsf{spotcolor} (2006)]
The original spot color package, designed exclusively for pdf\LaTeX.
It defines a custom \textsf{xcolor} color model (|spotcolor|) and provides the |\SpotColor| command for direct PDF literal injection via |\pdfliteral|.
However, |\SpotColor| does not use the color stack, so spot color output does not survive page breaks.
It only supports \texttt{pdftex} (no \texttt{luatex}, \texttt{dvipdfmx}, or \texttt{xetex} support) and has no PGF/TikZ integration.

\item[\textsf{xespotcolor} (2014--2021)]
A spot color package for Xe\LaTeX\ and \texttt{dvipdfmx}.
It provides basic PGF integration by defining custom PGF driver macros (|\pgfsys@color@spotcolor@fill|, etc.), but these only work when the user explicitly calls a spot color command---standard \textsf{xcolor} commands still produce CMYK.
It does not support \texttt{pdftex} or \texttt{luatex}.

\item[\textsf{colorspace} (2015--2019)]
A modern package supporting Separation and DeviceN color spaces.
It hooks into \textsf{xcolor}'s internal color representation and provides PGF fill/stroke driver macros.
It supports \texttt{pdftex} and \texttt{luatex}, but \textbf{not} \texttt{dvipdfmx} or Xe\LaTeX.
It requires manual page resource management (|\pagecolorspace|, |\resetpagecolorspace|).

\item[\textsf{spotxcolor} (2026)]
This package.
It intercepts all color output paths---\textsf{xcolor}'s |\set@color|, PGF driver macros, and PGF pattern primitives---to transparently convert proportional spot color tints from CMYK to Separation operators.
It supports all four major engines and requires no special commands beyond standard \textsf{xcolor} usage.
\end{description}

\subsection{Feature Comparison}

\begin{center}
\renewcommand{\arraystretch}{1.3}
\small
\begin{tabular}{lcccc}
\hline
\textbf{Feature}
  & \textsf{spotcolor}
  & \textsf{xespotcolor}
  & \textsf{colorspace}
  & \textsf{spotxcolor} \\
\hline
pdftex              & Yes & ---  & Yes & Yes \\
luatex              & --- & ---  & Yes & Yes \\
xetex               & --- & Yes  & --- & Yes \\
dvipdfmx            & --- & Yes  & --- & Yes \\
\hline
|\color|, |\textcolor| as spot
                    & --- & ---  & Yes & Yes \\
|\pagecolor| as spot
                    & --- & ---  & --- & Yes \\
Color stack (page breaks)
                    & --- & ---  & Yes & Yes \\
Tinted expressions (|!50|)
                    & --- & ---  & Yes & Yes \\
\hline
PGF fill/stroke     & --- & Yes$^\dagger$ & Yes & Yes \\
PGF pattern fills as spot
                    & --- & ---  & --- & Yes \\
\textsf{colortbl} as spot
                    & --- & ---  & Yes$^\ddagger$ & Yes \\
\textsf{tcolorbox} as spot
                    & --- & ---  & Yes$^\ddagger$ & Yes \\
\hline
DeviceN             & --- & ---  & Yes & --- \\
\hline
\multicolumn{5}{@{}p{\linewidth}@{}}{\hangingbox{$^\dagger$:\space}%
\textsf{xespotcolor} defines custom PGF driver macros, but they are only activated when the user explicitly calls spot color commands, not through standard \textsf{xcolor} usage.
}\\
\multicolumn{5}{@{}p{\linewidth}@{}}{\hangingbox{$^\ddagger$:\space}%
\textsf{colorspace} supports these through its \textsf{xcolor} integration, but only on \texttt{pdftex} and \texttt{luatex}.
}
\end{tabular}
\end{center}

\end{document}
