|
@@ -1,6 +1,6 @@
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
-# $File: icc,v 1.1 2013/01/08 01:43:18 christos Exp $
|
|
|
+# $File: icc,v 1.2 2016/12/02 19:32:15 christos Exp $
|
|
|
# icc: file(1) magic for International Color Consortium file formats
|
|
|
|
|
|
#
|
|
@@ -11,41 +11,204 @@
|
|
|
# http://www.color.org/specification/ICC1v43_2010-12.pdf
|
|
|
#
|
|
|
# for Specification ICC.1:2010 (Profile version 4.3.0.0).
|
|
|
+# URL: http://fileformats.archiveteam.org/wiki/ICC_profile
|
|
|
+# Reference: http://www.color.org/iccmax/ICC.2-2016-7.pdf
|
|
|
+# Update: Joerg Jenderek
|
|
|
#
|
|
|
# Bytes 36 to 39 contain a generic profile file signature of "acsp";
|
|
|
# bytes 40 to 43 "may be used to identify the primary platform/operating
|
|
|
# system framework for which the profile was created".
|
|
|
#
|
|
|
-# There are other fields that might be worth dumping as well.
|
|
|
-#
|
|
|
+# check and display ICC/ICM color profile
|
|
|
+0 name color-profile
|
|
|
+>36 string acsp
|
|
|
+# skip ASCII like Cognacspirit.txt by month <= 12
|
|
|
+>>26 ubeshort <13
|
|
|
+# platform/operating system. Only 5 mentioned
|
|
|
|
|
|
+#
|
|
|
# This appears to be what's used for Apple ColorSync profiles.
|
|
|
# Instead of adding that, Apple just changed the generic "acsp" entry
|
|
|
# to be for "ColorSync ICC Color Profile" rather than "Kodak Color
|
|
|
# Management System, ICC Profile".
|
|
|
# Yes, it's "APPL", not "AAPL"; see the spec.
|
|
|
-36 string acspAPPL ColorSync ICC Profile
|
|
|
-!:mime application/vnd.iccprofile
|
|
|
+>>>40 string APPL ColorSync
|
|
|
|
|
|
# Microsoft ICM color profile
|
|
|
-36 string acspMSFT Microsoft ICM Color Profile
|
|
|
-!:mime application/vnd.iccprofile
|
|
|
+>>>40 string MSFT Microsoft
|
|
|
|
|
|
# Yes, that's a blank after "SGI".
|
|
|
-36 string acspSGI\ SGI ICC Profile
|
|
|
-!:mime application/vnd.iccprofile
|
|
|
+>>>40 string SGI\ SGI
|
|
|
|
|
|
# XXX - is this what's used for the Sun KCMS or not? The standard file
|
|
|
# uses just "acsp" for that, but Apple's file uses it for "ColorSync",
|
|
|
# and there *is* an identified "primary platform" value of SUNW.
|
|
|
-36 string acspSUNW Sun KCMS ICC Profile
|
|
|
+>>>40 string SUNW Sun KCMS
|
|
|
+
|
|
|
+# 5th platform
|
|
|
+>>>40 string TGNT Taligent
|
|
|
+
|
|
|
+# remaing "l" "e" of "color profile" printed later to avoid error
|
|
|
+>>>40 string x color profi
|
|
|
+#>>>40 string x (%.4s)
|
|
|
!:mime application/vnd.iccprofile
|
|
|
+# for "ICM" extension only versions 2.x and for Kodak "CC" 2.0 is found
|
|
|
+>>>8 ubyte =2
|
|
|
+# do not use empty message text to a avoid error like
|
|
|
+# icc, 82: Warning: Current entry does not yet have a description for adding a EXTENSION type
|
|
|
+# file.exe: could not find any valid magic files!
|
|
|
+>>>>9 ubyte !0 \ble
|
|
|
+!:ext icc/icm
|
|
|
+# minor version
|
|
|
+>>>>9 ubyte =0 \bl
|
|
|
+# Kodak colour management system
|
|
|
+>>>>>4 string =KCMS \be
|
|
|
+!:ext icc/icm/cc
|
|
|
+>>>>>4 string !KCMS \be
|
|
|
+!:ext icc/icm
|
|
|
+>>>8 ubyte !2 \ble
|
|
|
+!:ext icc
|
|
|
+# Profile version major.4bit-minor.sub1.sub2 like 4.3.0.0 (04300000h)
|
|
|
+>>>8 ubyte x %u
|
|
|
+>>>9 ubyte/16 x \b.%u
|
|
|
+# reserved and shall be null but 205.205 in umx1220u.icm
|
|
|
+>>>10 ubyte >0 \b.%u
|
|
|
+>>>>11 ubyte >0 \b.%u
|
|
|
+# preferred colour management module like appl CCMS KCMS Lino UCCM "Win " "FF "
|
|
|
+# skip space like in brmsl08f.icm and null like in brmsl09f.icm, brmsl07f.icm
|
|
|
+>>>4 string >\ \b, type %.2s
|
|
|
+>>>>6 string >\ \b%.1s
|
|
|
+>>>>>7 string >\ \b%.1s
|
|
|
+# colour space "XYZ " "Lab " "RGB " CMYK GRAY ...
|
|
|
+>>>16 string x \b, %.3s
|
|
|
+>>>19 string >\ \b%.1s
|
|
|
+# Profile Connection Space (PCS) field usually "XYZ " or "Lab " but sometimes
|
|
|
+# null or CMYK like in ISOcoated_v2_to_PSOcoated_v3_DeviceLink.icc
|
|
|
+>>>20 string >\0 \b/%.3s
|
|
|
+>>>>23 string >\ \b%.1s
|
|
|
+# eleven device classes
|
|
|
+>>>12 string x \b-%.4s device
|
|
|
+# skip 00001964h in hpf69000.icc or 0h in XRDC50Q.ICM or " ROT" in brmsl05f.icm
|
|
|
+>>>52 string >\
|
|
|
+# skip "none" model like in "Trinitron Compatible 9300K G2.2.icm"
|
|
|
+>>>>52 ubelong !0x6e6f6e65
|
|
|
+# device manufacturer field like "HP " "IBM " EPSO
|
|
|
+>>>>>48 string x \b, %.2s
|
|
|
+>>>>>50 string >\ \b%.1s
|
|
|
+>>>>>51 string >\ \b%.1s
|
|
|
+# model like "ADI " "A265" and skip 20000404h in IS330.icm for RICOH RUSSIAN-SC
|
|
|
+>>>>>52 string >\ \ \b/%.3s
|
|
|
+>>>>>>55 string >\ \b%.1s
|
|
|
+>>>>>52 string x model
|
|
|
+# creator (often same as manufacture) like HP SONY XROX or null like in A925A.icm
|
|
|
+>>>80 string >\0 by %.2s
|
|
|
+>>>>82 string >\ \b%.1s
|
|
|
+>>>>>83 string >\ \b%.1s
|
|
|
+# profile size
|
|
|
+>>>0 ubelong x \b, %u bytes
|
|
|
+# skip invalid date 0 like in linearSRGB.icc
|
|
|
+>>>24 ubequad !0
|
|
|
+# datetime dd-mm-yyyy hh:mm:ss
|
|
|
+>>>>28 ubeshort x \b, %u
|
|
|
+# month <= 12
|
|
|
+>>>>26 ubeshort x \b-%u
|
|
|
+# year
|
|
|
+>>>>24 ubeshort x \b-%u
|
|
|
+# do not display midnight time like in CNHP8308.ICC
|
|
|
+>>>>30 ubequad&0xFFffFFffFFff0000 !0
|
|
|
+# hour <= 24
|
|
|
+>>>>>30 ubeshort x %u
|
|
|
+# minutes <= 59
|
|
|
+>>>>>32 ubeshort x \b:%.2u
|
|
|
+# seconds <= 59
|
|
|
+>>>>>34 ubeshort x \b:%.2u
|
|
|
+# vendor specific flags like 2 in HPCLJ5.ICM
|
|
|
+>>>44 ubeshort >0 \b, 0x%x vendor flags
|
|
|
+# profile flags bits 0-2 of least 16 used by ICC
|
|
|
+#>>>44 ubelong >0 \b, 0x%x flags
|
|
|
+# icEmbeddedProfileTrue
|
|
|
+>>>44 ubelong &1 \b, embedded
|
|
|
+# icEmbeddedProfileFalse
|
|
|
+#>>>44 ubelong ^1 \b, not embedded
|
|
|
+# icUseWithEmbeddedDataOnly
|
|
|
+>>>44 ubelong &2 \b, dependently
|
|
|
+# icUseAnywhere
|
|
|
+#>>>44 ubelong ^2 \b, independently
|
|
|
+>>>44 ubelong &4 \b, MCS
|
|
|
+#>>>44 ubelong ^4 \b, no MCS
|
|
|
+# vendor specific device attributes 1~srgb.icc
|
|
|
+# E000D00h~CNB7QEDA.ICM C000A00h~CNB5FCAA.ICM 01040401h~CNB25PE3.ICM
|
|
|
+>>>56 ubelong >0 \b, 0x%x vendor attribute
|
|
|
+# ICC device attributes bits 0-7 used
|
|
|
+#>>>60 ubelong x \b, 0x%x attribute
|
|
|
+# http://www.color.org/icc34.h
|
|
|
+>>>60 ubelong &0x01 \b, transparent
|
|
|
+#>>>60 ubelong ^0x01 \b, reflective
|
|
|
+>>>60 ubelong &0x02 \b, matte
|
|
|
+#>>>60 ubelong ^0x02 \b, glossy
|
|
|
+>>>60 ubelong &0x04 \b, negative
|
|
|
+#>>>60 ubelong ^0x04 \b, positive
|
|
|
+>>>60 ubelong &0x08 \b, black&white
|
|
|
+#>>>60 ubelong ^0x08 \b, colour
|
|
|
+>>>60 ubelong &0x10 \b, non-paper
|
|
|
+#>>>60 ubelong ^0x10 \b, paper
|
|
|
+>>>60 ubelong &0x20 \b, non-textured
|
|
|
+#>>>60 ubelong ^0x20 \b, textured
|
|
|
+>>>60 ubelong &0x40 \b, non-isotropic
|
|
|
+#>>>60 ubelong ^0x40 \b, isotropic
|
|
|
+>>>60 ubelong &0x80 \b, self-luminous
|
|
|
+#>>>60 ubelong ^0x80 \b, non-self-luminous
|
|
|
+# rendering intent 0-3 but 7AEA5027h in EE051__1.ICM 6CB1BCh in EE061__1.ICM
|
|
|
+>>>64 ubelong >3 \b, 0x%x rendering intent
|
|
|
+#>>>64 ubelong =0 \b, perceptual
|
|
|
+>>>64 ubelong =1 \b, relative colorimetric
|
|
|
+>>>64 ubelong =2 \b, saturation
|
|
|
+>>>64 ubelong =3 \b, absolute colorimetric
|
|
|
+# PCS illuminant (3*s15Fixed16Numbers) often 0000f6d6 00010000 0000d32d
|
|
|
+>>>71 ubequad !0xd6000100000000d3 \b, PCS
|
|
|
+# usually X~0.9642*65536=63189.8112~63190=F6D5h ; but also found
|
|
|
+# often F6D6 in gt5000r.icm, F6B8 in kodakce.icm, F6CA in RSWOP.icm
|
|
|
+>>>>68 ubelong !0x0000f6d5 X=0x%x
|
|
|
+# usually Y=1.0~00010000h but Y=0 in brmsl07f.icm
|
|
|
+>>>>72 ubelong !0x00010000 Y=0x%x
|
|
|
+# usually Z~0.8249*65536=54060.6464~54061=D32Dh ; but also found
|
|
|
+# D2F7 in hp1200c.icm, often D32C in A925A.icm, D309 in RSWOP.icm , D2F8 in kodak_dc.icm
|
|
|
+>>>>76 ubelong !0x0000d32d Z=0x%x
|
|
|
+# Profile ID. MD5 fingerprinting method as defined in Internet RFC 1321.
|
|
|
+>>>84 ubequad >0 \b, 0x%llx MD5
|
|
|
+# reserved in older versions should be zero but also found CDCDCDCDCDCDCDCD
|
|
|
+#>>100 ubequad x \b 0x%llx reserved
|
|
|
+# tag table
|
|
|
+# 6 <= tags count <= 43
|
|
|
+#>>>128 ubelong >43 \b, %u tags
|
|
|
+>>>128 ubelong x
|
|
|
+# shall contain the profileDescriptionTag "desc" , copyrightTag "cprt"
|
|
|
+# search range = tags count * 12 -8=< maximal tag count * 12 -8= 43 * 12 -8= 508
|
|
|
+>>>>132 search/508 cprt
|
|
|
+# but no copyright tag in linearSRGB.icc
|
|
|
+# beneath /System/Library/Frameworks/WebKit.framework/
|
|
|
+# Versions/A/Frameworks/WebCore.framework/Versions/A/Resources
|
|
|
+>>>>132 default x \b, no copyright tag
|
|
|
+# 1st tag
|
|
|
+#>>>132 string x \b, 1st tag %.4s
|
|
|
+#>>>136 ubelong x 0x%x offset
|
|
|
+#>>>140 ubelong x 0x%x len
|
|
|
+# 2nd tag,...
|
|
|
+# look also for profileDescriptionTag "desc"
|
|
|
+>>>132 search/508 desc
|
|
|
+# look further for TextDescriptionType "desc" signature
|
|
|
+>>>>(&0.L) string =desc
|
|
|
+>>>>>&4 pstring/l x "%s"
|
|
|
+# look alternative for multiLocalizedUnicodeType "mluc" signature like in VideoPAL.icc
|
|
|
+>>>>(&0.L) string =mluc
|
|
|
+>>>>>&(&8.L) ubequad x
|
|
|
+>>>>>>&4 bestring16 x '%s'
|
|
|
|
|
|
# Any other profile.
|
|
|
# XXX - should we use "acsp\0\0\0\0" for "no primary platform" profiles,
|
|
|
# and use "acsp" for everything else and dump the "primary platform"
|
|
|
# string in those cases?
|
|
|
-36 string acsp ICC Profile
|
|
|
-!:mime application/vnd.iccprofile
|
|
|
+36 string acsp
|
|
|
+>0 use color-profile
|
|
|
|
|
|
|