如果您想在您的應用程序中使用自定義字體(在所有操作系統上都不可用),您需要在.jar文件中包含字體文件(otf,ttf等)然後可以通過該方法使用的字體在應用程序中描述如下:從(Here thanks to commenter)
http://download.oracle.com/javase/6/docs/api/java/awt/Font.html#createFont%28int,%20java.io.File%29
示例代碼;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
如果不確定如何從一個.jar提取您的文件,這裏是我在這之前共享的方法;
/**
* This method is responsible for extracting resource files from within the .jar to the temporary directory.
* @param filePath The filepath relative to the 'Resources/' directory within the .jar from which to extract the file.
* @return A file object to the extracted file
**/
public File extract(String filePath)
{
try
{
File f = File.createTempFile(filePath, null);
FileOutputStream resourceOS = new FileOutputStream(f);
byte[] byteArray = new byte[1024];
int i;
InputStream classIS = getClass().getClassLoader().getResourceAsStream("Resources/"+filePath);
//While the input stream has bytes
while ((i = classIS.read(byteArray)) > 0)
{
//Write the bytes to the output stream
resourceOS.write(byteArray, 0, i);
}
//Close streams to prevent errors
classIS.close();
resourceOS.close();
return f;
}
catch (Exception e)
{
System.out.println("An error has occurred while extracting a resource. This may mean the program is missing functionality, please contact the developer.\nError Description:\n"+e.getMessage());
return null;
}
}
爲什麼不使用正常字體?這不是一個標準的Windows字體,所以它當然不會正確渲染。 –
@JesusRamos古吉拉特語是一種語言。你不知道他使用哪種字體。 – Sebastian
@Sebastian那麼這個語言必須支持字體,因爲它看起來像是需要特殊字符。 –