public abstract class sun.font.FontScaler implements sun.java2d.DisposerRecord
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: sun.font.FontScaler
  super_class: java.lang.Object
{
  private static sun.font.FontScaler nullScaler;
    descriptor: Lsun/font/FontScaler;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  protected java.lang.ref.WeakReference<sun.font.Font2D> font;
    descriptor: Ljava/lang/ref/WeakReference;
    flags: (0x0004) ACC_PROTECTED
    Signature: Ljava/lang/ref/WeakReference<Lsun/font/Font2D;>;

  protected long nativeScaler;
    descriptor: J
    flags: (0x0004) ACC_PROTECTED

  protected boolean disposed;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 83
            aconst_null
            putstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.font.FontScaler this
         0: .line 81
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 131
            aload 0 /* this */
            aconst_null
            putfield sun.font.FontScaler.font:Ljava/lang/ref/WeakReference;
         2: .line 132
            aload 0 /* this */
            lconst_0
            putfield sun.font.FontScaler.nativeScaler:J
         3: .line 134
            aload 0 /* this */
            iconst_0
            putfield sun.font.FontScaler.disposed:Z
         4: .line 81
            return
        end local 0 // sun.font.FontScaler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/font/FontScaler;

  public static sun.font.FontScaler getScaler(sun.font.Font2D, int, boolean, int);
    descriptor: (Lsun/font/Font2D;IZI)Lsun/font/FontScaler;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // sun.font.Font2D font
        start local 1 // int indexInCollection
        start local 2 // boolean supportsCJK
        start local 3 // int filesize
         0: .line 99
            aconst_null
            astore 4 /* scaler */
        start local 4 // sun.font.FontScaler scaler
         1: .line 102
            new sun.font.FreetypeFontScaler
            dup
            aload 0 /* font */
            iload 1 /* indexInCollection */
         2: .line 103
            iload 2 /* supportsCJK */
            iload 3 /* filesize */
         3: .line 102
            invokespecial sun.font.FreetypeFontScaler.<init>:(Lsun/font/Font2D;IZI)V
            astore 4 /* scaler */
         4: .line 104
            aload 0 /* font */
            aload 4 /* scaler */
            invokestatic sun.java2d.Disposer.addObjectRecord:(Ljava/lang/Object;Lsun/java2d/DisposerRecord;)V
         5: .line 105
            goto 10
      StackMap locals: sun.font.Font2D int int int sun.font.FontScaler
      StackMap stack: java.lang.Throwable
         6: pop
         7: .line 106
            invokestatic sun.font.FontScaler.getNullScaler:()Lsun/font/FontScaler;
            astore 4 /* scaler */
         8: .line 111
            invokestatic sun.font.FontManagerFactory.getInstance:()Lsun/font/FontManager;
            astore 5 /* fm */
        start local 5 // sun.font.FontManager fm
         9: .line 112
            aload 5 /* fm */
            aload 0 /* font */
            invokeinterface sun.font.FontManager.deRegisterBadFont:(Lsun/font/Font2D;)V
        end local 5 // sun.font.FontManager fm
        10: .line 114
      StackMap locals:
      StackMap stack:
            aload 4 /* scaler */
            areturn
        end local 4 // sun.font.FontScaler scaler
        end local 3 // int filesize
        end local 2 // boolean supportsCJK
        end local 1 // int indexInCollection
        end local 0 // sun.font.Font2D font
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   11     0               font  Lsun/font/Font2D;
            0   11     1  indexInCollection  I
            0   11     2        supportsCJK  Z
            0   11     3           filesize  I
            1   11     4             scaler  Lsun/font/FontScaler;
            9   10     5                 fm  Lsun/font/FontManager;
      Exception table:
        from    to  target  type
           1     5       6  Class java.lang.Throwable
    MethodParameters:
                   Name  Flags
      font               
      indexInCollection  
      supportsCJK        
      filesize           

  public static synchronized sun.font.FontScaler getNullScaler();
    descriptor: ()Lsun/font/FontScaler;
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=0, args_size=0
         0: .line 125
            getstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
            ifnonnull 2
         1: .line 126
            new sun.font.NullFontScaler
            dup
            invokespecial sun.font.NullFontScaler.<init>:()V
            putstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
         2: .line 128
      StackMap locals:
      StackMap stack:
            getstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  abstract sun.font.StrikeMetrics getFontMetrics(long);
    descriptor: (J)Lsun/font/StrikeMetrics;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
                Name  Flags
      pScalerContext  

  abstract float getGlyphAdvance(long, int);
    descriptor: (JI)F
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
                Name  Flags
      pScalerContext  
      glyphCode       

  abstract void getGlyphMetrics(long, int, java.awt.geom.Point2D$Float);
    descriptor: (JILjava/awt/geom/Point2D$Float;)V
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
                Name  Flags
      pScalerContext  
      glyphCode       
      metrics         

  abstract long getGlyphImage(long, int);
    descriptor: (JI)J
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
                Name  Flags
      pScalerContext  
      glyphCode       

  abstract java.awt.geom.Rectangle2D$Float getGlyphOutlineBounds(long, int);
    descriptor: (JI)Ljava/awt/geom/Rectangle2D$Float;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
           Name  Flags
      pContext   
      glyphCode  

  abstract java.awt.geom.GeneralPath getGlyphOutline(long, int, float, float);
    descriptor: (JIFF)Ljava/awt/geom/GeneralPath;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
                Name  Flags
      pScalerContext  
      glyphCode       
      x               
      y               

  abstract java.awt.geom.GeneralPath getGlyphVectorOutline(long, int[], int, float, float);
    descriptor: (J[IIFF)Ljava/awt/geom/GeneralPath;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
                Name  Flags
      pScalerContext  
      glyphs          
      numGlyphs       
      x               
      y               

  public void dispose();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // sun.font.FontScaler this
         0: .line 174
            return
        end local 0 // sun.font.FontScaler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/font/FontScaler;

  public void disposeScaler();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // sun.font.FontScaler this
         0: .line 180
            return
        end local 0 // sun.font.FontScaler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/font/FontScaler;

  abstract int getNumGlyphs();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException

  abstract int getMissingGlyphCode();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException

  abstract int getGlyphCode(char);
    descriptor: (C)I
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
          Name  Flags
      charCode  

  abstract java.awt.geom.Point2D$Float getGlyphPoint(long, int, int);
    descriptor: (JII)Ljava/awt/geom/Point2D$Float;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException
    MethodParameters:
                Name  Flags
      pScalerContext  
      glyphCode       
      ptNumber        

  abstract long getUnitsPerEm();
    descriptor: ()J
    flags: (0x0400) ACC_ABSTRACT

  abstract long createScalerContext(double[], int, int, float, float);
    descriptor: ([DIIFF)J
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      matrix    
      aa        
      fm        
      boldness  
      italic    

  abstract void invalidateScalerContext(long);
    descriptor: (J)V
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
                 Name  Flags
      ppScalerContext  
}
SourceFile: "FontScaler.java"
InnerClasses:
  public Float = java.awt.geom.Point2D$Float of java.awt.geom.Point2D
  public Float = java.awt.geom.Rectangle2D$Float of java.awt.geom.Rectangle2D