2014-11-21 3 views
1

어떤 내부적 인 이유로 글꼴을 다시 인코딩 할 수있는 글꼴을 찾으려고 시도하는 파일이 있습니다 (이유는 모르지만 아직 다른 롤인 자신의 것입니다.) PS 파일). 가능한 최상의 글꼴 키 끝에 스택에 있다는 것이다Ghostscript - 런타임시 최종 대체 글꼴을 결정합니다.

/Arial 
dup /Font resourcestatus{ pop pop }{ pop /ArialMT }ifelse 
dup /Font resourcestatus{ pop pop }{ pop /Helvetica }ifelse 

목적 :

이 같은 몇 가지 논리로이 작업을 수행합니다.

Windows의 Ghostscript에서/Arial (resourcestatus가 2를 반환 함) 인 것으로 보입니다. 그러나 일반적인 경고에 글꼴 결과를 찾으려 : 우리가 그것을 사용하기 전에

Can't find (or can't open) font file %rom%Resource/Font/ArialMT. 
Can't find (or can't open) font file ArialMT. 
Can't find (or can't open) font file %rom%Resource/Font/ArialMT. 
Can't find (or can't open) font file ArialMT. 
Querying operating system for font files... 
Didn't find this font on the system! 
Substituting font Helvetica for ArialMT. 

는,이 상황에서 최종/돋움 글꼴 키를 결정 할 수 있습니까?

대체 프로세스가 다른 포함 된 글꼴이 누락되는 오류가 발생하므로 중요합니다. 분명히이 문제의 원인이되는 버그가 있지만 여전히 조사 중이며 어쨌든 호기심이 많습니다.

답변

4

대답은 '별로'아닙니다. Ghostscript의 글꼴 대체 메커니즘은 상당히 복잡하고 글꼴 특성을 기반으로 한 몇 가지 발견 적 방법을 필요로합니다. 또한 Ghostscript와 설치된 글꼴을 어떻게 구성했는지에 달려 있습니다.

특정 경우 fontmap.GS에 Arial에 대한 정의가 있음을 알 수 있습니다. 실제로 기본 fontmap.GS에는 다음이 포함됩니다.

/Arial/ArialMT;

그러나 Windows 시스템에 설치하지 않은 경우 (GS 설치 프로그램을 사용하여 FontPath를 설정 한 경우) 실제로 ArialMT에 대한 참조가 설치되지 않습니다. 따라서 ArialMT가 정의되지 않았기 때문에 Helvetica 인 'all all else fails'글꼴로 되돌아갑니다. 위의 뒷 채널에서 볼 수있는 것들.

글꼴 대체 문제를 피하는 가장 좋은 방법은 fontmap.GS를 신중하게 구성하는 것입니다. Ghostscript 소스와 함께 제공되는 버전은 이며 모든 시스템에서 '있는 그대로'사용할 수 없습니다.

+0

삭제 해 주셔서 감사합니다. 이 경우에는 Windows 버전으로 컴파일 된 기본값을 사용하고 있습니다. 나는 폰트가 대체 될 때 파일이 어떻게 행동하는지 조사 만하고있다. 미래의 폰트가 정의되는 것을 막는 것처럼 보이기 때문이다. –

+0

글꼴 대체 코드는 글꼴의 정의 (또는 재정의)를 차단하지 않지만 정의하기 전에 이름이 지정된 글꼴의 존재 여부를 PostScript 프로그램에서 테스트하는 경우 해당 효과가있을 수 있습니다. 그러나 글꼴 대체 코드는 아무 것도 차단하지 않습니다. – KenS

+0

사실적인 글꼴 대체 휴리스틱 스를 실제로보고 싶다면 gs_fonts.ps, gs_fapi.ps, gs_fntmem.ps를 살펴볼 수 있습니다. CID 글꼴의 경우 gs_cidcm.ps, gs_ciddc.ps, gs_cidfn.ps 및 gs_cmap.ps를 확인해야합니다. gs_ttf.ps 및 gs_cidtt.ps는 트루 타입 글꼴을 직접로드하지만 대체는 사용하지 않습니다. PostScript에 대한 탁월한 실무 지식이 있어야 이러한 프로그램을 사용할 수 있습니다. – KenS

관련 문제