mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-05-24 09:24:51 +00:00
gnujpdf reformat
This commit is contained in:
@@ -32,219 +32,217 @@ import java.io.Serializable;
|
||||
* @author Gilbert DeLeeuw, gil1@users.sourceforge.net
|
||||
* @version $Revision: 1.3 $, $Date: 2007/08/26 19:00:11 $
|
||||
*/
|
||||
public class PDFFont extends PDFObject implements Serializable
|
||||
{
|
||||
public class PDFFont extends PDFObject implements Serializable {
|
||||
|
||||
/*
|
||||
/*
|
||||
* NOTE: The original class is the work of Peter T. Mount, who released it
|
||||
* in the uk.org.retep.pdf package. It was modified by Eric Z. Beard as
|
||||
* follows:
|
||||
* The package name was changed to gnu.pdf.
|
||||
* The formatting was changed a little bit
|
||||
* It is still licensed under the LGPL.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The PDF document name of the font
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* The PDF type of the font, usually /Type1
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* The font's real name
|
||||
*/
|
||||
private String font;
|
||||
|
||||
/**
|
||||
* The name of the equivalent Java font
|
||||
*/
|
||||
private String javaFont;
|
||||
|
||||
/**
|
||||
* The PDF Style, ie: BOLD, ITALIC, etc
|
||||
*/
|
||||
private int style;
|
||||
|
||||
/**
|
||||
* This constructs a default PDFFont. In this case Helvetica
|
||||
*/
|
||||
protected PDFFont() {
|
||||
this("/F1","/Type1","Helvetica",Font.PLAIN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a PDFFont. This will attempt to map the font from a known
|
||||
* Java font name to that in PDF, defaulting to Helvetica if not possible.
|
||||
*
|
||||
* @param name The document name, ie /F1
|
||||
* @param type The pdf type, ie /Type1
|
||||
* @param font The font name, ie Helvetica
|
||||
* @param style The java.awt.Font style, ie: Font.PLAIN
|
||||
*/
|
||||
public PDFFont(String name,String type,String font,int style) {
|
||||
super("/Font");
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.style = style;
|
||||
|
||||
String f = font.toLowerCase();
|
||||
|
||||
// default PDF Font name
|
||||
*/
|
||||
/**
|
||||
* The PDF document name of the font
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* The PDF type of the font, usually /Type1
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* The font's real name
|
||||
*/
|
||||
private String font;
|
||||
|
||||
/**
|
||||
* The name of the equivalent Java font
|
||||
*/
|
||||
private String javaFont;
|
||||
|
||||
/**
|
||||
* The PDF Style, ie: BOLD, ITALIC, etc
|
||||
*/
|
||||
private int style;
|
||||
|
||||
/**
|
||||
* This constructs a default PDFFont. In this case Helvetica
|
||||
*/
|
||||
protected PDFFont() {
|
||||
this("/F1", "/Type1", "Helvetica", Font.PLAIN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a PDFFont. This will attempt to map the font from a known Java
|
||||
* font name to that in PDF, defaulting to Helvetica if not possible.
|
||||
*
|
||||
* @param name The document name, ie /F1
|
||||
* @param type The pdf type, ie /Type1
|
||||
* @param font The font name, ie Helvetica
|
||||
* @param style The java.awt.Font style, ie: Font.PLAIN
|
||||
*/
|
||||
public PDFFont(String name, String type, String font, int style) {
|
||||
super("/Font");
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.style = style;
|
||||
|
||||
String f = font.toLowerCase();
|
||||
|
||||
// default PDF Font name
|
||||
// this.font = base14[0][1];
|
||||
// this.javaFont = base14[0][0];
|
||||
this.font = font;
|
||||
this.javaFont = "/" + font;
|
||||
|
||||
// attempt to translate the font name from Java to PDF
|
||||
for(int i=0;i<base14.length;i++) {
|
||||
if(base14[i][0].equals(f)) {
|
||||
this.javaFont = base14[i][0];
|
||||
this.font = base14[i][1+style];
|
||||
//System.out.println("Setting a font style to: " + this.font);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the most common method to use.
|
||||
* @return the Font name within the PDF document.
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the Font's PDF type
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The PDF Font name
|
||||
*/
|
||||
public String getFont() {
|
||||
return font;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the font style.
|
||||
* @see java.awt.Font
|
||||
*/
|
||||
public int getStyle() {
|
||||
return style;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param os OutputStream to send the object to
|
||||
* @exception IOException on error
|
||||
*/
|
||||
public void write(OutputStream os) throws IOException {
|
||||
// Write the object header
|
||||
writeStart(os);
|
||||
|
||||
// now the objects body
|
||||
os.write("/Subtype ".getBytes());
|
||||
os.write(type.getBytes());
|
||||
os.write("\n/Name ".getBytes());
|
||||
os.write(name.getBytes());
|
||||
os.write("\n/BaseFont ".getBytes());
|
||||
os.write(font.getBytes());
|
||||
// The performance problem in Bug#106693 comments out the
|
||||
// encoding line, and removes the /WinAnsiEncoding. I'm going
|
||||
// to leave them in, as the Encoding fixes another problem.
|
||||
os.write("\n/Encoding ".getBytes());
|
||||
os.write("/WinAnsiEncoding".getBytes());
|
||||
//os.write(encoding.getBytes());
|
||||
os.write("\n".getBytes());
|
||||
|
||||
// finish off with its footer
|
||||
writeEnd(os);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is used by the PDF and PDFPage classes to compare font names
|
||||
*
|
||||
* @param type The pdf type, ie /Type1
|
||||
* @param font The font name, ie Helvetica
|
||||
* @param style The java.awt.Font style, ie: Font.PLAIN
|
||||
* @return true if this object is identical to this font's spec
|
||||
*/
|
||||
protected boolean equals(String type,String font,int style) {
|
||||
return this.type.equals(type)
|
||||
&& (this.font.equalsIgnoreCase(font)
|
||||
|| this.javaFont.equalsIgnoreCase(font));
|
||||
// new styles not being picked up - ezb june 6 2001
|
||||
// || this.javaFont.equalsIgnoreCase(font));
|
||||
|
||||
// Removed in fix for Bug#106693
|
||||
//why? - ezb - can't find bug in bug tracker
|
||||
//&& this.style==style;
|
||||
}
|
||||
|
||||
/**
|
||||
* This maps the standard JDK1.1 font names and styles to
|
||||
* the base 14 PDF fonts
|
||||
*/
|
||||
private static String[][] base14 = {
|
||||
// java name
|
||||
// NORMAL
|
||||
// BOLD
|
||||
// ITALIC
|
||||
// BOLD+ITALIC
|
||||
{
|
||||
"arial",
|
||||
"/Helvetica",
|
||||
"/Helvetica-Bold",
|
||||
"/Helvetica-Oblique",
|
||||
"/Helvetica-BoldOblique" },
|
||||
{
|
||||
"sansserif",
|
||||
"/Helvetica",
|
||||
"/Helvetica-Bold",
|
||||
"/Helvetica-Oblique",
|
||||
"/Helvetica-BoldOblique" },
|
||||
{
|
||||
"monospaced",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique" },
|
||||
{
|
||||
"timesroman",
|
||||
"/Times-Roman",
|
||||
"/Times-Bold",
|
||||
"/Times-Italic",
|
||||
"/Times-BoldItalic" },
|
||||
{
|
||||
"courier",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique" },
|
||||
{
|
||||
"helvetica",
|
||||
"/Helvetica",
|
||||
"/Helvetica-Bold",
|
||||
"/Helvetica-Oblique",
|
||||
"/Helvetica-BoldOblique" },
|
||||
{
|
||||
"dialog",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique" },
|
||||
{
|
||||
"dialoginput",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique" }, };
|
||||
|
||||
}
|
||||
this.font = font;
|
||||
this.javaFont = "/" + font;
|
||||
|
||||
// attempt to translate the font name from Java to PDF
|
||||
for (int i = 0; i < base14.length; i++) {
|
||||
if (base14[i][0].equals(f)) {
|
||||
this.javaFont = base14[i][0];
|
||||
this.font = base14[i][1 + style];
|
||||
//System.out.println("Setting a font style to: " + this.font);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the most common method to use.
|
||||
*
|
||||
* @return the Font name within the PDF document.
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the Font's PDF type
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The PDF Font name
|
||||
*/
|
||||
public String getFont() {
|
||||
return font;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the font style.
|
||||
* @see java.awt.Font
|
||||
*/
|
||||
public int getStyle() {
|
||||
return style;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param os OutputStream to send the object to
|
||||
* @exception IOException on error
|
||||
*/
|
||||
public void write(OutputStream os) throws IOException {
|
||||
// Write the object header
|
||||
writeStart(os);
|
||||
|
||||
// now the objects body
|
||||
os.write("/Subtype ".getBytes());
|
||||
os.write(type.getBytes());
|
||||
os.write("\n/Name ".getBytes());
|
||||
os.write(name.getBytes());
|
||||
os.write("\n/BaseFont ".getBytes());
|
||||
os.write(font.getBytes());
|
||||
// The performance problem in Bug#106693 comments out the
|
||||
// encoding line, and removes the /WinAnsiEncoding. I'm going
|
||||
// to leave them in, as the Encoding fixes another problem.
|
||||
os.write("\n/Encoding ".getBytes());
|
||||
os.write("/WinAnsiEncoding".getBytes());
|
||||
//os.write(encoding.getBytes());
|
||||
os.write("\n".getBytes());
|
||||
|
||||
// finish off with its footer
|
||||
writeEnd(os);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is used by the PDF and PDFPage classes to compare font names
|
||||
*
|
||||
* @param type The pdf type, ie /Type1
|
||||
* @param font The font name, ie Helvetica
|
||||
* @param style The java.awt.Font style, ie: Font.PLAIN
|
||||
* @return true if this object is identical to this font's spec
|
||||
*/
|
||||
protected boolean equals(String type, String font, int style) {
|
||||
return this.type.equals(type)
|
||||
&& (this.font.equalsIgnoreCase(font)
|
||||
|| this.javaFont.equalsIgnoreCase(font));
|
||||
// new styles not being picked up - ezb june 6 2001
|
||||
// || this.javaFont.equalsIgnoreCase(font));
|
||||
|
||||
// Removed in fix for Bug#106693
|
||||
//why? - ezb - can't find bug in bug tracker
|
||||
//&& this.style==style;
|
||||
}
|
||||
|
||||
/**
|
||||
* This maps the standard JDK1.1 font names and styles to the base 14 PDF
|
||||
* fonts
|
||||
*/
|
||||
private static String[][] base14 = {
|
||||
// java name
|
||||
// NORMAL
|
||||
// BOLD
|
||||
// ITALIC
|
||||
// BOLD+ITALIC
|
||||
{
|
||||
"arial",
|
||||
"/Helvetica",
|
||||
"/Helvetica-Bold",
|
||||
"/Helvetica-Oblique",
|
||||
"/Helvetica-BoldOblique"},
|
||||
{
|
||||
"sansserif",
|
||||
"/Helvetica",
|
||||
"/Helvetica-Bold",
|
||||
"/Helvetica-Oblique",
|
||||
"/Helvetica-BoldOblique"},
|
||||
{
|
||||
"monospaced",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique"},
|
||||
{
|
||||
"timesroman",
|
||||
"/Times-Roman",
|
||||
"/Times-Bold",
|
||||
"/Times-Italic",
|
||||
"/Times-BoldItalic"},
|
||||
{
|
||||
"courier",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique"},
|
||||
{
|
||||
"helvetica",
|
||||
"/Helvetica",
|
||||
"/Helvetica-Bold",
|
||||
"/Helvetica-Oblique",
|
||||
"/Helvetica-BoldOblique"},
|
||||
{
|
||||
"dialog",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique"},
|
||||
{
|
||||
"dialoginput",
|
||||
"/Courier",
|
||||
"/Courier-Bold",
|
||||
"/Courier-Oblique",
|
||||
"/Courier-BoldOblique"},};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user