【问题标题】:Is there a way to check what fonts are installed on machines via the web?有没有办法通过网络检查机器上安装了哪些字体?
【发布时间】:2010-10-31 01:06:32
【问题描述】:

有没有办法测试安装了哪些字体,或者我可以读出所有字体?我想在我们的产品中进行一项调查,看看我可以在我们的项目中使用哪些字体。

【问题讨论】:

    标签: javascript jquery css fonts


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      没有很好的方法来做到这一点。虽然如果你有一个你想知道的字体列表,创建一个始终存在的后备类:

      span#knownfont{font-family:Verdana, font-size:12px;}
      span#font1{font-family:NonExistingFont1, Verdana, font-size:12px;}
      span#font2{font-family:NonExistingFont2, Verdana, font-size:12px;}
      

      ...

      Then create HTML for each case:
      <span id="knownfont">Lorem ipsum dolor sit amet</span>
      <span id="font1">Lorem ipsum dolor sit amet</span>
      <span id="font2">Lorem ipsum dolor sit amet</span>
      

      然后编写一个脚本,比较已知字体跨度和其他每个的宽度。如果宽度不同,则该字体存在于客户端。

      【讨论】:

        【解决方案3】:

        我知道并非所有浏览器都支持它,但在 css 中有 @font-face ,如 here 所述,因此如果您知道您的用户在 IE 上(例如),您可以使用它来获取字体。

        【讨论】:

          【解决方案4】:

          这是一个list of the most common fonts on windows and mac machines(每个都有图像比较)。我在选择要在项目中使用的字体时使用它。

          【讨论】:

            【解决方案5】:

            有一个脚本可以用不同的字体渲染一堆 DIV,然后检查生成的 DIV 是否具有给定字体的正确尺寸。

            http://www.lalit.org/lab/javascript-css-font-detect

            【讨论】:

              【解决方案6】:

              没有万无一失的方法可以通过浏览器确定客户端计算机上已安装(和可用)的字体。

              Flash 可能允许您这样做,或者可能是一些疯狂(但编写起来很有趣)的 JavaScript,它对具有给定字体的元素的大小做出假设 - 但无论有多少,此脚本都可能容易受到客户端设置差异的影响它考虑的情况。

              我强烈反对您提议的调查/部署方法。您将做出一些不可能的决定 - 例如,可接受的可用性百分比是多少?如果是 100%,当出现没有此字体的新用户时,您会怎么做?如果不是,您有多少比例的用户对体验下降感到满意?

              您是否考虑过 sIFR 或只是具有适当 alt 属性的图像元素?

              如果您有特定的排版要求,可能值得关注:http://blog.typekit.com/

              【讨论】:

                【解决方案7】:

                签出 jQuery 插件 FontUnstack,来自这个 question

                【讨论】:

                  【解决方案8】:

                  您可以使用 Flash 获取客户端操作系统中安装的字体列表:

                  var embeddedAndDeviceFonts:Array = Font.enumerateFonts(true);
                  

                  然后您可以使用ExternalInterface 在 Flash 和 Javascript 之间移动此信息。它不需要太多代码。

                  查看my blog post about it 了解更多信息和a demo implementation

                  【讨论】:

                    猜你喜欢
                    • 2016-06-24
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-05-29
                    • 2010-11-06
                    • 1970-01-01
                    相关资源
                    最近更新 更多