콘텐츠로 이동
getnextpdf.com

색, 프로파일, 그리고 당신의 빨강이 내 빨강이 아닌 이유

Spec: ISO 32000-2, §8.6Spec: ISO 15930, PDF/X

PDF 안의 색은 고정된 감각이 아닙니다. 그것은 하나의 명령이며, 그 명령이 당신의 노트북에서도, 휴대폰에서도, 인쇄기에서도 같은 빨강을 만들어 내는지는 전적으로 그 색이 어떻게 기술되었는지에 달려 있습니다. 이 페이지는 단지 장치에게 무엇을 하라고 알려 줄 뿐인 색과, 실제로 어떻게 보여야 하는지를 말하는 색 사이의 차이에 관한 것입니다.

브랜드 빨강 하나를 고르세요. 한 번 설정하세요. 이제 그것을 값싼 사무용 모니터에서 보고, 그다음 밝은 방의 OLED 휴대폰에서 보고, 그다음 옵셋 인쇄기에서 뽑아낸 결과로 보세요. 세 가지 빨강. 때로는 누가 봐도 다른 세 가지 빨강. 아무도 숫자를 바꾸지 않았습니다. 그 숫자는 애초에 이야기의 전부였던 적이 없습니다.

가벼운 문서라면 이것은 그냥 어깨를 으쓱하고 넘길 일입니다. 그러나 로고, 규제 대상 라벨, 카탈로그 속 사진, 또는 수십 년을 살아남아야 할 기록이라면, 어긋나는 색은 결함입니다. 그 비용은 추상적이지 않습니다. 재인쇄, 거부된 교정쇄, 또는 페이지가 더 이상 원본과 일치하지 않는 아카이브입니다. 해결책은 더 나은 숫자가 아닙니다. 그 숫자가 무엇을 의미하는지에 대해 진실을 말하는 것입니다.

  • 장치 색은 장치가 받는 제어 값으로 색을 명명하므로, 그 결과는 그 장치가 그것을 어떻게 처리하든 거기에 달려 있습니다 (Spec: ISO 32000-2, §8.6.4). DeviceRGB, DeviceCMYK, DeviceGray는 장치 색 공간입니다. 같은 숫자라도 하드웨어가 다르면 색도 다릅니다.
  • 보정된 ICC 기반 색은 임베디드 프로파일을 통해 그 숫자를 측정된 장치 독립적 기준에 묶습니다 (Spec: ISO 32000-2, §8.6.5.5). 이제 문서는 단지 제어 값의 레시피가 아니라 의도한 색을 재현하기에 충분한 정보를 지니게 됩니다.
  • ICC 프로파일은 바로 그 측정된 매핑입니다: 한 장치의 숫자가 — 또는 표준 색 공간이나 출력 조건의 숫자가 — 사람의 눈이 지각할 색과 어떻게 관계되는지를, 장치 독립적 연결 공간에 묶어 나타낸 것입니다.
  • 렌더링 인텐트는 어떤 색이 장치의 범위를 벗어났을 때 무엇을 할지에 대한 정책입니다. 어떤 장치도 모든 색을 표시할 수는 없기 때문입니다.
  • 출력 인텐트는 문서가 자신이 준비된 출력 조건을 미리 선언하는 것입니다 (Spec: ISO 32000-2, §14.11.5). 인쇄급 (PDF/X)과 아카이브(PDF/A) 워크플로는 이것에 의존합니다.

문제의 정직한 버전부터 시작합시다. DeviceRGB는 색을 담고 있지 않습니다. 그것은 0과 1 사이의 세 숫자와, 어떤 화면이 그것을 빛으로 바꾸어 줄 것이라는 암묵적 가정을 담고 있습니다. 백라이트가 다르고 패널이 다르고 보정이 다른 두 화면은 같은 세 숫자를 눈에 띄게 다른 빛으로 바꿉니다. 이것은 PDF의 버그가 아닙니다. 그것이 바로 “장치 색”이 의미하는 바이며, 표준은 그 점에 대해 솔직합니다: 장치 색 공간은 절대적 외관이 아니라 장치가 받는 값으로 정의됩니다 (Spec: ISO 32000-2, §8.6.4).

보정된 색은 기준을 더함으로써 그 간극을 메웁니다. ICC 프로파일은 한 장치나 색 공간 — 모니터, 프린터, 인쇄기, 또는 sRGB 같은 표준 공간 — 을 특성화하고, 그 원시 숫자가 사람의 시각을 근사하는 장치 독립적 연결 공간에서의 색과 어떻게 관계되는지를 기록한 결과입니다. 그 프로파일을 임베드하면 숫자는 더 이상 사적인 방언이 아니게 됩니다. 그것은 모두가 합의할 수 있는 무언가에 묶인 진술이 됩니다. 이것이 바로 ICC 기반 색 공간이 지니는 것입니다 (Spec: ISO 32000-2, §8.6.5.5): 색, 그리고 그것이 무엇을 의미하는지 말해 주는 측정된 매핑.

피할 수 없는 두 번째 주름이 있습니다. 인쇄기가 인쇄할 수 있는 색의 집합은 휴대폰이 표시할 수 있는 집합과 다르며, 둘 중 어느 것도 사람의 눈이 볼 수 있는 전체 집합이 아닙니다. 어떤 색이 대상 장치가 재현할 수 있는 범위를 벗어나면, 어떤 선택을 해야 합니다: 도달 가능한 가장 가까운 색으로 잘라 내거나, 색들 사이의 관계가 온전히 유지되도록 한 범위의 색 전체를 함께 이동시키는 것입니다. 그 선택이 바로 렌더링 인텐트입니다 — 반올림의 우연이 아니라, 작업에 맞게 고른 의도적인 정책입니다. 사진과 기업 로고는 흔히 서로 다른 인텐트를 원합니다. 하나는 매끄러운 그러데이션을 중시하고, 다른 하나는 정확한 색견본을 맞히는 것을 중시하기 때문입니다.

마지막으로, 특정한 목적지로 향하는 문서는 그 사실을 말할 수 있습니다. 출력 인텐트는 파일이 자신이 준비된 출력 조건을 선언하는 것입니다 — 일반적으로 인쇄 조건이나 장치를 명명하는 임베디드 ICC 대상 프로파일을 통해서입니다 (Spec: ISO 32000-2, §14.11.5). 그것은 프린터에게 그냥 파일을 건네는 것과, “나는 인쇄기를 위해 만들어졌다”라고 말하는 파일을 건네는 것의 차이입니다. 인쇄 교환 프로파일은 그것을 필수로 만듭니다: PDF/X 파일(ISO 15930 계열)은 반드시 출력 인텐트를 지녀야 하며 (Spec: ISO 15930, PDF/X), PDF/A는 같은 메커니즘에 의존하여, 원래의 환경이 사라진 지 오랜 뒤에도 아카이브된 파일의 장치 의존적 색이 먼 미래까지 해석 가능하게 유지되도록 합니다.

  1. Name the colourChoose a colour space. DeviceRGB/CMYK/Gray name control values; an ICC-based space anchors them to a device-independent reference (ISO 32000-2 §8.6).
  2. Anchor it (optional but decisive)Embed an ICC profile so the numbers carry their measured meaning, not just a device recipe (ISO 32000-2 §8.6.5.5).
  3. Reconcile to the deviceA rendering intent decides what happens to colours the target device cannot reproduce — clip the nearest, or shift the range to preserve relationships.
  4. Declare the destinationAn output intent states the output condition the document was prepared for, as PDF/X and PDF/A workflows require (ISO 32000-2 §14.11.5).
How a color travels from your code to a faithful result: it is named in a colour space, optionally anchored to a measured reference by an ICC profile, reconciled to the target device through a rendering intent, and interpreted against the output condition the document declares.

이 사슬에서 NextPDF의 역할은 표준에 맞게 정확한 것입니다: 색 공간, 임베디드 프로파일, 출력 인텐트를 포맷이 정의한 방식 그대로 기록하여, 다운스트림 도구 — 프린터의 RIP, 아카이브 검증기, 뷰어 — 가 정확히 의도된 바를 읽도록 하는 것입니다. 그것은 선언을 만들어 냅니다. 그것은 장치인 척하지 않습니다.

아래의 형태는 특정 API가 아니라 결정을 스케치한 것입니다. 핵심은 목적지가 추측되는 것이 아니라 명시된다는 것입니다.

<?php
declare(strict_types=1);
use NextPDF\Contracts\PdfDocumentInterface;
/**
* Prepare a print-bound document that declares its intended output condition.
*
* The colour numbers alone do not fix the appearance. Declaring the output
* intent — the print condition the file was built for — is what lets a press
* interpret those numbers faithfully (ISO 32000-2 §14.11.5).
*
* @param PdfDocumentInterface $doc A composed document.
* @param string $iccProfileBytes The destination ICC profile for the
* target print condition.
*
* @return string The document bytes, carrying a declared output intent.
*/
function prepareForPress(
PdfDocumentInterface $doc,
string $iccProfileBytes,
): string {
// Declare the output condition explicitly. The document now states the
// device/print condition it was prepared for, instead of leaving its
// device colours open to interpretation.
$doc->setOutputIntent(
identifier: 'Custom press condition',
iccProfile: $iccProfileBytes,
);
return $doc->output();
}

색은 바뀌지 않았습니다. 바뀐 것은 이제 파일이 그 색이 어떻게 보여야 하는지를 말한다는 점이며, 그것이 인쇄기나 검증기가 작용할 수 있는 유일한 것입니다.

“같은 16진수 값이니까 같은 색이다.” 16진수 값은 장치 제어 값의 집합입니다. 프로파일이나 출력 인텐트가 없으면 그것은 주방이 지정되지 않은 레시피입니다 — 주방마다 다른 맛이 날 것입니다. 두 파일은 동일한 RGB 숫자를 지니고도 정직하게 서로 다른 색일 수 있습니다. 한쪽은 그 숫자에 의미를 부여하는 맥락을 선언하고, 다른 한쪽은 그것을 운에 맡기기 때문입니다.

두 번째 함정: DeviceCMYK가 자동으로 “인쇄 준비 완료”를 뜻한다는 가정입니다. 그렇지 않습니다. CMYK는 여전히 장치 색입니다. 그것은 인쇄기에 맞춰진 형태이지만, 프로파일이나 출력 인텐트가 실제 인쇄기 조건을 명명하기 전까지는 보정된 것이 아닙니다.

NextPDF는 표준에 맞게 정확한 색을 만들어 냅니다: 장치 및 ICC 기반 색 공간을 기록하고, PDF/X 방식과 PDF/A 워크플로를 위해 포맷이 정의한 방식대로 출력 인텐트를 선언합니다. 그것이 작업의 만들어 내는 절반이며, 문서가 소유할 수 있는 절반입니다.

NextPDF가 아닌 것은 색 교정 시스템입니다. 그것은 당신의 모니터를 측정하지도, 화면에서 인쇄기를 소프트 프루핑하지도, 인쇄된 결과가 의도한 색견본과 허용 오차 안에서 일치한다고 인증하지도 않습니다. 그런 일은 색 관리 교정 사슬과 그것을 운영하는 사람들에게 속합니다. 엔진은 파일이 올바른 말을 하도록 만듭니다. 최종 장치가 그것을 존중하는지는 다운스트림에서, 장치와, 작용하는 ICC 프로파일에 의해, 그리고 — PDF/X와 PDF/A의 경우 — 생산자가 아니라 검증기에 의해 결정됩니다.

  • 장치 색 공간 — 장치가 받는 제어 값으로 명명되는 색(DeviceRGB, DeviceCMYK, DeviceGray). 외관은 해석하는 장치에 달려 있습니다 (ISO 32000-2 §8.6.4).
  • 보정된 / ICC 기반 색 — 임베디드 ICC 프로파일을 통해 장치 독립적 기준에 묶인 색이므로, 의도한 외관이 여러 장치에 걸쳐 재현 가능합니다 (ISO 32000-2 §8.6.5.5).
  • ICC 프로파일 — 특정 장치의 숫자와, 사람의 시각을 근사하는 장치 독립적 기준 사이의 측정된 매핑.
  • 렌더링 인텐트 — 대상 장치가 재현할 수 없는 색을 처리하는 정책: 도달 가능한 가장 가까운 색으로 잘라 내거나, 한 범위를 이동시켜 색의 관계를 보존합니다.
  • 출력 인텐트 — 문서가 준비된 출력 조건을 선언하는 것으로, 일반적으로 임베디드 대상 ICC 프로파일을 통해서입니다(ISO 32000-2 §14.11.5); PDF/X가 요구하고 PDF/A가 사용합니다.
  • PDF/X — PDF의 ISO 15930 인쇄 교환 프로파일 계열. PDF/X 파일은 반드시 대상 인쇄 조건을 명명하는 출력 인텐트를 지녀야 합니다.