public abstract class PrismFontFactory extends java.lang.Object implements FontFactory
Modifier and Type | Class and Description |
---|---|
private static class |
PrismFontFactory.TTFilter |
Modifier and Type | Field and Description |
---|---|
private static java.util.ArrayList<java.lang.String> |
allFamilyNames |
private static java.util.ArrayList<java.lang.String> |
allFontNames |
static int |
cacheLayoutSize |
(package private) java.util.HashMap<java.lang.String,CompositeFontResource> |
compResourceMap |
private static java.lang.String |
CT_FACTORY |
static boolean |
debugFonts |
private static java.lang.String |
DW_FACTORY |
private java.util.HashMap<java.lang.String,PrismFontFile> |
embeddedFonts |
private java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> |
familyToFontListMap |
private static java.lang.Thread |
fileCloser |
private java.util.HashMap<java.lang.String,PrismFontFile> |
fileNameToFontResourceMap |
private java.util.HashMap<java.lang.String,java.lang.String> |
fileToFontMap |
(package private) java.util.HashMap<java.lang.String,FontResource> |
fontResourceMap |
private static float |
fontSizeLimit |
private java.util.HashMap<java.lang.String,java.lang.String> |
fontToFamilyNameMap |
private java.util.HashMap<java.lang.String,java.lang.String> |
fontToFileMap |
private static java.lang.String |
FT_FACTORY |
static boolean |
isAndroid |
static boolean |
isEmbedded |
static boolean |
isIOS |
static boolean |
isLinux |
static boolean |
isMacOSX |
static boolean |
isWindows |
private static java.lang.String |
jreDefaultFont |
private static java.lang.String |
jreDefaultFontFile |
private static java.lang.String |
jreDefaultFontLC |
private static java.lang.String |
jreFontDir |
private static float |
lcdContrast |
private static boolean |
lcdEnabled |
private static java.lang.String |
monospaceFontFamily |
private int |
numEmbeddedFonts |
private static java.lang.String[] |
STR_ARRAY |
static int |
SUB_PIXEL_NATIVE |
static int |
SUB_PIXEL_ON |
static int |
SUB_PIXEL_Y |
private static int |
subPixelMode |
private static java.lang.String |
sysFontDir |
private static java.lang.String |
systemFontFamily |
private static float |
systemFontSize |
private static java.lang.String |
T2K_FACTORY |
private static PrismFontFactory |
theFontFactory |
private java.util.ArrayList<java.lang.ref.WeakReference<PrismFontFile>> |
tmpFonts |
(package private) static boolean |
useNativeRasterizer |
private static java.lang.String |
userFontDir |
DEFAULT_FULLNAME
Constructor and Description |
---|
PrismFontFactory() |
Modifier and Type | Method and Description |
---|---|
(package private) void |
addDecodedFont(PrismFontFile fr) |
private void |
addFileCloserHook() |
private void |
addTmpFont(PrismFontFile fr) |
(package private) void |
addToMaps(PrismFontFile fr) |
PGFont |
createFont(java.lang.String familyName,
boolean bold,
boolean italic,
float size) |
PGFont |
createFont(java.lang.String name,
float size) |
protected abstract PrismFontFile |
createFontFile(java.lang.String name,
java.lang.String filename,
int fIndex,
boolean register,
boolean embedded,
boolean copy,
boolean tracked) |
private PrismFontFile |
createFontResource(java.lang.String filename,
int index) |
private PrismFontFile |
createFontResource(java.lang.String filename,
int index,
boolean register,
boolean embedded,
boolean copy,
boolean tracked) |
private PrismFontFile |
createFontResource(java.lang.String name,
java.lang.String filename) |
private PrismFontFile |
createFontResource(java.lang.String name,
java.lang.String filename,
boolean register,
boolean embedded,
boolean copy,
boolean tracked) |
abstract GlyphLayout |
createGlyphLayout() |
PGFont |
deriveFont(PGFont font,
boolean bold,
boolean italic,
float size)
Creates a new Font object by replicating the current Font object
and applying a new bold style, italic style, and size to it.
|
private java.lang.String |
dotStyleStr(boolean bold,
boolean italic) |
private java.lang.String |
findFile(java.lang.String name) |
(package private) FontResource |
getDefaultFontResource(boolean wantComp) |
private static java.lang.String |
getEUDCFontFile() |
static PrismFontFactory |
getFontFactory() |
private static PrismFontFactory |
getFontFactory(java.lang.String factoryClass) |
java.lang.String[] |
getFontFamilyNames() |
java.lang.String[] |
getFontFullNames() |
java.lang.String[] |
getFontFullNames(java.lang.String family) |
private static byte[] |
getFontPath() |
FontResource |
getFontResource(java.lang.String familyName,
boolean bold,
boolean italic,
boolean wantComp) |
private PrismFontFile |
getFontResource(java.lang.String name,
java.lang.String file) |
FontResource |
getFontResource(java.lang.String name,
java.lang.String file,
boolean wantComp) |
private FontResource |
getFontResourceByFileName(java.lang.String file,
boolean wantComp) |
private FontResource |
getFontResourceByFullName(java.lang.String name,
boolean wantComp) |
static float |
getFontSizeLimit() |
private java.util.HashMap<java.lang.String,java.lang.String> |
getFullNameToFileMap() |
static float |
getLCDContrast() |
(package private) static int |
getLCDContrastWin32() |
(package private) static java.util.ArrayList<java.lang.String>[] |
getLinkedFonts(java.lang.String searchFont,
boolean addSearchFont)
This will return an array of size 2, each element being an array
list of
String . |
private static java.lang.String |
getNativeFactoryName() |
(package private) static java.lang.String |
getPathNameWindows(java.lang.String filename) |
private static void |
getPlatformFontDirs() |
int |
getSubPixelMode() |
static java.lang.String |
getSystemFont(java.lang.String name) |
private static java.lang.String |
getSystemFontNative() |
static float |
getSystemFontSize() |
private static int |
getSystemFontSizeNative() |
(package private) static short |
getSystemLCID() |
boolean |
hasPermission() |
(package private) boolean |
isInstalledFont(java.lang.String fileName) |
static boolean |
isJreFont(FontResource fr) |
boolean |
isLCDTextSupported() |
boolean |
isPlatformFont(java.lang.String name) |
PGFont |
loadEmbeddedFont(java.lang.String name,
java.io.InputStream fontStream,
float size,
boolean register)
Loads a font from the specified input stream.
|
private PrismFontFile |
loadEmbeddedFont(java.lang.String name,
java.lang.String path,
boolean register,
boolean copy,
boolean tracked) |
PGFont |
loadEmbeddedFont(java.lang.String name,
java.lang.String path,
float size,
boolean register)
registerEmbeddedFont(String name, String path) is a small subset of
registerEmbeddedFont(String name, InputStream fontStream)
It does not attempt to create a temporary file and has different
parameters.
|
private PGFont |
loadEmbeddedFont0(java.lang.String name,
java.io.InputStream fontStream,
float size,
boolean register) |
private void |
logFontInfo(java.lang.String message,
java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap,
java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap,
java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap) |
private FontResource |
lookupResource(java.lang.String lcName,
boolean wantComp) |
(package private) static void |
populateFontFileNameMap(java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap,
java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap,
java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap,
java.util.Locale locale) |
(package private) void |
populateFontFileNameMapGeneric(java.lang.String fontDir) |
protected boolean |
registerEmbeddedFont(java.lang.String path) |
private static java.lang.String |
regReadFontLink(java.lang.String searchfont) |
private void |
removeEmbeddedFont(java.lang.String name) |
(package private) void |
removeTmpFont(java.lang.ref.WeakReference<PrismFontFile> ref) |
private void |
resolveFontFiles(java.util.HashSet<java.lang.String> unmappedFiles,
java.util.ArrayList<java.lang.String> unmappedFonts,
java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap,
java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap,
java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap) |
private void |
resolveWindowsFonts(java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap,
java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap,
java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap) |
private void |
storeInMap(java.lang.String name,
FontResource resource) |
int |
test_getNumEmbeddedFonts() |
public static final boolean debugFonts
public static final boolean isWindows
public static final boolean isLinux
public static final boolean isMacOSX
public static final boolean isIOS
public static final boolean isAndroid
public static final boolean isEmbedded
public static final int cacheLayoutSize
static boolean useNativeRasterizer
private static int subPixelMode
public static final int SUB_PIXEL_ON
public static final int SUB_PIXEL_Y
public static final int SUB_PIXEL_NATIVE
private static float fontSizeLimit
private static boolean lcdEnabled
private static float lcdContrast
private static java.lang.String jreFontDir
private static final java.lang.String jreDefaultFont
private static final java.lang.String jreDefaultFontLC
private static final java.lang.String jreDefaultFontFile
private static final java.lang.String T2K_FACTORY
private static final java.lang.String CT_FACTORY
private static final java.lang.String DW_FACTORY
private static final java.lang.String FT_FACTORY
java.util.HashMap<java.lang.String,FontResource> fontResourceMap
java.util.HashMap<java.lang.String,CompositeFontResource> compResourceMap
private static PrismFontFactory theFontFactory
private java.util.HashMap<java.lang.String,PrismFontFile> fileNameToFontResourceMap
private java.util.ArrayList<java.lang.ref.WeakReference<PrismFontFile>> tmpFonts
private static final java.lang.String[] STR_ARRAY
private volatile java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap
private java.util.HashMap<java.lang.String,java.lang.String> fileToFontMap
private java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap
private java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap
private static java.lang.String sysFontDir
private static java.lang.String userFontDir
private static java.util.ArrayList<java.lang.String> allFamilyNames
private static java.util.ArrayList<java.lang.String> allFontNames
private static java.lang.Thread fileCloser
private java.util.HashMap<java.lang.String,PrismFontFile> embeddedFonts
private int numEmbeddedFonts
private static float systemFontSize
private static java.lang.String systemFontFamily
private static java.lang.String monospaceFontFamily
private static java.lang.String getNativeFactoryName()
public static float getFontSizeLimit()
public static PrismFontFactory getFontFactory()
private static PrismFontFactory getFontFactory(java.lang.String factoryClass)
protected abstract PrismFontFile createFontFile(java.lang.String name, java.lang.String filename, int fIndex, boolean register, boolean embedded, boolean copy, boolean tracked) throws java.lang.Exception
java.lang.Exception
public abstract GlyphLayout createGlyphLayout()
private PrismFontFile createFontResource(java.lang.String filename, int index)
private PrismFontFile createFontResource(java.lang.String filename, int index, boolean register, boolean embedded, boolean copy, boolean tracked)
private PrismFontFile createFontResource(java.lang.String name, java.lang.String filename)
private PrismFontFile createFontResource(java.lang.String name, java.lang.String filename, boolean register, boolean embedded, boolean copy, boolean tracked)
private java.lang.String dotStyleStr(boolean bold, boolean italic)
private void storeInMap(java.lang.String name, FontResource resource)
void addDecodedFont(PrismFontFile fr)
private void addTmpFont(PrismFontFile fr)
void removeTmpFont(java.lang.ref.WeakReference<PrismFontFile> ref)
public FontResource getFontResource(java.lang.String familyName, boolean bold, boolean italic, boolean wantComp)
public PGFont createFont(java.lang.String familyName, boolean bold, boolean italic, float size)
createFont
in interface FontFactory
public PGFont createFont(java.lang.String name, float size)
createFont
in interface FontFactory
private PrismFontFile getFontResource(java.lang.String name, java.lang.String file)
public PGFont deriveFont(PGFont font, boolean bold, boolean italic, float size)
FontFactory
NOTE: bold and italic are hints.
deriveFont
in interface FontFactory
font
- the original font.bold
- the bold style for the new font.italic
- the italic style fort the new font.size
- the size for the new font.private FontResource lookupResource(java.lang.String lcName, boolean wantComp)
public FontResource getFontResource(java.lang.String name, java.lang.String file, boolean wantComp)
boolean isInstalledFont(java.lang.String fileName)
private FontResource getFontResourceByFileName(java.lang.String file, boolean wantComp)
private FontResource getFontResourceByFullName(java.lang.String name, boolean wantComp)
FontResource getDefaultFontResource(boolean wantComp)
private java.lang.String findFile(java.lang.String name)
private static byte[] getFontPath()
private static java.lang.String regReadFontLink(java.lang.String searchfont)
private static java.lang.String getEUDCFontFile()
private static void getPlatformFontDirs()
static java.util.ArrayList<java.lang.String>[] getLinkedFonts(java.lang.String searchFont, boolean addSearchFont)
String
. The first (zeroth) array holds file
names, and, the second array holds the corresponding fontnames.
If the file does not have a corresponding font name, its corresponding
name is assigned an empty string "".
As a further complication, Windows 7 frequently lists a font twice,
once with some scaling values, and again without. We don't use this
so find these and exclude duplicates.private void resolveWindowsFonts(java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap, java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap, java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap)
private void resolveFontFiles(java.util.HashSet<java.lang.String> unmappedFiles, java.util.ArrayList<java.lang.String> unmappedFonts, java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap, java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap, java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap)
static void populateFontFileNameMap(java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap, java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap, java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap, java.util.Locale locale)
static java.lang.String getPathNameWindows(java.lang.String filename)
public java.lang.String[] getFontFamilyNames()
getFontFamilyNames
in interface FontFactory
public java.lang.String[] getFontFullNames()
getFontFullNames
in interface FontFactory
public java.lang.String[] getFontFullNames(java.lang.String family)
getFontFullNames
in interface FontFactory
public final int getSubPixelMode()
public boolean isLCDTextSupported()
public boolean isPlatformFont(java.lang.String name)
isPlatformFont
in interface FontFactory
public static boolean isJreFont(FontResource fr)
public static float getLCDContrast()
private void addFileCloserHook()
public PGFont loadEmbeddedFont(java.lang.String name, java.io.InputStream fontStream, float size, boolean register)
FontFactory
PGFont
object will be returned.
Any failure such as abbreviated input, or an unsupported font format
will result in a null
return. It is the application's
responsibility to check this before use.
If the register
flag is true, and the loading operation
completes successfully, then the returned font is registered
with the FX graphics system for creation by available constructors
and factory methods, and the application should use it in this
manner rather than calling this method again, which would
repeat the overhead of re-reading and installing the font.
When the font is registered, an alternative name
can be
supplied. This name can be used for creation by available constructors
and factory methods.
The font size
parameter is a convenience so that in
typical usage the application can directly use the returned (non-null)
font rather than needing to create one via a constructor. Invalid sizes
are those <=0 and will result in a default size.
This method does not close the input stream.
loadEmbeddedFont
in interface FontFactory
name
- the name for font, it can be null
.fontStream
- the stream from which to load the font.size
- the size for the font.register
- whether the font should be register.private PGFont loadEmbeddedFont0(java.lang.String name, java.io.InputStream fontStream, float size, boolean register)
public PGFont loadEmbeddedFont(java.lang.String name, java.lang.String path, float size, boolean register)
loadEmbeddedFont
in interface FontFactory
name
- font namepath
- Path name to system filesize
- font sizeregister
- whether the font should be registered.private void removeEmbeddedFont(java.lang.String name)
protected boolean registerEmbeddedFont(java.lang.String path)
public int test_getNumEmbeddedFonts()
private PrismFontFile loadEmbeddedFont(java.lang.String name, java.lang.String path, boolean register, boolean copy, boolean tracked)
private void logFontInfo(java.lang.String message, java.util.HashMap<java.lang.String,java.lang.String> fontToFileMap, java.util.HashMap<java.lang.String,java.lang.String> fontToFamilyNameMap, java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>> familyToFontListMap)
private java.util.HashMap<java.lang.String,java.lang.String> getFullNameToFileMap()
public final boolean hasPermission()
hasPermission
in interface FontFactory
void addToMaps(PrismFontFile fr)
void populateFontFileNameMapGeneric(java.lang.String fontDir)
static int getLCDContrastWin32()
private static int getSystemFontSizeNative()
private static java.lang.String getSystemFontNative()
public static float getSystemFontSize()
public static java.lang.String getSystemFont(java.lang.String name)
static short getSystemLCID()