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

  private static java.lang.reflect.Constructor<sun.font.FontScaler> scalerConstructor;
    descriptor: Ljava/lang/reflect/Constructor;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/lang/reflect/Constructor<Lsun/font/FontScaler;>;

  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=4, locals=2, args_size=0
         0: .line 84
            aconst_null
            putstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
         1: .line 85
            aconst_null
            putstatic sun.font.FontScaler.scalerConstructor:Ljava/lang/reflect/Constructor;
         2: .line 92
            aconst_null
            astore 0 /* scalerClass */
        start local 0 // java.lang.Class scalerClass
         3: .line 93
            iconst_4
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lsun/font/Font2D;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_2
         4: .line 94
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_3
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
         5: .line 93
            astore 1 /* arglst */
        start local 1 // java.lang.Class[] arglst
         6: .line 97
            getstatic sun.font.FontUtilities.isOpenJDK:Z
            ifeq 9
         7: .line 98
            ldc "sun.font.FreetypeFontScaler"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 0 /* scalerClass */
         8: .line 99
            goto 13
         9: .line 100
      StackMap locals: java.lang.Class java.lang.Class[]
      StackMap stack:
            ldc "sun.font.T2KFontScaler"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 0 /* scalerClass */
        10: .line 102
            goto 13
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
        11: pop
        12: .line 103
            ldc Lsun/font/NullFontScaler;
            astore 0 /* scalerClass */
        13: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* scalerClass */
            aload 1 /* arglst */
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            putstatic sun.font.FontScaler.scalerConstructor:Ljava/lang/reflect/Constructor;
        14: .line 109
            goto 16
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
        15: pop
        end local 1 // java.lang.Class[] arglst
        end local 0 // java.lang.Class scalerClass
        16: .line 112
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            3   16     0  scalerClass  Ljava/lang/Class;
            6   16     1       arglst  [Ljava/lang/Class;
      Exception table:
        from    to  target  type
           6    10      11  Class java.lang.ClassNotFoundException
          13    14      15  Class java.lang.NoSuchMethodException

  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 82
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 156
            aload 0 /* this */
            aconst_null
            putfield sun.font.FontScaler.font:Ljava/lang/ref/WeakReference;
         2: .line 157
            aload 0 /* this */
            lconst_0
            putfield sun.font.FontScaler.nativeScaler:J
         3: .line 159
            aload 0 /* this */
            iconst_0
            putfield sun.font.FontScaler.disposed:Z
         4: .line 82
            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=4, 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 123
            aconst_null
            astore 4 /* scaler */
        start local 4 // sun.font.FontScaler scaler
         1: .line 126
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* font */
            aastore
            dup
            iconst_1
            iload 1 /* indexInCollection */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
         2: .line 127
            iload 2 /* supportsCJK */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_3
            iload 3 /* filesize */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         3: .line 126
            astore 5 /* args */
        start local 5 // java.lang.Object[] args
         4: .line 128
            getstatic sun.font.FontScaler.scalerConstructor:Ljava/lang/reflect/Constructor;
            aload 5 /* args */
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.font.FontScaler
            astore 4 /* scaler */
         5: .line 129
            aload 0 /* font */
            aload 4 /* scaler */
            invokestatic sun.java2d.Disposer.addObjectRecord:(Ljava/lang/Object;Lsun/java2d/DisposerRecord;)V
        end local 5 // java.lang.Object[] args
         6: .line 130
            goto 11
      StackMap locals: sun.font.Font2D int int int sun.font.FontScaler
      StackMap stack: java.lang.Throwable
         7: pop
         8: .line 131
            getstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
            astore 4 /* scaler */
         9: .line 136
            invokestatic sun.font.FontManagerFactory.getInstance:()Lsun/font/FontManager;
            astore 5 /* fm */
        start local 5 // sun.font.FontManager fm
        10: .line 137
            aload 5 /* fm */
            aload 0 /* font */
            invokeinterface sun.font.FontManager.deRegisterBadFont:(Lsun/font/Font2D;)V
        end local 5 // sun.font.FontManager fm
        11: .line 139
      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   12     0               font  Lsun/font/Font2D;
            0   12     1  indexInCollection  I
            0   12     2        supportsCJK  Z
            0   12     3           filesize  I
            1   12     4             scaler  Lsun/font/FontScaler;
            4    6     5               args  [Ljava/lang/Object;
           10   11     5                 fm  Lsun/font/FontManager;
      Exception table:
        from    to  target  type
           1     6       7  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 150
            getstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
            ifnonnull 2
         1: .line 151
            new sun.font.NullFontScaler
            dup
            invokespecial sun.font.NullFontScaler.<init>:()V
            putstatic sun.font.FontScaler.nullScaler:Lsun/font/FontScaler;
         2: .line 153
      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 199
            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 205
            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 long getLayoutTableCache();
    descriptor: ()J
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws sun.font.FontScalerException

  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, boolean);
    descriptor: ([DIIFFZ)J
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
                Name  Flags
      matrix          
      aa              
      fm              
      boldness        
      italic          
      disableHinting  

  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