OSDN Git Service

Auto-save
[dvibrowser/dvi2epub.git] / src / jp / sourceforge / dvibrowser / dvicore / font / PkFont.java
diff --git a/src/jp/sourceforge/dvibrowser/dvicore/font/PkFont.java b/src/jp/sourceforge/dvibrowser/dvicore/font/PkFont.java
deleted file mode 100644 (file)
index 093495c..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (c) 2009, Takeyuki Nagao
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the
- * following conditions are met:
- * 
- *  * Redistributions of source code must retain the above
- *    copyright notice, this list of conditions and the
- *    following disclaimer.
- *  * Redistributions in binary form must reproduce the above
- *    copyright notice, this list of conditions and the
- *    following disclaimer in the documentation and/or other
- *    materials provided with the distribution.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- */
-
-package jp.sourceforge.dvibrowser.dvicore.font;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-
-import jp.sourceforge.dvibrowser.dvicore.DviException;
-import jp.sourceforge.dvibrowser.dvicore.DviFontSpec;
-import jp.sourceforge.dvibrowser.dvicore.DviObject;
-import jp.sourceforge.dvibrowser.dvicore.DviResolution;
-import jp.sourceforge.dvibrowser.dvicore.DviUnit;
-import jp.sourceforge.dvibrowser.dvicore.api.DviContextSupport;
-import jp.sourceforge.dvibrowser.dvicore.api.DviFont;
-import jp.sourceforge.dvibrowser.dvicore.api.Glyph;
-import jp.sourceforge.dvibrowser.dvicore.api.SimpleMetrics;
-import jp.sourceforge.dvibrowser.dvicore.io.DviInputStreamReader;
-import jp.sourceforge.dvibrowser.dvicore.util.DviUtils;
-
-
-public class PkFont
-extends DviObject
-implements DviFont, SimpleMetrics
-{
-  private static final long serialVersionUID = 1531160169076910099L;
-
-  private final File file;
-
-  private int idByte;
-  private byte[] comment;
-
-  private int designSize;
-  private int checkSum;
-  private int hppp;
-  private int vppp;
-  private long bodyOffset;
-  private int numChars;
-
-  private HashMap<Integer, Glyph> glyphs
-      = new HashMap<Integer, Glyph>();
-
-  public PkFont(DviContextSupport dcs, File file) 
-  throws DviException
-  {
-    super(dcs);
-    this.file = file;
-    try {
-      FileInputStream fis = null;
-      try {
-        fis = new FileInputStream(file);
-        parseInputStream(fis);
-      } finally {
-        DviUtils.silentClose(fis);
-      }
-    } catch (DviException ex) {
-      throw ex;
-    } catch (IOException ex) {
-      throw new DviException(ex);
-    }
-  }
-
-  public PkFont(DviContextSupport dcs, InputStream is) 
-  throws DviException
-  {
-    super(dcs);
-    try {
-      parseInputStream(is);
-    } catch (DviException ex) {
-      throw ex;
-    } catch (IOException ex) {
-      throw new DviException(ex);
-    }
-    this.file = null;
-  }
-
-  public boolean hasChar(int code)
-  {
-    return glyphs.containsKey(code);
-  }
-
-  public Glyph getGlyph(LogicalFont lf, int code)
-  {
-    return glyphs.get(code);
-  }
-
-  public int getWidth(int code)
-  {
-    PkGlyph g = (PkGlyph) glyphs.get(code);
-    if (g == null) return 0;
-    return g.width();
-  }
-
-  public int getHeight(int code)
-  {
-    PkGlyph g = (PkGlyph) glyphs.get(code);
-    if (g == null) return 0;
-    return g.height();
-  }
-
-  public int getTfmWidth(int code)
-  {
-    PkGlyph g = (PkGlyph) glyphs.get(code);
-    if (g == null) return 0;
-    return g.getTfmWidth();
-  }
-  
-  public int getIdByte() {
-         return idByte;
-  }
-
-  public byte[] getComment() {
-         return comment.clone();
-  }
-
-  public int getDesignSize() {
-         return designSize;
-  }
-
-  public int getCheckSum() {
-         return checkSum;
-  }
-
-  // TODO: rename this method
-  public int getHppp() {
-         return hppp;
-  }
-
-  // TODO: rename this method
-  public int getVppp() {
-         return vppp;
-  }
-
-  public long getBodyOffset() {
-         return bodyOffset;
-  }
-
-  public int getNumChars() {
-         return numChars;
-  }
-
-  public void parseInputStream(InputStream is)
-  throws IOException, DviException
-  {
-    DviInputStreamReader in = new DviInputStreamReader(
-      new BufferedInputStream(is, 8192)
-    );
-
-    if (in.readU1() != PkConstants.PK_PRE)
-      throw new DviException
-        ("PK file doesn't start with PRE.");
-
-    idByte     = in.readU1();
-    if (idByte != PkConstants.PK_ID_BYTE)
-      throw new DviException
-        ("Unrecognized PK file: wrong idByte: " + idByte);
-    int commentLen = in.readU1();
-    comment = new byte[commentLen];
-    in.readFully(comment);
-    designSize = in.readS4();
-    checkSum   = in.readS4();
-    hppp       = in.readS4();
-    vppp       = in.readS4();
-    bodyOffset = in.getOffset();
-
-    numChars = 0;
-
-    boolean stop = false;
-    while (!stop) {
-      byte [] buf;
-      int c = in.readU1();
-      switch (c) {
-        case PkConstants.PK_XXX4:
-        case PkConstants.PK_XXX3:
-        case PkConstants.PK_XXX2:
-        case PkConstants.PK_XXX1: {
-          int len;
-          len = in.readU(c - PkConstants.PK_XXX1 + 1);
-          buf = new byte[len];
-          in.readFully(buf);
-          // System.out.println("xxx: \"" + new String(buf) + "\"");
-          break;
-        }
-        case PkConstants.PK_YYY: {
-//          int yyy = in.readS4();
-               in.readS4();
-          // System.out.println("yyy: " + yyy);
-          break;
-        }
-        case PkConstants.PK_NOP:
-          break;
-        case PkConstants.PK_POST:
-          stop = true;
-          break;
-        case PkConstants.PK_PRE:
-          throw new DviException
-            ("broken PK file: PRE found in the body of PK file: "
-              + file.getPath());
-        default:
-        {
-//          long pos = in.getOffset() - 1;
-          PkGlyph g = (PkGlyph) PkGlyph.readFromInput(c, in);
-          glyphs.put(g.code(), g);
-        }
-      }
-    }
-  }
-  
-  public static String getDviResourceName(LogicalFont lf)
-  {
-    DviFontSpec fs = lf.fontSpec();
-    DviResolution res = lf.resolution();
-    DviUnit dviUnit = lf.dviUnit();
-    int useDpi = (int) (
-      (double) res.dpi() * fs.spaceSize() * dviUnit.magnification()
-        / fs.designSize() / 1000
-    );
-    if (useDpi <= 0) return null;
-    String pk = fs.name() + "." + useDpi + "pk";
-    return pk;
-  }
-}