2

Webページは、私のPCにインストールされていないカスタムフォントを使用しています。このような場合、WebViewはオペレーティングシステムのデフォルトフォントを使用しているようです。

しかし、私はフォントファイル「xx.ttf」を持っています。フォントをアプリケーションに埋め込み、それを使用してページ上のフォントを識別するようにWebViewに指示するにはどうすればよいですか?

4

1 に答える 1

9

フォントをロードします。

Font.loadFont(
  CustomFontWebView.class.getResource("TRON.TTF").toExternalForm(), 
  10
);

WebView で使用する前に:

style='font-family:"TRON"';

これが完全な例です。この例は、 dafont からダウンロードできる TRON.TTF フォントに依存しています。TRON.TTF フォントをダウンロードしたら、それを CustomFontWebView.java と同じディレクトリに置き、ビルド システムが TRON.TTF ファイルをクラス出力ディレクトリにコピーすることを確認します。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

// demonstrates the use of a custom font in a WebView.
public class CustomFontWebView extends Application {
  public static void main(String[] args) { launch(args); }
  @Override public void start(Stage stage) {
    stage.setTitle("TRON Synopsis");

    // load the tron font.
    Font.loadFont(
      CustomFontWebView.class.getResource("TRON.TTF").toExternalForm(), 
      10
    );

    // use the tron font in a WebView.
    WebView webView = new WebView();
    webView.getEngine().loadContent(
      "<body bgcolor='silver'>" +   
        "<div align='center'>" +   
          "<p style='font-family:'TRON'; font-size:20;'>" +                 "TRON" + 
          "</p>" +
          "<img src='http://ia.media-imdb.com/images/M/MV5BMTY5NjM2MjAwOV5BMl5BanBnXkFtZTYwMTgyMzA5.V1.SY317.jpg' width='259' height='457'/>" + 
          "<p style='font-family:'TRON'; font-size:10;'>" + 
            "A sci-fi flick set in an alternate reality." + 
          "</p>" +
        "</div>" +   
      "</body>"
    );

    // layout the scene.
    final Scene scene = new Scene(webView, 400, 575);
    stage.setScene(scene);
    stage.show();
  }
}

トロン

特に Microsoft YaHei フォントの使用について

Microsoft YaHei は問題なく動作します (Windows 7)。私の Win7 インストールにはフォントが付属しているため (削除できません)、明示的にロードする必要はありません。HTML から正しいフォント ファミリを参照するだけで、そのような Win7 インストールで機能します。中国語版ではなく、標準の US 版の Win7 Pro を持っています。msyh.ttf ファイルを windows/fonts ディレクトリからプロジェクトにコピーし、JavaFX 経由でロードして、JavaFX 経由のロードが機能し、それも正常に機能することを確認しました。html スタイルの css font-family 指定子を設定するために使用した font-family は、「Microsoft YaHei」でした (上記の回答例で使用されている TRON の代わりに)。テストのために表示したテキストは微软雅黑で、JavaFX アプリでレンダリングされたテキストと、Microsoft YaHei を選択してワードパッドでレンダリングされた同じテキストを比較したところ、グリフは同一でした。


JavaFX 3.0 では、 css @font-faceメカニズムを使用できるようになることに注意してください。つまり、上記の例で行ったように、Java コードではなく Web ページの css でフォント参照を宣言できます。この機能の実装の進捗状況を追跡するための、関連する jira 課題へのリンクを次に示します。

于 2012-07-06T00:00:26.237 に答える