## ArgyllCMS's 'arts' (Absolute to media Relative Transform Space matrix) ICC tag (V1.0)

ArgyllCMS uses a registered (private) ICC tag to solve a long standing Display profile compatibility issue.
Other CMM and profile creation providers are most welcome to implement this tag to improve ICC profile color behavior and interoperability.

## The problem

The ICC V2 format originally provided no clear mechanism for Display profiles to use a modern chromatic adaptation transform in dealing with the D65 white point of typical displays. V2 profile makers ended up taking three different approaches :-

1. Use a Bradford chromatic transform for the media (display) white to PCS D50 conversion. This was used in creating the widely deployed HP & Microsoft sRGB profile, as well as the AdobeRGB profile. This provides a good chromatic adaptation, but Absolute Colorimetric will have errors if the profile is used with a CMM that implements the the ICC specified "Wrong Von Kries" chromatic adaptation to map relative colorimetric back to absolute colorimetric rather than using the Bradford transform it was created with.
2. Use the ICC specified "Wrong Von Kries" chromatic transform from D65 to D50. This leads to poor relative colorimetric behavior (the most important case), but gives correct Absolute Colorimetric behavior.
3. Apply the Bradford transform to the measurement data and then disable Absolute Intent for display profiles by setting the mediaWhitePoint tag to D50. The latter approach was supplemented later on with the introduction of the ChromaticAdapation ('chad') tag, but this did not restore the Absolute Colorimetric capability to Display profiles, since the 'chad' tag is not formally part of the specified mechanism for implementing Absolute Colorimetric. Unfortunately, this approach has been adopted in the ICC V4 specifications

The ICC standard "Wrong Von Kries" chromatic transform for media white to/from PCS D50 has disadvantages in regard to color behavior for Output (i.e. print) profiles as well as Display profiles though. With most normal, white media this is not of great significance, since the white point shift is small, but it grows in significance as the color of the paper differs from white (i.e. tinted papers).
For all these reasons, and in the pursuit of the best possible color quality, ArgyllCMS uses the more color accurate Bradford chromatic transform for all profiles types instead of the the ICC standard "Wrong Von Kries" transform. This improves compatibility with the (extremely common use case) of HP & Microsoft sRGB, and AdobeRGB profiles where the color behavior of Bradford vs. "Wrong Von Kries" is more critical; provides good color behavior for creating Display profiles while giving accurate Absolute Colorimetric Intent behavior; slightly improves the quality of Output profiles, most noticeable with tinted stock, while having minimum incompatibility with Output profiles created for normal, white printed media by other profiling programs because the white point shift is typically small. But to enable perfect compatibility of ArgyllCMS Output (i.e. print) profiles with other CMM's, the default behavior can be changed by using the ARGYLL_CREATE_WRONG_VON_KRIES_OUTPUT_CLASS_REL_WP environment variable.
So the problem is that it is impossible to know for sure whether an ArgyllCMS create profile, ICC V2 Display profile, or other ICC profiles has used a Bradford or "Wrong Von Kries" chromatic transform in computing Absolute to/from Relative white point transform.

## The solution

The ArgyllCMS SigAbsToRelTransSpace 'arts' tag holds a 3x3 matrix in the first 9 elements* of a SigS15Fixed16ArrayType in the usual ICC order (i.e. the same element order as the ChromaticAdaptationTag 'chad' tag). This matrix holds the Sharpened Cone space transform that the Media White point to/from PCS D50 chromatic Von Kries transform is computed in, rather than the "Wrong Von Kries" transform specified by ICC.1:2001-04 (ICCV2.4) Annex A, pp 66, equations A.1, A.2 & A.3. So by default ArgyllCMS will write an 'arts' tag with the Bradford matrix in it:

> sig 'arts'
> type 'sf32'
> S15Fixed16Array:
> No. elements = 9
> 0: 0.89509583
> 1: 0.26640320
> 2: -0.16140747
> 3: -0.75019836
> 4: 1.71350098
> 5: 0.03669739
> 6: 0.03889465
> 7: -0.06849670
> 8: 1.02960205

In contrast, ICC standard behavior is the equivalent of a unit matrix.
[ Note that ArgyllCMS will write an 'arts' tag containing a Bradford matrix even for Display profile written using the 'chad' tag where the the MediaWhitePointTag is set to D50, representing the cone space used in computing the 'chad' tag. (see ARGYLL_CREATE_DISPLAY_PROFILE_WITH_CHAD) i.e. for Display profiles, the 'chad' tag is regarded as just an alternate means of representing the true Media White Point. ]
On reading a profile, ArgyllCMS uses the following logic to set its Media white to/from PCS D50 chromatic transform:
if 'arts' tag is present:
use it to compute absolute <-> media relative white point transform.
else:
if ArgyllCMS created profile (ICC header Profile Creator signature = 'argl')
or V2 Display profile && Media W.P. != D50:
use Bradford matrix to compute absolute <-> media relative white point transform.
else:
use unity matrix to compute absolute <-> media relative white point transform.
The 'arts' tag need not be written if the profile contains no 'wtpt' MediaWhitePointTag tag.
This provides a safe level of backwards compatibility, together with the elimination of all ambiguity when the 'arts' tag is present, allowing CMM and profile creators to use the preferred Bradford (or other Sharpened Cone) space for Von Kries chromatic adaptation of the media white point to/from PCS D50.

## Conclusion

The 'arts' tag allows unambiguous use of the recommended Bradford cone space transform in computing the Absolute Colorimetric (Media Relative) to/from Relative Colorimetric (PCS D50) chromatic transform in ICC profiles, while for the first time also providing an unambiguously means of marking the use of the Bradford transform in the very widely used standard sRGB and AdobeRGB colorspaces. If widely adopted, the use of "Wrong Von Kries" chromatic transform in ICC profiles could be safely abandoned.
* If the SigS15Fixed16ArrayType has more than 9 elements, then just the first 9 should be interpreted as a 3x3 matrix, and any elements beyond that should be ignored.