我使用TWebBrowser组件来呈现TinyMCE富文本编辑器。
这很好用,但是,我发现TinyMCE编辑器中的一些字体没有按照它们应该的方式呈现。
这是字体在另一个浏览器中的呈现方式:
这是TWebBrowser如何呈现它们:
TinyMCE编辑器在我们的一个服务器上,但字体是从亚马逊的云存储中下载的。
我不明白为什么这个TWebBrowser不能正确地呈现字体。
是否有方法可以使用OnDownloadBegin/OnDownloadComplet方法查看字体下载是否失败?
我做了一个小的HTML例子
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://htmleditor-fonts.s3.eu-central-1.amazonaws.com/NA/NA.css">
<style>
@font-face {
font-family: 'N-Bold';
src: url('http://htmleditor-fonts.s3.eu-central-1.amazonaws.com/NA/Narobial-Bold.ttf') format('truetype');
}
p.nb { font-family: N-Bold }
p.nb2 { font-family: Narobial-Bold }
</style>
</head>
<body>
<p>This is a normal paragraph.</p>
<p class="nb">If this is bold I've successfully downloaded the TTF.</p>
<p class="nb2">If this is bold I've successfully downloaded the CSS and the TTF.</p>
</body>
</html>
链接的CSS文件看起来像这样:
@font-face {
font-family: 'Narobial-Bold';
src: url('Narobial-Bold.ttf') format('truetype');
}
和一个小的 Delphi 项目来加载这个HTML
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure FormShow(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
WebBrowser1.Navigate(url to the html example);
end;
end.
这是 Delphi 和另一个浏览器(本例中为Mozilla Firefox)的输出:
1条答案
按热度按时间jqjz2hbq1#
最终解决这个问题,需要双管齐下。
主要问题是组件使用的基础Internet Explorer 7。此浏览器不支持我试图显示的TTF字体。
较新版本的IE支持WOFF字体,因此我切换了字体类型,然后使用此答案强制TWebBrowser在IE8兼容模式下运行:
https://stackoverflow.com/a/12488739/4105601