public final class sun.font.SunLayoutEngine implements sun.font.GlyphLayout$LayoutEngine, sun.font.GlyphLayout$LayoutEngineFactory
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: sun.font.SunLayoutEngine
super_class: java.lang.Object
{
private sun.font.GlyphLayout$LayoutEngineKey key;
descriptor: Lsun/font/GlyphLayout$LayoutEngineKey;
flags: (0x0002) ACC_PRIVATE
private static sun.font.GlyphLayout$LayoutEngineFactory instance;
descriptor: Lsun/font/GlyphLayout$LayoutEngineFactory;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private java.lang.ref.SoftReference<java.util.concurrent.ConcurrentHashMap<sun.font.GlyphLayout$LayoutEngineKey, sun.font.GlyphLayout$LayoutEngine>> cacheref;
descriptor: Ljava/lang/ref/SoftReference;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/lang/ref/SoftReference<Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$LayoutEngineKey;Lsun/font/GlyphLayout$LayoutEngine;>;>;
static java.util.WeakHashMap<sun.font.Font2D, java.lang.Boolean> aatInfo;
descriptor: Ljava/util/WeakHashMap;
flags: (0x0008) ACC_STATIC
Signature: Ljava/util/WeakHashMap<Lsun/font/Font2D;Ljava/lang/Boolean;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: invokestatic sun.font.FontManagerNativeLibrary.load:()V
1: new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
putstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
return
LocalVariableTable:
Start End Slot Name Signature
public static sun.font.GlyphLayout$LayoutEngineFactory instance();
descriptor: ()Lsun/font/GlyphLayout$LayoutEngineFactory;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: getstatic sun.font.SunLayoutEngine.instance:Lsun/font/GlyphLayout$LayoutEngineFactory;
ifnonnull 2
1: new sun.font.SunLayoutEngine
dup
invokespecial sun.font.SunLayoutEngine.<init>:()V
putstatic sun.font.SunLayoutEngine.instance:Lsun/font/GlyphLayout$LayoutEngineFactory;
2: StackMap locals:
StackMap stack:
getstatic sun.font.SunLayoutEngine.instance:Lsun/font/GlyphLayout$LayoutEngineFactory;
areturn
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new java.lang.ref.SoftReference
dup
aconst_null
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/font/SunLayoutEngine;
public sun.font.GlyphLayout$LayoutEngine getEngine(sun.font.Font2D, int, int);
descriptor: (Lsun/font/Font2D;II)Lsun/font/GlyphLayout$LayoutEngine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
new sun.font.GlyphLayout$LayoutEngineKey
dup
aload 1
iload 2
iload 3
invokespecial sun.font.GlyphLayout$LayoutEngineKey.<init>:(Lsun/font/Font2D;II)V
invokevirtual sun.font.SunLayoutEngine.getEngine:(Lsun/font/GlyphLayout$LayoutEngineKey;)Lsun/font/GlyphLayout$LayoutEngine;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/font/SunLayoutEngine;
0 1 1 font Lsun/font/Font2D;
0 1 2 script I
0 1 3 lang I
MethodParameters:
Name Flags
font
script
lang
public sun.font.GlyphLayout$LayoutEngine getEngine(sun.font.GlyphLayout$LayoutEngineKey);
descriptor: (Lsun/font/GlyphLayout$LayoutEngineKey;)Lsun/font/GlyphLayout$LayoutEngine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.util.concurrent.ConcurrentHashMap
astore 2
start local 2 1: aload 2
ifnonnull 4
2: new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
astore 2
3: aload 0
new java.lang.ref.SoftReference
dup
aload 2
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
4: StackMap locals: java.util.concurrent.ConcurrentHashMap
StackMap stack:
aload 2
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.font.GlyphLayout$LayoutEngine
astore 3
start local 3 5: aload 3
ifnonnull 9
6: aload 1
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.copy:()Lsun/font/GlyphLayout$LayoutEngineKey;
astore 4
start local 4 7: new sun.font.SunLayoutEngine
dup
aload 4
invokespecial sun.font.SunLayoutEngine.<init>:(Lsun/font/GlyphLayout$LayoutEngineKey;)V
astore 3
8: aload 2
aload 4
aload 3
invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 9: StackMap locals: sun.font.GlyphLayout$LayoutEngine
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/font/SunLayoutEngine;
0 10 1 key Lsun/font/GlyphLayout$LayoutEngineKey;
1 10 2 cache Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$LayoutEngineKey;Lsun/font/GlyphLayout$LayoutEngine;>;
5 10 3 e Lsun/font/GlyphLayout$LayoutEngine;
7 9 4 copy Lsun/font/GlyphLayout$LayoutEngineKey;
MethodParameters:
Name Flags
key
private void <init>(sun.font.GlyphLayout$LayoutEngineKey);
descriptor: (Lsun/font/GlyphLayout$LayoutEngineKey;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new java.lang.ref.SoftReference
dup
aconst_null
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putfield sun.font.SunLayoutEngine.cacheref:Ljava/lang/ref/SoftReference;
3: aload 0
aload 1
putfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/font/SunLayoutEngine;
0 5 1 key Lsun/font/GlyphLayout$LayoutEngineKey;
MethodParameters:
Name Flags
key
private boolean isAAT(sun.font.Font2D);
descriptor: (Lsun/font/Font2D;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
dup
astore 3
monitorenter
1: getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
aload 1
invokevirtual java.util.WeakHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Boolean
astore 2
start local 2 2: aload 3
monitorexit
3: goto 6
end local 2 StackMap locals: sun.font.SunLayoutEngine sun.font.Font2D top java.util.WeakHashMap
StackMap stack: java.lang.Throwable
4: aload 3
monitorexit
5: athrow
start local 2 6: StackMap locals: sun.font.SunLayoutEngine sun.font.Font2D java.lang.Boolean
StackMap stack:
aload 2
ifnull 8
7: aload 2
invokevirtual java.lang.Boolean.booleanValue:()Z
ireturn
8: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 9: aload 1
instanceof sun.font.TrueTypeFont
ifeq 17
10: aload 1
checkcast sun.font.TrueTypeFont
astore 4
start local 4 11: aload 4
ldc 1836020344
invokevirtual sun.font.TrueTypeFont.getDirectoryEntry:(I)Lsun/font/TrueTypeFont$DirectoryEntry;
ifnonnull 14
12: aload 4
ldc 1836020340
invokevirtual sun.font.TrueTypeFont.getDirectoryEntry:(I)Lsun/font/TrueTypeFont$DirectoryEntry;
ifnonnull 14
13: iconst_0
goto 15
StackMap locals: int sun.font.TrueTypeFont
StackMap stack:
14: iconst_1
StackMap locals:
StackMap stack: int
15: istore 3
end local 4 16: goto 24
StackMap locals:
StackMap stack:
17: aload 1
instanceof sun.font.PhysicalFont
ifeq 24
18: aload 1
checkcast sun.font.PhysicalFont
astore 4
start local 4 19: aload 4
ldc 1836020344
invokevirtual sun.font.PhysicalFont.getTableBytes:(I)[B
ifnonnull 22
20: aload 4
ldc 1836020340
invokevirtual sun.font.PhysicalFont.getTableBytes:(I)[B
ifnonnull 22
21: iconst_0
goto 23
StackMap locals: sun.font.PhysicalFont
StackMap stack:
22: iconst_1
StackMap locals:
StackMap stack: int
23: istore 3
end local 4 24: StackMap locals:
StackMap stack:
getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
dup
astore 4
monitorenter
25: getstatic sun.font.SunLayoutEngine.aatInfo:Ljava/util/WeakHashMap;
aload 1
iload 3
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.util.WeakHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
26: aload 4
monitorexit
27: goto 30
StackMap locals: sun.font.SunLayoutEngine sun.font.Font2D java.lang.Boolean int java.util.WeakHashMap
StackMap stack: java.lang.Throwable
28: aload 4
monitorexit
29: athrow
30: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lsun/font/SunLayoutEngine;
0 31 1 font Lsun/font/Font2D;
2 4 2 aatObj Ljava/lang/Boolean;
6 31 2 aatObj Ljava/lang/Boolean;
9 31 3 aat Z
11 16 4 ttf Lsun/font/TrueTypeFont;
19 24 4 pf Lsun/font/PhysicalFont;
Exception table:
from to target type
1 3 4 any
4 5 4 any
25 27 28 any
28 29 28 any
MethodParameters:
Name Flags
font
public void layout(sun.font.FontStrikeDesc, float[], float, int, int, sun.font.TextRecord, int, java.awt.geom.Point2D$Float, sun.font.GlyphLayout$GVData);
descriptor: (Lsun/font/FontStrikeDesc;[FFIILsun/font/TextRecord;ILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=20, locals=18, args_size=10
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 start local 9 0: aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.font:()Lsun/font/Font2D;
astore 10
start local 10 1: aload 10
aload 1
invokevirtual sun.font.Font2D.getStrike:(Lsun/font/FontStrikeDesc;)Lsun/font/FontStrike;
astore 11
start local 11 2: aload 10
invokevirtual sun.font.Font2D.getLayoutTableCache:()J
lstore 12
start local 12 3: aload 10
invokevirtual sun.font.Font2D.getPlatformNativeFontPtr:()J
lstore 14
start local 14 4: lconst_0
lstore 16
start local 16 5: aload 10
instanceof sun.font.FileFont
ifeq 7
6: aload 10
checkcast sun.font.FileFont
invokevirtual sun.font.FileFont.getScaler:()Lsun/font/FontScaler;
getfield sun.font.FontScaler.nativeScaler:J
lstore 16
7: StackMap locals: sun.font.SunLayoutEngine sun.font.FontStrikeDesc float[] float int int sun.font.TextRecord int java.awt.geom.Point2D$Float sun.font.GlyphLayout$GVData sun.font.Font2D sun.font.FontStrike long long long
StackMap stack:
aload 10
aload 11
fload 3
aload 2
lload 16
lload 14
8: lload 12
aload 0
aload 10
invokevirtual sun.font.SunLayoutEngine.isAAT:(Lsun/font/Font2D;)Z
9: aload 6
getfield sun.font.TextRecord.text:[C
aload 9
aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.script:()I
10: aload 6
getfield sun.font.TextRecord.start:I
aload 6
getfield sun.font.TextRecord.limit:I
iload 5
aload 8
11: iload 7
iload 4
12: invokestatic sun.font.SunLayoutEngine.shape:(Lsun/font/Font2D;Lsun/font/FontStrike;F[FJJJZ[CLsun/font/GlyphLayout$GVData;IIIILjava/awt/geom/Point2D$Float;II)Z
pop
13: return
end local 16 end local 14 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/font/SunLayoutEngine;
0 14 1 desc Lsun/font/FontStrikeDesc;
0 14 2 mat [F
0 14 3 ptSize F
0 14 4 gmask I
0 14 5 baseIndex I
0 14 6 tr Lsun/font/TextRecord;
0 14 7 typo_flags I
0 14 8 pt Ljava/awt/geom/Point2D$Float;
0 14 9 data Lsun/font/GlyphLayout$GVData;
1 14 10 font Lsun/font/Font2D;
2 14 11 strike Lsun/font/FontStrike;
3 14 12 layoutTables J
4 14 14 pNativeFont J
5 14 16 pScaler J
MethodParameters:
Name Flags
desc
mat
ptSize
gmask
baseIndex
tr
typo_flags
pt
data
private static native boolean shape(sun.font.Font2D, sun.font.FontStrike, float, float[], long, long, long, boolean, char[], sun.font.GlyphLayout$GVData, int, int, int, int, java.awt.geom.Point2D$Float, int, int);
descriptor: (Lsun/font/Font2D;Lsun/font/FontStrike;F[FJJJZ[CLsun/font/GlyphLayout$GVData;IIIILjava/awt/geom/Point2D$Float;II)Z
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
font
strike
ptSize
mat
pscaler
pNativeFont
layoutTables
aat
chars
data
script
offset
limit
baseIndex
pt
typo_flags
slot
}
SourceFile: "SunLayoutEngine.java"
InnerClasses:
public Float = java.awt.geom.Point2D$Float of java.awt.geom.Point2D
public final GVData = sun.font.GlyphLayout$GVData of sun.font.GlyphLayout
public abstract LayoutEngine = sun.font.GlyphLayout$LayoutEngine of sun.font.GlyphLayout
public abstract LayoutEngineFactory = sun.font.GlyphLayout$LayoutEngineFactory of sun.font.GlyphLayout
public final LayoutEngineKey = sun.font.GlyphLayout$LayoutEngineKey of sun.font.GlyphLayout
DirectoryEntry = sun.font.TrueTypeFont$DirectoryEntry of sun.font.TrueTypeFont