これが私がやりたいことです:
Display.getCurrent().loadFont("fonts/helveticaNeueBold_iOS7.ttf")
- テスターで動作します (つまり、エントリ ポイントを持つクラス)。
- RCP アプリでは機能しません。
読み込みメカニズムはどのように異なりますか? ファイルを取得してttf
から、そのパスを抽出する必要がありますか?
これが私がやりたいことです:
Display.getCurrent().loadFont("fonts/helveticaNeueBold_iOS7.ttf")
読み込みメカニズムはどのように異なりますか? ファイルを取得してttf
から、そのパスを抽出する必要がありますか?
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
。
アレクサンダーの答えも役立つかもしれません。
私にとっては、次のスニペットがうまくいきました:
final String path = "fonts/helveticaNeueBold_iOS7.ttf";
final URL pathUrl = BundleUtility.find(PLUGIN_ID, path);
final boolean isFontLoaded = Display.getCurrent().loadFont(pathUrl.toExternalForm());
BundleUtility
アクセスが制限されていることに注意してください。