JavaFX的如何在网页视图显示自定义字体?(Javafx How to display custo

2019-07-30 06:33发布

该网页使用不是我的电脑上安装了一个自定义的字体。 在这种情况下,似乎网页视图使用操作系统的默认字体。

但我的字体文件“xx.ttf”。 我怎么能嵌入字体到我的应用程序,并告诉的WebView用它来识别页面上的字体?

Answer 1:

加载字体:

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

之前你在WebView中使用它:

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

这是一个完整的例子。 这个例子依赖于TRON.TTF字体,你可以下载dafont 。 一旦你已经下载了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();
  }
}

上使用的微软雅黑字体的具体

微软雅黑工作正常,我(的Windows 7)。 我安装的Win7自带的字体(和它不能被删除),因此它不会需要明确加载 - 只是从你的HTML引用正确的字体系列和它只是这样的Win7的安装工作。 我有Win7的专业,而不是一个中国版标准的美国版。 我也从我的Windows / fonts目录的微软雅黑文件复制到我的项目,并通过JavaFX的加载它只是为了确保通过JavaFX的装载工作,并且也能正常工作。 我用来设置HTML样式的CSS FONT-FAMILY说明符FONT-FAMILY是“微软雅黑”(而不是TRON在上面的回答示例中使用)。 我显示测试的文本是微软雅黑和我相比,针对写字板呈现与微软雅黑选择字形是相同的同一文本的JavaFX应用程序呈现的文本。


需要注意的是使用JavaFX 3.0,似乎你就可以使用CSS @字体面对面的机制,这意味着你可以在Java代码中声明在网页中的CSS字体的参考,而不是我在上面的例子一样。 这里是一个链接到相关的JIRA问题追踪实现此功能的进步。



文章来源: Javafx How to display custom font in webview?