2

itextとColdFusion(java)を使用して、PDFドキュメントにテキスト文字列を書き込みます。使用する必要のあるtrueTypeフォントとopenTypeフォントの両方があります。TrueTypeフォントは正しく機能しているようですが、.otfで終わるフォントファイルにはカーニングが使用されていません。以下のコードは、Airstream(OpenType)に「Line1 of Text」と記述していますが、「T」と「e」の間のカーニングがありません。同じフォントを他のプログラムで使用すると、カーニングが発生します。itextの新しいバージョンもダウンロードしましたが、カーニングが機能しませんでした。itextでカーニングをotfフォントで動作させる方法を知っている人はいますか?

<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>
4

2 に答える 2

1
于 2012-05-16T21:49:02.817 に答える
0

How to use Open Type Fonts in Javaに関するこのスレッドをご覧ください。otf は Java ではサポートされていません (iText でもサポートされていません)。Otf のサポートは、sdk のバージョンと OS によって異なります。

または、 otf を ttf に変換するFontForgeを使用することもできます。

于 2011-10-27T13:58:36.083 に答える