是否可以使用PHP检查浏览器的默认字体设置?

时间:2013-10-31 18:52:12

标签: php css unicode font-face

As per my Question regarding Unicode Character-specific CSS,我得到了一个很好的解决方案:unicode-range,但实际上它并没有真正起作用,或者它没有任何明显的变化。

我跟随Paul Irish的Bulletproof @font-face Syntax Tutorial索引我的嵌入字体。它以某种方式嵌入字体,但不正确(我的问题特定于Bānglā字体)。如果我在浏览器中设置字体,那么它会给出字体的完美大小和字形视图。但是,如果我从/windows/fonts文件夹中删除特定字体,则嵌入不会显示正确大小的文本。所以实际的font-size属性是我的问题。

如果我能检测到Bānglā字体是否在浏览器中是默认的,那么我将加载较小的字体,如果没有,那么我将加载更大的字体。

那么,是否真的可以检测出浏览器中启用的默认字体是什么?

修改

我的实时网站是dev.nanodesignsbd.com - 如果这可以帮助某人找到@ font-face防弹语法中的错误。随附的图片将为我说话: what I want my fonts

这只能通过浏览器字体设置来完成。 :(

3 个答案:

答案 0 :(得分:3)

PHP是一种服务器端语言,可在Web服务器上运行。它无法控制用户的Web浏览器,无法真正确定字体(或其他任何内容)。对于处理客户端的东西,你需要JavaScript。也就是说,我认为使用JavaScript可以可靠地确定字体是不可能的。

答案 1 :(得分:1)

通常,默认字体使用CSS放置在<body><html>标记上。这些是在浏览器配置中默认定义的。唯一的方法是获取PHP中指定浏览器的默认值,即查看每个浏览器的默认值以及您要支持的每种语言。然后,您必须解析用户代理字符串以查看应该的默认值。

最好的解决方案不在PHP ,因为正如我所说,浏览器在CSS中定义这些字体。相反,您可以使用javascript检查页面加载后的默认字体。

您可以使用getComputedStyle()执行此操作:

FOR HTML TAG

window.getComputedStyle(document.body.parentNode);

FOR TODY TAG

window.getComputedStyle(document.body);

这些将返回浏览器的计算样式数组。

希望这有帮助!

答案 2 :(得分:0)

PHP将让您获得有关浏览器的一些信息。没有关于字体的信息。

http://php.net/manual/en/function.get-browser.php

我认为这是您将获得的最具体的平台信息:

$browser = get_browser(null, true);
print_r($browser);

Array
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [cssversion] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)