RCP应用程序中的SWT加载字体

时间:2013-11-14 15:38:40

标签: java fonts swt eclipse-rcp

这就是我想要做的事情:

Display.getCurrent().loadFont("fonts/helveticaNeueBold_iOS7.ttf")
  • 工作在测试人员中(即带入口点的课程)。
  • 在RCP应用中工作。

加载机制有何不同?我应该获取 ttf文件,然后提取它的路径吗?

2 个答案:

答案 0 :(得分:2)

Eclipse包有不同的路径(类似“bundleentry:// bundle_number / path_to_your_file”)。您可能希望使用FileLocator正确加载文件。例如:

Bundle bundle = Activator.getDefault().getBundle();
Path path = new Path("fonts/helveticaNeueBold_iOS7.ttf");
URL url = FileLocator.find(bundle, path, Collections.EMPTY_MAP);
URL fileUrl = null;
try {
fileUrl = FileLocator.toFileURL(url);
}
catch (IOException e) {
// Will happen if the file cannot be read for some reason
e.printStackTrace();
}
File file = new File(fileUrl.getPath());
boolean loadFont = Display.getCurrent().loadFont(file.toString());

另外,请检查FileLocator中提供的其他方法。

答案 1 :(得分:1)

Alexander's answer对某些人也有帮助。

对我来说,以下代码片段起到了作用:

final String path = "fonts/helveticaNeueBold_iOS7.ttf";
final URL pathUrl = BundleUtility.find(PLUGIN_ID, path);
final boolean isFontLoaded = Display.getCurrent().loadFont(pathUrl.toExternalForm());

虽然要注意BundleUtility限制了访问权限。