以前我曾经写过一个nfo2txt的小程序,就是把nfo文件中的特殊字符进行转化,在记事本中用等宽字体(如courier new)浏览正常,但在IE中确是一团糟,具体什么原因我不清楚,不过在firefox浏览器中却可以正常显示。
一直在找一种能够显示nfo的TrueType字体,因为可以把它转化为嵌入html的字体在浏览器中使用。昨天我在Hanzac@ccf写的基于 HTA 的 NFO 查看工具中找到了Lucida ConsoleP这款字体,把它转化成了OpenType字体(压缩的TrueType字体),在IE中显示正常,在firefox中却没有效果。这种方式的缺点就是浏览器下载字体需要一段时间。
下面一段小程序,可以根据不同的浏览器而使用不同的方法显示nfo,在IE和firefox下似乎还没有发现什么问题。
演示地址:http://www.ugia.cn/nfo/nfo.php
$nfodata = file_get_contents("ror.nfo");
$nfodata = str_replace("\r", "", $nfodata); $nfodata = preg_replace("/(^\s)(www\.\S+)(^\s)((httpftphttps):\/\/\S+)/is", " $2$4", $nfodata); if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) //如果客户端浏览器为IE { header('Content-Type: text/html; charset=windows-1252 '); $ctype = ""; $style = " @font-face { font-family: ugia; font-style: normal; font-weight: normal; src: url(http://0day.ugia.net/ugia.eot); } body, a, pre { font-family: ugia, courier new; font-size:11px; }"; } else //其他浏览器 { header('Content-Type: text/html; charset=utf-8 '); $ctype = ""; $style = " body, a, pre { font-family: courier new; font-size:11px; }"; require("nfo2txt.php"); $nfodata = conv_nfo($nfodata); } ?> http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
附件中包含nfo2txt.php和luconp.ttf这两个文件,需要把luconp.ttf使用微软的WEFT转化为.eot文件,我不知道如何去除eot文件的站点限制,所以需要你自己转化并指定使用此eot文件的地址了。Microsoft WEFT下载地址:
http://download.microsoft.com/download/8/a/1/8a1be03f-f7fc-4504-af9a-7b9230775284/WEFTIII2b1.exe
css2种关于@font-face 这个规则的说明:
@font-face { font-family : name ; src : url( url ) ; sRules }
说明:
name : 字体名称
url : 使用绝对或相对地址指定OpenType字体
sRules : 样式表定义
设置嵌入HTML文档的字体。
嵌入HTML文档的字体是指将OpenType字体(压缩的TrueType字体)文件映射到客户端系统,用来提供HTML文档使用该字体,或取代客户端系统已有的同名字体。
示例:
@font-face { font-family: dreamy; font-weight: bold; src: url(http://www.example.com/font.eot); }
没有评论:
发表评论