xref: /dflybsd-src/contrib/file/magic/Magdir/icc (revision 7b80531f545c7d3c51c1660130c71d01f6bccbe0)
1e8af9738SPeter Avalos
2e8af9738SPeter Avalos#------------------------------------------------------------------------------
3*614728caSSascha Wildner# $File: icc,v 1.7 2021/04/26 15:56:00 christos Exp $
4e8af9738SPeter Avalos# icc:  file(1) magic for International Color Consortium file formats
5e8af9738SPeter Avalos
6e8af9738SPeter Avalos#
7e8af9738SPeter Avalos# Color profiles as per the ICC's "Image technology colour management -
8e8af9738SPeter Avalos# Architecture, profile format, and data structure" specification.
9e8af9738SPeter Avalos# See
10e8af9738SPeter Avalos#
11e8af9738SPeter Avalos#	http://www.color.org/specification/ICC1v43_2010-12.pdf
12e8af9738SPeter Avalos#
13e8af9738SPeter Avalos# for Specification ICC.1:2010 (Profile version 4.3.0.0).
14c30bd091SSascha Wildner# URL: http://fileformats.archiveteam.org/wiki/ICC_profile
15c30bd091SSascha Wildner# Reference: http://www.color.org/iccmax/ICC.2-2016-7.pdf
16c30bd091SSascha Wildner# Update: Joerg Jenderek
17e8af9738SPeter Avalos#
18e8af9738SPeter Avalos# Bytes 36 to 39 contain a generic profile file signature of "acsp";
19e8af9738SPeter Avalos# bytes 40 to 43 "may be used to identify the primary platform/operating
20e8af9738SPeter Avalos# system framework for which the profile was created".
21e8af9738SPeter Avalos#
22c30bd091SSascha Wildner#	check and display ICC/ICM color profile
23c30bd091SSascha Wildner0	name	color-profile
24c30bd091SSascha Wildner>36	string		acsp
25c30bd091SSascha Wildner# skip ASCII like Cognacspirit.txt by month <= 12
26c30bd091SSascha Wildner>>26	ubeshort	<13
27c30bd091SSascha Wildner# platform/operating system. Only 5 mentioned
28e8af9738SPeter Avalos
29c30bd091SSascha Wildner#
30e8af9738SPeter Avalos# This appears to be what's used for Apple ColorSync profiles.
31e8af9738SPeter Avalos# Instead of adding that, Apple just changed the generic "acsp" entry
32e8af9738SPeter Avalos# to be for "ColorSync ICC Color Profile" rather than "Kodak Color
33e8af9738SPeter Avalos# Management System, ICC Profile".
34e8af9738SPeter Avalos# Yes, it's "APPL", not "AAPL"; see the spec.
35c30bd091SSascha Wildner>>>40	string		APPL		ColorSync
36e8af9738SPeter Avalos
37e8af9738SPeter Avalos# Microsoft ICM color profile
38c30bd091SSascha Wildner>>>40	string		MSFT		Microsoft
39e8af9738SPeter Avalos
40e8af9738SPeter Avalos# Yes, that's a blank after "SGI".
41c30bd091SSascha Wildner>>>40	string		SGI\ 		SGI
42e8af9738SPeter Avalos
43e8af9738SPeter Avalos# XXX - is this what's used for the Sun KCMS or not?  The standard file
44e8af9738SPeter Avalos# uses just "acsp" for that, but Apple's file uses it for "ColorSync",
45e8af9738SPeter Avalos# and there *is* an identified "primary platform" value of SUNW.
46c30bd091SSascha Wildner>>>40	string		SUNW		Sun KCMS
47c30bd091SSascha Wildner
48c30bd091SSascha Wildner# 5th platform
49c30bd091SSascha Wildner>>>40	string		TGNT		Taligent
50c30bd091SSascha Wildner
51c30bd091SSascha Wildner# remaining "l" "e" of "color profile" printed later to avoid error
52c30bd091SSascha Wildner>>>40	string		x 		color profi
53c30bd091SSascha Wildner#>>>40	string		x		(%.4s)
54e8af9738SPeter Avalos!:mime	application/vnd.iccprofile
55c30bd091SSascha Wildner# for "ICM" extension only versions 2.x and for Kodak "CC" 2.0 is found
56c30bd091SSascha Wildner>>>8	ubyte		=2
576fca56fbSSascha Wildner# do not use empty message text to avoid error like
58c30bd091SSascha Wildner# icc, 82: Warning: Current entry does not yet have a description for adding a EXTENSION type
59c30bd091SSascha Wildner# file.exe: could not find any valid magic files!
60c30bd091SSascha Wildner>>>>9	ubyte		!0		\ble
61c30bd091SSascha Wildner!:ext	icc/icm
62c30bd091SSascha Wildner# minor version
63c30bd091SSascha Wildner>>>>9	ubyte		=0		\bl
64c30bd091SSascha Wildner# Kodak colour management system
65c30bd091SSascha Wildner>>>>>4	string		=KCMS		\be
66c30bd091SSascha Wildner!:ext	icc/icm/cc
67c30bd091SSascha Wildner>>>>>4	string		!KCMS		\be
68c30bd091SSascha Wildner!:ext	icc/icm
69c30bd091SSascha Wildner>>>8	ubyte		!2		\ble
70c30bd091SSascha Wildner!:ext	icc
71c30bd091SSascha Wildner# Profile version major.4bit-minor.sub1.sub2 like 4.3.0.0 (04300000h)
72c30bd091SSascha Wildner>>>8	ubyte		x		%u
73c30bd091SSascha Wildner>>>9	ubyte/16	x		\b.%u
74c30bd091SSascha Wildner# reserved and shall be null but 205.205 in umx1220u.icm
75c30bd091SSascha Wildner>>>10	ubyte		>0		\b.%u
76c30bd091SSascha Wildner>>>>11	ubyte		>0		\b.%u
77c30bd091SSascha Wildner# preferred colour management module like appl CCMS KCMS Lino UCCM "Win " "FF  "
78c30bd091SSascha Wildner# skip space like in brmsl08f.icm and null like in brmsl09f.icm, brmsl07f.icm
79c30bd091SSascha Wildner>>>4	string		>\ 		\b, type %.2s
80c30bd091SSascha Wildner>>>>6	string		>\  		\b%.1s
81c30bd091SSascha Wildner>>>>>7	string		>\  		\b%.1s
82c30bd091SSascha Wildner# colour space "XYZ " "Lab " "RGB " CMYK GRAY ...
83c30bd091SSascha Wildner>>>16	string		x		\b, %.3s
84c30bd091SSascha Wildner>>>19	string		>\  		\b%.1s
85c30bd091SSascha Wildner# Profile Connection Space (PCS) field usually "XYZ " or "Lab " but sometimes
86c30bd091SSascha Wildner# null or CMYK like in ISOcoated_v2_to_PSOcoated_v3_DeviceLink.icc
87c30bd091SSascha Wildner>>>20	string		>\0		\b/%.3s
88c30bd091SSascha Wildner>>>>23	string		>\ 		\b%.1s
89c30bd091SSascha Wildner# eleven device classes
90c30bd091SSascha Wildner>>>12	string		x		\b-%.4s device
91c30bd091SSascha Wildner# skip 00001964h in hpf69000.icc or 0h in XRDC50Q.ICM or " ROT" in brmsl05f.icm
92c30bd091SSascha Wildner>>>52	string		>\040
93c30bd091SSascha Wildner# skip "none" model like in "Trinitron Compatible 9300K G2.2.icm"
94c30bd091SSascha Wildner>>>>52	ubelong		!0x6e6f6e65
95c30bd091SSascha Wildner# device manufacturer field like "HP  " "IBM " EPSO
96c30bd091SSascha Wildner>>>>>48	string		x		\b, %.2s
97c30bd091SSascha Wildner>>>>>50	string		>\  		\b%.1s
98c30bd091SSascha Wildner>>>>>51	string		>\  		\b%.1s
99c30bd091SSascha Wildner# model like "ADI " "A265" and skip 20000404h in IS330.icm for RICOH RUSSIAN-SC
100c30bd091SSascha Wildner>>>>>52	string		>\ \  		\b/%.3s
101c30bd091SSascha Wildner>>>>>>55 string		>\  		\b%.1s
102c30bd091SSascha Wildner>>>>>52	string		x		model
103c30bd091SSascha Wildner# creator (often same as manufacture) like HP SONY XROX or null like in A925A.icm
104c30bd091SSascha Wildner>>>80	string		>\0		by %.2s
105c30bd091SSascha Wildner>>>>82	string		>\  		\b%.1s
106c30bd091SSascha Wildner>>>>>83	string		>\  		\b%.1s
107c30bd091SSascha Wildner# profile size
108c30bd091SSascha Wildner>>>0	ubelong		x		\b, %u bytes
109c30bd091SSascha Wildner# skip invalid date 0 like in linearSRGB.icc
110c30bd091SSascha Wildner>>>24	ubequad		!0
111c30bd091SSascha Wildner# datetime dd-mm-yyyy hh:mm:ss
112c30bd091SSascha Wildner>>>>28	ubeshort	x		\b, %u
113c30bd091SSascha Wildner# month <= 12
114c30bd091SSascha Wildner>>>>26	ubeshort	x		\b-%u
115c30bd091SSascha Wildner# year
116c30bd091SSascha Wildner>>>>24	ubeshort	x		\b-%u
117c30bd091SSascha Wildner# do not display midnight time like in CNHP8308.ICC
118c30bd091SSascha Wildner>>>>30	ubequad&0xFFffFFffFFff0000	!0
119c30bd091SSascha Wildner# hour <= 24
120c30bd091SSascha Wildner>>>>>30	ubeshort	x		%u
121c30bd091SSascha Wildner# minutes <= 59
122c30bd091SSascha Wildner>>>>>32	ubeshort	x		\b:%.2u
123c30bd091SSascha Wildner# seconds <= 59
124c30bd091SSascha Wildner>>>>>34	ubeshort	x		\b:%.2u
125c30bd091SSascha Wildner# vendor specific flags like 2 in HPCLJ5.ICM
126*614728caSSascha Wildner>>>44	ubeshort	>0		\b, %#x vendor flags
127c30bd091SSascha Wildner# profile flags bits 0-2 of least 16 used by ICC
128*614728caSSascha Wildner#>>>44	ubelong		>0		\b, %#x flags
129c30bd091SSascha Wildner# icEmbeddedProfileTrue
130c30bd091SSascha Wildner>>>44	ubelong		&1		\b, embedded
131c30bd091SSascha Wildner# icEmbeddedProfileFalse
132c30bd091SSascha Wildner#>>>44	ubelong		^1		\b, not embedded
133c30bd091SSascha Wildner# icUseWithEmbeddedDataOnly
134c30bd091SSascha Wildner>>>44	ubelong		&2		\b, dependently
135c30bd091SSascha Wildner# icUseAnywhere
136c30bd091SSascha Wildner#>>>44	ubelong		^2		\b, independently
137c30bd091SSascha Wildner>>>44	ubelong		&4		\b, MCS
138c30bd091SSascha Wildner#>>>44	ubelong		^4		\b, no MCS
139c30bd091SSascha Wildner# vendor specific device attributes 1~srgb.icc
140c30bd091SSascha Wildner# E000D00h~CNB7QEDA.ICM C000A00h~CNB5FCAA.ICM 01040401h~CNB25PE3.ICM
141*614728caSSascha Wildner>>>56	ubelong		>0		\b, %#x vendor attribute
142c30bd091SSascha Wildner# ICC device attributes bits 0-7 used
143*614728caSSascha Wildner#>>>60	ubelong		x		\b, %#x attribute
144c30bd091SSascha Wildner# http://www.color.org/icc34.h
145c30bd091SSascha Wildner>>>60	ubelong		&0x01		\b, transparent
146c30bd091SSascha Wildner#>>>60	ubelong		^0x01		\b, reflective
147c30bd091SSascha Wildner>>>60	ubelong		&0x02		\b, matte
148c30bd091SSascha Wildner#>>>60	ubelong		^0x02		\b, glossy
149c30bd091SSascha Wildner>>>60	ubelong		&0x04		\b, negative
150c30bd091SSascha Wildner#>>>60	ubelong		^0x04		\b, positive
151c30bd091SSascha Wildner>>>60	ubelong		&0x08		\b, black&white
152c30bd091SSascha Wildner#>>>60	ubelong		^0x08		\b, colour
153c30bd091SSascha Wildner>>>60	ubelong		&0x10		\b, non-paper
154c30bd091SSascha Wildner#>>>60	ubelong		^0x10		\b, paper
155c30bd091SSascha Wildner>>>60	ubelong		&0x20		\b, non-textured
156c30bd091SSascha Wildner#>>>60	ubelong		^0x20		\b, textured
157c30bd091SSascha Wildner>>>60	ubelong		&0x40		\b, non-isotropic
158c30bd091SSascha Wildner#>>>60	ubelong		^0x40		\b, isotropic
159c30bd091SSascha Wildner>>>60	ubelong		&0x80		\b, self-luminous
160c30bd091SSascha Wildner#>>>60	ubelong		^0x80		\b, non-self-luminous
161c30bd091SSascha Wildner# rendering intent 0-3 but 7AEA5027h in EE051__1.ICM 6CB1BCh in EE061__1.ICM
162*614728caSSascha Wildner>>>64	ubelong		>3		\b, %#x rendering intent
163c30bd091SSascha Wildner#>>>64	ubelong		=0		\b, perceptual
164c30bd091SSascha Wildner>>>64	ubelong		=1		\b, relative colorimetric
165c30bd091SSascha Wildner>>>64	ubelong		=2		\b, saturation
166c30bd091SSascha Wildner>>>64	ubelong		=3		\b, absolute colorimetric
167c30bd091SSascha Wildner# PCS illuminant (3*s15Fixed16Numbers) often 0000f6d6 00010000 0000d32d
168c30bd091SSascha Wildner>>>71	ubequad		!0xd6000100000000d3	\b, PCS
169c30bd091SSascha Wildner# usually X~0.9642*65536=63189.8112~63190=F6D5h ; but also found
170c30bd091SSascha Wildner# often F6D6 in gt5000r.icm, F6B8 in kodakce.icm, F6CA in RSWOP.icm
171*614728caSSascha Wildner>>>>68	ubelong			!0x0000f6d5	X=%#x
172c30bd091SSascha Wildner# usually Y=1.0~00010000h but Y=0 in brmsl07f.icm
173*614728caSSascha Wildner>>>>72	ubelong			!0x00010000	Y=%#x
174c30bd091SSascha Wildner# usually Z~0.8249*65536=54060.6464~54061=D32Dh ; but also found
175c30bd091SSascha Wildner# D2F7 in hp1200c.icm, often D32C in A925A.icm, D309 in RSWOP.icm , D2F8 in kodak_dc.icm
176*614728caSSascha Wildner>>>>76	ubelong			!0x0000d32d	Z=%#x
177c30bd091SSascha Wildner# Profile ID. MD5 fingerprinting method as defined in Internet RFC 1321.
178*614728caSSascha Wildner>>>84	ubequad		>0		\b, %#llx MD5
179c30bd091SSascha Wildner# reserved in older versions should be zero but also found CDCDCDCDCDCDCDCD
180*614728caSSascha Wildner#>>100	ubequad		x		\b %#llx reserved
181c30bd091SSascha Wildner# tag table
182c30bd091SSascha Wildner# 6 <= tags count <= 43
183c30bd091SSascha Wildner#>>>128	ubelong		>43		\b, %u tags
184c30bd091SSascha Wildner>>>128	ubelong		x
185c30bd091SSascha Wildner# shall contain the profileDescriptionTag "desc" , copyrightTag "cprt"
186c30bd091SSascha Wildner# search range = tags count * 12 -8=< maximal tag count * 12 -8= 43 * 12 -8= 508
187c30bd091SSascha Wildner>>>>132	search/508	cprt
188c30bd091SSascha Wildner# but no copyright tag in linearSRGB.icc
189c30bd091SSascha Wildner# beneath /System/Library/Frameworks/WebKit.framework/
190c30bd091SSascha Wildner# Versions/A/Frameworks/WebCore.framework/Versions/A/Resources
191c30bd091SSascha Wildner>>>>132	default		x		\b, no copyright tag
192c30bd091SSascha Wildner# 1st tag
193c30bd091SSascha Wildner#>>>132	string		x		\b, 1st tag %.4s
194*614728caSSascha Wildner#>>>136	ubelong		x		%#x offset
195*614728caSSascha Wildner#>>>140	ubelong		x		%#x len
196c30bd091SSascha Wildner# 2nd tag,...
197c30bd091SSascha Wildner# look also for profileDescriptionTag "desc"
198c30bd091SSascha Wildner>>>132	search/508	desc
199c30bd091SSascha Wildner# look further for TextDescriptionType "desc" signature
200c30bd091SSascha Wildner>>>>(&0.L)	string		=desc
201c30bd091SSascha Wildner>>>>>&4		pstring/l	x	"%s"
202c30bd091SSascha Wildner# look alternative for multiLocalizedUnicodeType "mluc" signature like in VideoPAL.icc
203c30bd091SSascha Wildner>>>>(&0.L)	string		=mluc
204c30bd091SSascha Wildner>>>>>&(&8.L)	ubequad		x
205c30bd091SSascha Wildner>>>>>>&4	bestring16	x	'%s'
206e8af9738SPeter Avalos
207e8af9738SPeter Avalos# Any other profile.
208e8af9738SPeter Avalos# XXX - should we use "acsp\0\0\0\0" for "no primary platform" profiles,
209e8af9738SPeter Avalos# and use "acsp" for everything else and dump the "primary platform"
210e8af9738SPeter Avalos# string in those cases?
211c30bd091SSascha Wildner36	string		acsp
212c30bd091SSascha Wildner>0	use		color-profile
213e8af9738SPeter Avalos
214e8af9738SPeter Avalos
215