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