2011-10-24 1 views
2

itext 및 ColdFusion (java)을 사용하여 PDF 문서에 텍스트 문자열을 쓰고 있습니다. 나는 사용해야하는 트루 타입과 오픈 타입 글꼴을 가지고있다. Truetype 글꼴이 제대로 작동하는 것 같지만 .otf로 끝나는 글꼴 파일에는 자간이 사용되지 않습니다. 아래 코드는 Airstream (OpenType)에서 "Line 1 of Text"를 쓰지만 "T"와 "e"사이의 커닝은 빠져 있습니다. 다른 프로그램에서 같은 글꼴을 사용하면 자간이 생깁니다. 나는 itext의 최신 버전을 또한 다운로드했지만 커닝은 여전히 ​​작동하지 않았다. 누구든지 커닝을 ittext에서 otf 글꼴로 작업하는 방법을 알고 있습니까?itext를 사용한 OpenType 글꼴 커닝

<cfscript> 
pdfContentByte = createObject("java","com.lowagie.text.pdf.PdfContentByte"); 
BaseFont= createObject("java","com.lowagie.text.pdf.BaseFont"); 
bf = BaseFont.createFont("c:\windows\fonts\AirstreamITCStd.otf", "" , BaseFont.EMBEDDED); 
document = createobject("java","com.lowagie.text.Document").init(); 
fileOutput = createObject("java","java.io.FileOutputStream").init("c:\inetpub\test.pdf"); 
writer = createobject("java","com.lowagie.text.pdf.PdfWriter").getInstance(document,fileOutput); 
document.open();  
cb = writer.getDirectContent(); 
cb.beginText(); 
cb.setFontAndSize(bf, 72); 
cb.showTextAlignedKerned(PdfContentByte.ALIGN_LEFT,"Line 1 of Text",0,72,0); 
cb.endText(); 
document.close(); 

bf.hasKernPairs(); //returns NO 
bf.getClass().getName(); //returns "com.lowagie.text.pdf.TrueTypeFont" 
</cfscript> 

답변

1

: CFF 외곽선을 포함 http://www.microsoft.com/typography/otspec/kern.htm 오픈 타입 ™ 글꼴은 '컨'테이블에서 지원되지 않으며 'GPOS'오픈 타입 레이아웃 테이블을 사용해야합니다.

내가 소스를 체크 아웃했는데, IText 구현은 오직 GPOS 테이블을 읽지 않고 truetype 글꼴에 대해서만 커널을 검사하므로 내부 kernings은 비어 있어야하며 hasKernPairs는 false를 반환해야합니다.

그래서, solove 2 방법이 있습니다

  • 당신이 :
  • 나를 위해 GPosition 테이블을
  • 대기를 읽어 truetypefont 패치를 사용 OTF 제거를, 내가 처리하고 있습니다 cff 콘텐츠,하지만 PDF는 내 선택의 여지가 :) 가능성을 제외하지 :) :)
0

이 스레드를 How to use Open Type Fonts in Java에 대해보십시오. 여기서 otf는 java에서 지원되지 않는다고 명시되어 있습니다 (iText조차도 포함되지 않음). Otf 지원은 sdk 버전 및 OS에 따라 다릅니다.

또는 당신 TTF에 OTF 변환 FontForge를 사용할 수 있습니다. 소위 스펙에 따라