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 static final boolean useICU;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
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 void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=0
0: invokestatic sun.font.FontManagerNativeLibrary.load:()V
1: invokestatic sun.font.SunLayoutEngine.initGVIDs:()V
2: new sun.security.action.GetPropertyAction
dup
3: ldc "sun.font.layoutengine"
ldc ""
4: invokespecial sun.security.action.GetPropertyAction.<init>:(Ljava/lang/String;Ljava/lang/String;)V
5: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 0
start local 0 6: aload 0
ldc "icu"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
putstatic sun.font.SunLayoutEngine.useICU:Z
7: new sun.security.action.GetPropertyAction
dup
8: ldc "sun.font.layoutengine.verbose"
ldc ""
9: invokespecial sun.security.action.GetPropertyAction.<init>:(Ljava/lang/String;Ljava/lang/String;)V
10: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 11: ldc "true"
aload 1
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 15
12: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Using "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
getstatic sun.font.SunLayoutEngine.useICU:Z
ifeq 13
ldc "icu."
goto 14
StackMap locals: java.lang.String java.lang.String
StackMap stack: java.io.PrintStream java.lang.StringBuilder
13: ldc "harfbuzz."
StackMap locals: java.lang.String java.lang.String
StackMap stack: java.io.PrintStream java.lang.StringBuilder java.lang.String
14: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 1 end local 0 15: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
6 15 0 le Ljava/lang/String;
11 15 1 verbose Ljava/lang/String;
private static native void initGVIDs();
descriptor: ()V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
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=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
instanceof sun.font.TrueTypeFont
ifeq 6
1: aload 1
checkcast sun.font.TrueTypeFont
astore 2
start local 2 2: aload 2
ldc 1836020344
invokevirtual sun.font.TrueTypeFont.getDirectoryEntry:(I)Lsun/font/TrueTypeFont$DirectoryEntry;
ifnonnull 5
3: aload 2
ldc 1836020340
invokevirtual sun.font.TrueTypeFont.getDirectoryEntry:(I)Lsun/font/TrueTypeFont$DirectoryEntry;
ifnonnull 5
4: iconst_0
ireturn
StackMap locals: sun.font.TrueTypeFont
StackMap stack:
5: iconst_1
ireturn
end local 2 6: StackMap locals:
StackMap stack:
aload 1
instanceof sun.font.PhysicalFont
ifeq 12
7: aload 1
checkcast sun.font.PhysicalFont
astore 2
start local 2 8: aload 2
ldc 1836020344
invokevirtual sun.font.PhysicalFont.getTableBytes:(I)[B
ifnonnull 11
9: aload 2
ldc 1836020340
invokevirtual sun.font.PhysicalFont.getTableBytes:(I)[B
ifnonnull 11
10: iconst_0
ireturn
StackMap locals: sun.font.PhysicalFont
StackMap stack:
11: iconst_1
ireturn
end local 2 12: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/font/SunLayoutEngine;
0 13 1 font Lsun/font/Font2D;
2 6 2 ttf Lsun/font/TrueTypeFont;
8 12 2 pf Lsun/font/PhysicalFont;
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=19, 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: getstatic sun.font.SunLayoutEngine.useICU:Z
ifeq 10
4: aload 10
aload 11
aload 2
iload 4
iload 5
5: aload 6
getfield sun.font.TextRecord.text:[C
aload 6
getfield sun.font.TextRecord.start:I
aload 6
getfield sun.font.TextRecord.limit:I
aload 6
getfield sun.font.TextRecord.min:I
aload 6
getfield sun.font.TextRecord.max:I
6: aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.script:()I
aload 0
getfield sun.font.SunLayoutEngine.key:Lsun/font/GlyphLayout$LayoutEngineKey;
invokevirtual sun.font.GlyphLayout$LayoutEngineKey.lang:()I
iload 7
aload 8
aload 9
7: aload 10
invokevirtual sun.font.Font2D.getUnitsPerEm:()J
lload 12
8: invokestatic sun.font.SunLayoutEngine.nativeLayout:(Lsun/font/Font2D;Lsun/font/FontStrike;[FII[CIIIIIIILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;JJ)V
9: goto 19
10: StackMap locals: sun.font.Font2D sun.font.FontStrike long
StackMap stack:
aload 10
invokevirtual sun.font.Font2D.getPlatformNativeFontPtr:()J
lstore 14
start local 14 11: lconst_0
lstore 16
start local 16 12: aload 10
instanceof sun.font.FileFont
ifeq 14
13: aload 10
checkcast sun.font.FileFont
invokevirtual sun.font.FileFont.getScaler:()Lsun/font/FontScaler;
getfield sun.font.FontScaler.nativeScaler:J
lstore 16
14: StackMap locals: long long
StackMap stack:
aload 10
aload 11
fload 3
aload 2
lload 16
lload 14
aload 0
aload 10
invokevirtual sun.font.SunLayoutEngine.isAAT:(Lsun/font/Font2D;)Z
15: 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
16: aload 6
getfield sun.font.TextRecord.start:I
aload 6
getfield sun.font.TextRecord.limit:I
iload 5
aload 8
17: iload 7
iload 4
18: invokestatic sun.font.SunLayoutEngine.shape:(Lsun/font/Font2D;Lsun/font/FontStrike;F[FJJZ[CLsun/font/GlyphLayout$GVData;IIIILjava/awt/geom/Point2D$Float;II)Z
pop
end local 16 end local 14 19: StackMap locals:
StackMap stack:
return
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 20 0 this Lsun/font/SunLayoutEngine;
0 20 1 desc Lsun/font/FontStrikeDesc;
0 20 2 mat [F
0 20 3 ptSize F
0 20 4 gmask I
0 20 5 baseIndex I
0 20 6 tr Lsun/font/TextRecord;
0 20 7 typo_flags I
0 20 8 pt Ljava/awt/geom/Point2D$Float;
0 20 9 data Lsun/font/GlyphLayout$GVData;
1 20 10 font Lsun/font/Font2D;
2 20 11 strike Lsun/font/FontStrike;
3 20 12 layoutTables J
11 19 14 pNativeFont J
12 19 16 pScaler J
MethodParameters:
Name Flags
desc
mat
ptSize
gmask
baseIndex
tr
typo_flags
pt
data
private static native void nativeLayout(sun.font.Font2D, sun.font.FontStrike, float[], int, int, char[], int, int, int, int, int, int, int, java.awt.geom.Point2D$Float, sun.font.GlyphLayout$GVData, long, long);
descriptor: (Lsun/font/Font2D;Lsun/font/FontStrike;[FII[CIIIIIIILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;JJ)V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
font
strike
mat
gmask
baseIndex
chars
offset
limit
min
max
script
lang
typo_flags
pt
data
upem
layoutTables
private static native boolean shape(sun.font.Font2D, sun.font.FontStrike, float, float[], 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[FJJZ[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
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