Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
  
     Copyright 2001,2003  The Apache Software Foundation 
  
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
  
         http://www.apache.org/licenses/LICENSE-2.0
 
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
 
  */
 package org.apache.batik.svggen.font.table;
 

Author(s):
David Schweinsberg
Version:
$Id: CmapFormat4.java,v 1.6 2004/09/01 09:35:23 deweese Exp $
 
 public class CmapFormat4 extends CmapFormat {
 
     public  int language;
     private int segCountX2;
     private int searchRange;
     private int entrySelector;
     private int rangeShift;
     private int[] endCode;
     private int[] startCode;
     private int[] idDelta;
     private int[] idRangeOffset;
     private int[] glyphIdArray;
     private int segCount;
     private int firstlast;
 
     protected CmapFormat4(RandomAccessFile rafthrows IOException {
         super(raf);
          = 4;
          = raf.readUnsignedShort();
          =  / 2;
          = new int[];
          = new int[];
          = new int[];
          = new int[];
          = raf.readUnsignedShort();
          = raf.readUnsignedShort();
          = raf.readUnsignedShort();
          = -1;
         for (int i = 0; i < i++) {
             [i] = raf.readUnsignedShort();
             if ([i] >  = [i];
         }
         raf.readUnsignedShort(); // reservePad
         for (int i = 0; i < i++) {
             [i] = raf.readUnsignedShort();
             if ((i==0 ) || ([i] < ))  = [i];
         }
         for (int i = 0; i < i++) {
             [i] = raf.readUnsignedShort();
         }
         for (int i = 0; i < i++) {
             [i] = raf.readUnsignedShort();
         }
 
         // Whatever remains of this header belongs in glyphIdArray
         int count = ( - 16 - (*8)) / 2;
          = new int[count];
         for (int i = 0; i < counti++) {
             [i] = raf.readUnsignedShort();
         }
     }
 
     public int getFirst() { return ; }
     public int getLast()  { return ; }
 
     public int mapCharCode(int charCode) {
         try {
             /*
               Quoting :
               http://developer.apple.com/fonts/TTRefMan/RM06/Chap6cmap.html#Surrogates
                
               The original architecture of the Unicode Standard
               allowed for all encoded characters to be represented
               using sixteen bit code points. This allowed for up to
               65,354 characters to be encoded. (Unicode code points
               U+FFFE and U+FFFF are reserved and unavailable to
               represent characters. For more details, see The Unicode
               Standard.)
                
               My comment : Isn't there a typo here ? Shouldn't we
               rather read 65,534 ?
               */
             if ((charCode < 0) || (charCode >= 0xFFFE))
                return 0;
            for (int i = 0; i < i++) {
                if ([i] >= charCode) {
                    if ([i] <= charCode) {
                        if ([i] > 0) {
                            return [[i]/2 + 
                                                (charCode - [i]) -
                                                ( - i)];
                        } else {
                            return ([i] + charCode) % 65536;
                        }
                    } else {
                        break;
                    }
                }
            }
        } catch (ArrayIndexOutOfBoundsException e) {
            ..println("error: Array out of bounds - " + e.getMessage());
        }
        return 0;
    }
    public String toString() {
        return new StringBuffer()
        .append(super.toString())
        .append(", segCountX2: ")
        .append()
        .append(", searchRange: ")
        .append()
        .append(", entrySelector: ")
        .append()
        .append(", rangeShift: ")
        .append()
        .append(", endCode: ")
        .append()
        .append(", startCode: ")
        .append()
        .append(", idDelta: ")
        .append()
        .append(", idRangeOffset: ")
        .append().toString();
    }
New to GrepCode? Check out our FAQ X