public final class sun.font.FontDesignMetrics extends java.awt.FontMetrics
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: sun.font.FontDesignMetrics
super_class: java.awt.FontMetrics
{
static final long serialVersionUID;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 4480069578560887773
private static final float UNKNOWN_WIDTH;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -1.0
private static final int CURRENT_VERSION;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static float roundingUpValue;
descriptor: F
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private java.awt.Font font;
descriptor: Ljava/awt/Font;
flags: (0x0002) ACC_PRIVATE
private float ascent;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float descent;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float leading;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float maxAdvance;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private double[] matrix;
descriptor: [D
flags: (0x0002) ACC_PRIVATE
private int[] cache;
descriptor: [I
flags: (0x0002) ACC_PRIVATE
private int serVersion;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean isAntiAliased;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean usesFractionalMetrics;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.awt.geom.AffineTransform frcTx;
descriptor: Ljava/awt/geom/AffineTransform;
flags: (0x0002) ACC_PRIVATE
private transient float[] advCache;
descriptor: [F
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private transient int height;
descriptor: I
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private transient java.awt.font.FontRenderContext frc;
descriptor: Ljava/awt/font/FontRenderContext;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private transient double[] devmatrix;
descriptor: [D
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private transient sun.font.FontStrike fontStrike;
descriptor: Lsun/font/FontStrike;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private static java.awt.font.FontRenderContext DEFAULT_FRC;
descriptor: Ljava/awt/font/FontRenderContext;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final java.util.concurrent.ConcurrentHashMap<java.lang.Object, sun.font.FontDesignMetrics$KeyReference> metricsCache;
descriptor: Ljava/util/concurrent/ConcurrentHashMap;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Object;Lsun/font/FontDesignMetrics$KeyReference;>;
private static final int MAXRECENT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 5
private static final sun.font.FontDesignMetrics[] recentMetrics;
descriptor: [Lsun/font/FontDesignMetrics;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static int recentIndex;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc 0.95
putstatic sun.font.FontDesignMetrics.roundingUpValue:F
1: aconst_null
putstatic sun.font.FontDesignMetrics.DEFAULT_FRC:Ljava/awt/font/FontRenderContext;
2: new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putstatic sun.font.FontDesignMetrics.metricsCache:Ljava/util/concurrent/ConcurrentHashMap;
3: iconst_5
anewarray sun.font.FontDesignMetrics
putstatic sun.font.FontDesignMetrics.recentMetrics:[Lsun/font/FontDesignMetrics;
4: iconst_0
putstatic sun.font.FontDesignMetrics.recentIndex:I
return
LocalVariableTable:
Start End Slot Name Signature
private static java.awt.font.FontRenderContext getDefaultFrc();
descriptor: ()Ljava/awt/font/FontRenderContext;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=1, args_size=0
0: getstatic sun.font.FontDesignMetrics.DEFAULT_FRC:Ljava/awt/font/FontRenderContext;
ifnonnull 10
1: invokestatic java.awt.GraphicsEnvironment.isHeadless:()Z
ifeq 4
2: new java.awt.geom.AffineTransform
dup
invokespecial java.awt.geom.AffineTransform.<init>:()V
astore 0
start local 0 3: goto 9
end local 0 4: StackMap locals:
StackMap stack:
invokestatic java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment:()Ljava/awt/GraphicsEnvironment;
5: invokevirtual java.awt.GraphicsEnvironment.getDefaultScreenDevice:()Ljava/awt/GraphicsDevice;
6: invokevirtual java.awt.GraphicsDevice.getDefaultConfiguration:()Ljava/awt/GraphicsConfiguration;
7: invokevirtual java.awt.GraphicsConfiguration.getDefaultTransform:()Ljava/awt/geom/AffineTransform;
8: astore 0
start local 0 9: StackMap locals: java.awt.geom.AffineTransform
StackMap stack:
new java.awt.font.FontRenderContext
dup
aload 0
iconst_0
iconst_0
invokespecial java.awt.font.FontRenderContext.<init>:(Ljava/awt/geom/AffineTransform;ZZ)V
putstatic sun.font.FontDesignMetrics.DEFAULT_FRC:Ljava/awt/font/FontRenderContext;
end local 0 10: StackMap locals:
StackMap stack:
getstatic sun.font.FontDesignMetrics.DEFAULT_FRC:Ljava/awt/font/FontRenderContext;
areturn
LocalVariableTable:
Start End Slot Name Signature
3 4 0 tx Ljava/awt/geom/AffineTransform;
9 10 0 tx Ljava/awt/geom/AffineTransform;
public static sun.font.FontDesignMetrics getMetrics(java.awt.Font);
descriptor: (Ljava/awt/Font;)Lsun/font/FontDesignMetrics;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokestatic sun.font.FontDesignMetrics.getDefaultFrc:()Ljava/awt/font/FontRenderContext;
invokestatic sun.font.FontDesignMetrics.getMetrics:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)Lsun/font/FontDesignMetrics;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 font Ljava/awt/Font;
MethodParameters:
Name Flags
font
public static sun.font.FontDesignMetrics getMetrics(java.awt.Font, java.awt.font.FontRenderContext);
descriptor: (Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)Lsun/font/FontDesignMetrics;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 start local 1 0: invokestatic sun.font.FontManager.maybeUsingAlternateCompositeFonts:()Z
ifeq 3
1: aload 0
invokestatic sun.font.FontManager.getFont2D:(Ljava/awt/Font;)Lsun/font/Font2D;
instanceof sun.font.CompositeFont
ifeq 3
2: new sun.font.FontDesignMetrics
dup
aload 0
aload 1
invokespecial sun.font.FontDesignMetrics.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
areturn
3: StackMap locals:
StackMap stack:
aconst_null
astore 2
start local 2 4: aload 1
invokestatic sun.font.FontDesignMetrics.getDefaultFrc:()Ljava/awt/font/FontRenderContext;
invokevirtual java.awt.font.FontRenderContext.equals:(Ljava/awt/font/FontRenderContext;)Z
istore 4
start local 4 5: iload 4
ifeq 8
6: getstatic sun.font.FontDesignMetrics.metricsCache:Ljava/util/concurrent/ConcurrentHashMap;
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.font.FontDesignMetrics$KeyReference
astore 3
start local 3 7: goto 15
end local 3 8: StackMap locals: java.awt.Font java.awt.font.FontRenderContext sun.font.FontDesignMetrics top int
StackMap stack:
ldc Lsun/font/FontDesignMetrics$MetricsKey;
dup
astore 5
monitorenter
9: getstatic sun.font.FontDesignMetrics$MetricsKey.key:Lsun/font/FontDesignMetrics$MetricsKey;
aload 0
aload 1
invokevirtual sun.font.FontDesignMetrics$MetricsKey.init:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
10: getstatic sun.font.FontDesignMetrics.metricsCache:Ljava/util/concurrent/ConcurrentHashMap;
getstatic sun.font.FontDesignMetrics$MetricsKey.key:Lsun/font/FontDesignMetrics$MetricsKey;
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.font.FontDesignMetrics$KeyReference
astore 3
start local 3 11: aload 5
monitorexit
12: goto 15
end local 3 StackMap locals: java.awt.Font java.awt.font.FontRenderContext sun.font.FontDesignMetrics top int java.lang.Class
StackMap stack: java.lang.Throwable
13: aload 5
monitorexit
14: athrow
start local 3 15: StackMap locals: java.awt.Font java.awt.font.FontRenderContext sun.font.FontDesignMetrics sun.font.FontDesignMetrics$KeyReference int
StackMap stack:
aload 3
ifnull 17
16: aload 3
invokevirtual sun.font.FontDesignMetrics$KeyReference.get:()Ljava/lang/Object;
checkcast sun.font.FontDesignMetrics
astore 2
17: StackMap locals:
StackMap stack:
aload 2
ifnonnull 24
18: new sun.font.FontDesignMetrics
dup
aload 0
aload 1
invokespecial sun.font.FontDesignMetrics.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
astore 2
19: iload 4
ifeq 22
20: getstatic sun.font.FontDesignMetrics.metricsCache:Ljava/util/concurrent/ConcurrentHashMap;
aload 0
new sun.font.FontDesignMetrics$KeyReference
dup
aload 0
aload 2
invokespecial sun.font.FontDesignMetrics$KeyReference.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
21: goto 24
22: StackMap locals:
StackMap stack:
new sun.font.FontDesignMetrics$MetricsKey
dup
aload 0
aload 1
invokespecial sun.font.FontDesignMetrics$MetricsKey.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
astore 5
start local 5 23: getstatic sun.font.FontDesignMetrics.metricsCache:Ljava/util/concurrent/ConcurrentHashMap;
aload 5
new sun.font.FontDesignMetrics$KeyReference
dup
aload 5
aload 2
invokespecial sun.font.FontDesignMetrics$KeyReference.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 5 24: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 25: goto 29
26: StackMap locals: int
StackMap stack:
getstatic sun.font.FontDesignMetrics.recentMetrics:[Lsun/font/FontDesignMetrics;
iload 5
aaload
aload 2
if_acmpne 28
27: aload 2
areturn
28: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
29: iload 5
getstatic sun.font.FontDesignMetrics.recentMetrics:[Lsun/font/FontDesignMetrics;
arraylength
if_icmplt 26
end local 5 30: getstatic sun.font.FontDesignMetrics.recentMetrics:[Lsun/font/FontDesignMetrics;
dup
astore 5
monitorenter
31: getstatic sun.font.FontDesignMetrics.recentMetrics:[Lsun/font/FontDesignMetrics;
getstatic sun.font.FontDesignMetrics.recentIndex:I
dup
iconst_1
iadd
putstatic sun.font.FontDesignMetrics.recentIndex:I
aload 2
aastore
32: getstatic sun.font.FontDesignMetrics.recentIndex:I
iconst_5
if_icmpne 34
33: iconst_0
putstatic sun.font.FontDesignMetrics.recentIndex:I
34: StackMap locals: java.awt.Font java.awt.font.FontRenderContext sun.font.FontDesignMetrics sun.font.FontDesignMetrics$KeyReference int sun.font.FontDesignMetrics[]
StackMap stack:
aload 5
monitorexit
35: goto 38
StackMap locals:
StackMap stack: java.lang.Throwable
36: aload 5
monitorexit
37: athrow
38: StackMap locals:
StackMap stack:
aload 2
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 39 0 font Ljava/awt/Font;
0 39 1 frc Ljava/awt/font/FontRenderContext;
4 39 2 m Lsun/font/FontDesignMetrics;
7 8 3 r Lsun/font/FontDesignMetrics$KeyReference;
11 13 3 r Lsun/font/FontDesignMetrics$KeyReference;
15 39 3 r Lsun/font/FontDesignMetrics$KeyReference;
5 39 4 usefontkey Z
23 24 5 newKey Lsun/font/FontDesignMetrics$MetricsKey;
25 30 5 i I
Exception table:
from to target type
9 12 13 any
13 14 13 any
31 35 36 any
36 37 36 any
MethodParameters:
Name Flags
font
frc
private void <init>(java.awt.Font);
descriptor: (Ljava/awt/Font;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokestatic sun.font.FontDesignMetrics.getDefaultFrc:()Ljava/awt/font/FontRenderContext;
invokespecial sun.font.FontDesignMetrics.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/font/FontDesignMetrics;
0 2 1 font Ljava/awt/Font;
MethodParameters:
Name Flags
font
private void <init>(java.awt.Font, java.awt.font.FontRenderContext);
descriptor: (Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokespecial java.awt.FontMetrics.<init>:(Ljava/awt/Font;)V
1: aload 0
iconst_0
putfield sun.font.FontDesignMetrics.serVersion:I
2: aload 0
iconst_m1
putfield sun.font.FontDesignMetrics.height:I
3: aload 0
aconst_null
putfield sun.font.FontDesignMetrics.devmatrix:[D
4: aload 0
aload 1
putfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
5: aload 0
aload 2
putfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
6: aload 0
aload 2
invokevirtual java.awt.font.FontRenderContext.isAntiAliased:()Z
putfield sun.font.FontDesignMetrics.isAntiAliased:Z
7: aload 0
aload 2
invokevirtual java.awt.font.FontRenderContext.usesFractionalMetrics:()Z
putfield sun.font.FontDesignMetrics.usesFractionalMetrics:Z
8: aload 0
aload 2
invokevirtual java.awt.font.FontRenderContext.getTransform:()Ljava/awt/geom/AffineTransform;
putfield sun.font.FontDesignMetrics.frcTx:Ljava/awt/geom/AffineTransform;
9: aload 0
iconst_4
newarray 7
putfield sun.font.FontDesignMetrics.matrix:[D
10: aload 0
invokevirtual sun.font.FontDesignMetrics.initMatrixAndMetrics:()V
11: aload 0
invokevirtual sun.font.FontDesignMetrics.initAdvCache:()V
12: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/font/FontDesignMetrics;
0 13 1 font Ljava/awt/Font;
0 13 2 frc Ljava/awt/font/FontRenderContext;
MethodParameters:
Name Flags
font
frc
private void initMatrixAndMetrics();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
invokestatic sun.font.FontManager.getFont2D:(Ljava/awt/Font;)Lsun/font/Font2D;
astore 1
start local 1 1: aload 0
aload 1
aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokevirtual sun.font.Font2D.getStrike:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)Lsun/font/FontStrike;
putfield sun.font.FontDesignMetrics.fontStrike:Lsun/font/FontStrike;
2: aload 0
getfield sun.font.FontDesignMetrics.fontStrike:Lsun/font/FontStrike;
invokevirtual sun.font.FontStrike.getFontMetrics:()Lsun/font/StrikeMetrics;
astore 2
start local 2 3: aload 0
aload 2
invokevirtual sun.font.StrikeMetrics.getAscent:()F
putfield sun.font.FontDesignMetrics.ascent:F
4: aload 0
aload 2
invokevirtual sun.font.StrikeMetrics.getDescent:()F
putfield sun.font.FontDesignMetrics.descent:F
5: aload 0
aload 2
invokevirtual sun.font.StrikeMetrics.getLeading:()F
putfield sun.font.FontDesignMetrics.leading:F
6: aload 0
aload 2
invokevirtual sun.font.StrikeMetrics.getMaxAdvance:()F
putfield sun.font.FontDesignMetrics.maxAdvance:F
7: aload 0
iconst_4
newarray 7
putfield sun.font.FontDesignMetrics.devmatrix:[D
8: aload 0
getfield sun.font.FontDesignMetrics.frcTx:Ljava/awt/geom/AffineTransform;
aload 0
getfield sun.font.FontDesignMetrics.devmatrix:[D
invokevirtual java.awt.geom.AffineTransform.getMatrix:([D)V
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/font/FontDesignMetrics;
1 10 1 font2D Lsun/font/Font2D;
3 10 2 metrics Lsun/font/StrikeMetrics;
private void initAdvCache();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
sipush 256
newarray 6
putfield sun.font.FontDesignMetrics.advCache:[F
1: iconst_0
istore 1
start local 1 2: goto 5
3: StackMap locals: int
StackMap stack:
aload 0
getfield sun.font.FontDesignMetrics.advCache:[F
iload 1
ldc -1.0
fastore
4: iinc 1 1
StackMap locals:
StackMap stack:
5: iload 1
sipush 256
if_icmplt 3
end local 1 6: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/font/FontDesignMetrics;
2 6 1 i I
private void readObject(java.io.ObjectInputStream);
descriptor: (Ljava/io/ObjectInputStream;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
1: aload 0
getfield sun.font.FontDesignMetrics.serVersion:I
iconst_1
if_icmpeq 7
2: aload 0
invokestatic sun.font.FontDesignMetrics.getDefaultFrc:()Ljava/awt/font/FontRenderContext;
putfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
3: aload 0
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokevirtual java.awt.font.FontRenderContext.isAntiAliased:()Z
putfield sun.font.FontDesignMetrics.isAntiAliased:Z
4: aload 0
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokevirtual java.awt.font.FontRenderContext.usesFractionalMetrics:()Z
putfield sun.font.FontDesignMetrics.usesFractionalMetrics:Z
5: aload 0
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokevirtual java.awt.font.FontRenderContext.getTransform:()Ljava/awt/geom/AffineTransform;
putfield sun.font.FontDesignMetrics.frcTx:Ljava/awt/geom/AffineTransform;
6: goto 8
7: StackMap locals:
StackMap stack:
aload 0
new java.awt.font.FontRenderContext
dup
aload 0
getfield sun.font.FontDesignMetrics.frcTx:Ljava/awt/geom/AffineTransform;
aload 0
getfield sun.font.FontDesignMetrics.isAntiAliased:Z
aload 0
getfield sun.font.FontDesignMetrics.usesFractionalMetrics:Z
invokespecial java.awt.font.FontRenderContext.<init>:(Ljava/awt/geom/AffineTransform;ZZ)V
putfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
8: StackMap locals:
StackMap stack:
aload 0
iconst_m1
putfield sun.font.FontDesignMetrics.height:I
9: aload 0
aconst_null
putfield sun.font.FontDesignMetrics.cache:[I
10: aload 0
invokevirtual sun.font.FontDesignMetrics.initMatrixAndMetrics:()V
11: aload 0
invokevirtual sun.font.FontDesignMetrics.initAdvCache:()V
12: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/font/FontDesignMetrics;
0 13 1 in Ljava/io/ObjectInputStream;
Exceptions:
throws java.io.IOException, java.lang.ClassNotFoundException
MethodParameters:
Name Flags
in
private void writeObject(java.io.ObjectOutputStream);
descriptor: (Ljava/io/ObjectOutputStream;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
sipush 256
newarray 10
putfield sun.font.FontDesignMetrics.cache:[I
1: iconst_0
istore 2
start local 2 2: goto 5
3: StackMap locals: int
StackMap stack:
aload 0
getfield sun.font.FontDesignMetrics.cache:[I
iload 2
iconst_m1
iastore
4: iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
sipush 256
if_icmplt 3
end local 2 6: aload 0
iconst_1
putfield sun.font.FontDesignMetrics.serVersion:I
7: aload 1
invokevirtual java.io.ObjectOutputStream.defaultWriteObject:()V
8: aload 0
aconst_null
putfield sun.font.FontDesignMetrics.cache:[I
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/font/FontDesignMetrics;
0 10 1 out Ljava/io/ObjectOutputStream;
2 6 2 i I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
out
private float handleCharWidth(int);
descriptor: (I)F
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.font.FontDesignMetrics.fontStrike:Lsun/font/FontStrike;
iload 1
invokevirtual sun.font.FontStrike.getCodePointAdvance:(I)F
freturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/font/FontDesignMetrics;
0 1 1 ch I
MethodParameters:
Name Flags
ch
private float getLatinCharWidth(char);
descriptor: (C)F
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.font.FontDesignMetrics.advCache:[F
iload 1
faload
fstore 2
start local 2 1: fload 2
ldc -1.0
fcmpl
ifne 4
2: aload 0
iload 1
invokevirtual sun.font.FontDesignMetrics.handleCharWidth:(I)F
fstore 2
3: aload 0
getfield sun.font.FontDesignMetrics.advCache:[F
iload 1
fload 2
fastore
4: StackMap locals: float
StackMap stack:
fload 2
freturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/font/FontDesignMetrics;
0 5 1 ch C
1 5 2 w F
MethodParameters:
Name Flags
ch
public java.awt.font.FontRenderContext getFontRenderContext();
descriptor: ()Ljava/awt/font/FontRenderContext;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/font/FontDesignMetrics;
public int charWidth(char);
descriptor: (C)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: iload 1
sipush 256
if_icmpge 3
1: aload 0
iload 1
invokevirtual sun.font.FontDesignMetrics.getLatinCharWidth:(C)F
fstore 2
start local 2 2: goto 4
end local 2 3: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual sun.font.FontDesignMetrics.handleCharWidth:(I)F
fstore 2
start local 2 4: StackMap locals: float
StackMap stack:
ldc 0.5
fload 2
f2d
dadd
d2i
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/font/FontDesignMetrics;
0 5 1 ch C
2 3 2 w F
4 5 2 w F
MethodParameters:
Name Flags
ch
public int charWidth(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: iload 1
invokestatic java.lang.Character.isValidCodePoint:(I)Z
ifne 2
1: ldc 65535
istore 1
2: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual sun.font.FontDesignMetrics.handleCharWidth:(I)F
fstore 2
start local 2 3: ldc 0.5
fload 2
f2d
dadd
d2i
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/font/FontDesignMetrics;
0 4 1 ch I
3 4 2 w F
MethodParameters:
Name Flags
ch
public int stringWidth(java.lang.String);
descriptor: (Ljava/lang/String;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: fconst_0
fstore 2
start local 2 1: aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
invokevirtual java.awt.Font.hasLayoutAttributes:()Z
ifeq 8
2: aload 1
ifnonnull 4
3: new java.lang.NullPointerException
dup
ldc "str is null"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: float
StackMap stack:
aload 1
invokevirtual java.lang.String.length:()I
ifne 6
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
new java.awt.font.TextLayout
dup
aload 1
aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokespecial java.awt.font.TextLayout.<init>:(Ljava/lang/String;Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
invokevirtual java.awt.font.TextLayout.getAdvance:()F
fstore 2
7: goto 21
8: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.String.length:()I
istore 3
start local 3 9: iconst_0
istore 4
start local 4 10: goto 20
11: StackMap locals: int int
StackMap stack:
aload 1
iload 4
invokevirtual java.lang.String.charAt:(I)C
istore 5
start local 5 12: iload 5
sipush 256
if_icmpge 15
13: fload 2
aload 0
iload 5
invokevirtual sun.font.FontDesignMetrics.getLatinCharWidth:(C)F
fadd
fstore 2
14: goto 19
StackMap locals: int
StackMap stack:
15: iload 5
invokestatic sun.font.FontManager.isNonSimpleChar:(C)Z
ifeq 18
16: new java.awt.font.TextLayout
dup
aload 1
aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokespecial java.awt.font.TextLayout.<init>:(Ljava/lang/String;Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
invokevirtual java.awt.font.TextLayout.getAdvance:()F
fstore 2
17: goto 21
18: StackMap locals:
StackMap stack:
fload 2
aload 0
iload 5
invokevirtual sun.font.FontDesignMetrics.handleCharWidth:(I)F
fadd
fstore 2
end local 5 19: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
20: iload 4
iload 3
if_icmplt 11
end local 4 end local 3 21: StackMap locals:
StackMap stack:
ldc 0.5
fload 2
f2d
dadd
d2i
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lsun/font/FontDesignMetrics;
0 22 1 str Ljava/lang/String;
1 22 2 width F
9 21 3 length I
10 21 4 i I
12 19 5 ch C
MethodParameters:
Name Flags
str
public int charsWidth(char[], int, int);
descriptor: ([CII)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: fconst_0
fstore 4
start local 4 1: aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
invokevirtual java.awt.Font.hasLayoutAttributes:()Z
ifeq 7
2: iload 3
ifne 4
3: iconst_0
ireturn
4: StackMap locals: float
StackMap stack:
new java.lang.String
dup
aload 1
iload 2
iload 3
invokespecial java.lang.String.<init>:([CII)V
astore 5
start local 5 5: new java.awt.font.TextLayout
dup
aload 5
aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokespecial java.awt.font.TextLayout.<init>:(Ljava/lang/String;Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
invokevirtual java.awt.font.TextLayout.getAdvance:()F
fstore 4
end local 5 6: goto 23
7: StackMap locals:
StackMap stack:
iload 3
ifge 9
8: new java.lang.IndexOutOfBoundsException
dup
new java.lang.StringBuilder
dup
ldc "len="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
iload 2
iload 3
iadd
istore 5
start local 5 10: iload 2
istore 6
start local 6 11: goto 22
12: StackMap locals: int int
StackMap stack:
aload 1
iload 6
caload
istore 7
start local 7 13: iload 7
sipush 256
if_icmpge 16
14: fload 4
aload 0
iload 7
invokevirtual sun.font.FontDesignMetrics.getLatinCharWidth:(C)F
fadd
fstore 4
15: goto 21
StackMap locals: int
StackMap stack:
16: iload 7
invokestatic sun.font.FontManager.isNonSimpleChar:(C)Z
ifeq 20
17: new java.lang.String
dup
aload 1
iload 2
iload 3
invokespecial java.lang.String.<init>:([CII)V
astore 8
start local 8 18: new java.awt.font.TextLayout
dup
aload 8
aload 0
getfield sun.font.FontDesignMetrics.font:Ljava/awt/Font;
aload 0
getfield sun.font.FontDesignMetrics.frc:Ljava/awt/font/FontRenderContext;
invokespecial java.awt.font.TextLayout.<init>:(Ljava/lang/String;Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
invokevirtual java.awt.font.TextLayout.getAdvance:()F
fstore 4
19: goto 23
end local 8 20: StackMap locals:
StackMap stack:
fload 4
aload 0
iload 7
invokevirtual sun.font.FontDesignMetrics.handleCharWidth:(I)F
fadd
fstore 4
end local 7 21: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
22: iload 6
iload 5
if_icmplt 12
end local 6 end local 5 23: StackMap locals:
StackMap stack:
ldc 0.5
fload 4
f2d
dadd
d2i
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lsun/font/FontDesignMetrics;
0 24 1 data [C
0 24 2 off I
0 24 3 len I
1 24 4 width F
5 6 5 str Ljava/lang/String;
10 23 5 limit I
11 23 6 i I
13 21 7 ch C
18 20 8 str Ljava/lang/String;
MethodParameters:
Name Flags
data
off
len
public int[] getWidths();
descriptor: ()[I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=1
start local 0 0: sipush 256
newarray 10
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: goto 8
3: StackMap locals: int[] int
StackMap stack:
aload 0
getfield sun.font.FontDesignMetrics.advCache:[F
iload 2
faload
fstore 3
start local 3 4: fload 3
ldc -1.0
fcmpl
ifne 6
5: aload 0
getfield sun.font.FontDesignMetrics.advCache:[F
iload 2
aload 0
iload 2
invokevirtual sun.font.FontDesignMetrics.handleCharWidth:(I)F
dup_x2
fastore
fstore 3
6: StackMap locals: float
StackMap stack:
aload 1
iload 2
ldc 0.5
fload 3
f2d
dadd
d2i
iastore
end local 3 7: iload 2
iconst_1
iadd
i2c
istore 2
StackMap locals:
StackMap stack:
8: iload 2
sipush 256
if_icmplt 3
end local 2 9: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/font/FontDesignMetrics;
1 10 1 widths [I
2 9 2 ch C
4 7 3 w F
public int getMaxAdvance();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: ldc 0.99
aload 0
getfield sun.font.FontDesignMetrics.maxAdvance:F
fadd
f2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/font/FontDesignMetrics;
public int getAscent();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic sun.font.FontDesignMetrics.roundingUpValue:F
aload 0
getfield sun.font.FontDesignMetrics.ascent:F
fadd
f2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/font/FontDesignMetrics;
public int getDescent();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic sun.font.FontDesignMetrics.roundingUpValue:F
aload 0
getfield sun.font.FontDesignMetrics.descent:F
fadd
f2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/font/FontDesignMetrics;
public int getLeading();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic sun.font.FontDesignMetrics.roundingUpValue:F
aload 0
getfield sun.font.FontDesignMetrics.descent:F
fadd
aload 0
getfield sun.font.FontDesignMetrics.leading:F
fadd
f2i
1: getstatic sun.font.FontDesignMetrics.roundingUpValue:F
aload 0
getfield sun.font.FontDesignMetrics.descent:F
fadd
f2i
2: isub
3: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/font/FontDesignMetrics;
public int getHeight();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.font.FontDesignMetrics.height:I
ifge 2
1: aload 0
aload 0
invokevirtual sun.font.FontDesignMetrics.getAscent:()I
getstatic sun.font.FontDesignMetrics.roundingUpValue:F
aload 0
getfield sun.font.FontDesignMetrics.descent:F
fadd
aload 0
getfield sun.font.FontDesignMetrics.leading:F
fadd
f2i
iadd
putfield sun.font.FontDesignMetrics.height:I
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.font.FontDesignMetrics.height:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/font/FontDesignMetrics;
}
SourceFile: "FontDesignMetrics.java"
NestMembers:
sun.font.FontDesignMetrics$KeyReference sun.font.FontDesignMetrics$MetricsKey
InnerClasses:
private KeyReference = sun.font.FontDesignMetrics$KeyReference of sun.font.FontDesignMetrics
private MetricsKey = sun.font.FontDesignMetrics$MetricsKey of sun.font.FontDesignMetrics