该网页使用不是我的电脑上安装了一个自定义的字体。 在这种情况下,似乎网页视图使用操作系统的默认字体。
但我的字体文件“xx.ttf”。 我怎么能嵌入字体到我的应用程序,并告诉的WebView用它来识别页面上的字体?
该网页使用不是我的电脑上安装了一个自定义的字体。 在这种情况下,似乎网页视图使用操作系统的默认字体。
但我的字体文件“xx.ttf”。 我怎么能嵌入字体到我的应用程序,并告诉的WebView用它来识别页面上的字体?
加载字体:
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问题追踪实现此功能的进步。