【问题标题】:How to determine if a Windows OS font would support bold or italic如何确定 Windows 操作系统字体是否支持粗体或斜体
【发布时间】:2011-06-14 16:18:21
【问题描述】:

您如何确定特定字体是否支持粗体或斜体,无论它是 True Type 还是 Type 1?我有以下与嵌入 Flex 字体问题有关的场景:

  • 我有 3 个 TTF 字体文件,分别称为 Unknown1、Unknown2 和 Unknown3。假设它们现在已安装
  • 当我嵌入字体时,Flex 告诉我 Unknown2.ttf 不支持粗体或 Unknown3.ttf 不支持斜体样式

我的问题是,Flex 是如何知道这一切的?我一直在搜索 C# 和 Java 库,但它们似乎都没有提供我需要的东西。或者显然,我看起来不够努力。无论如何,Java 或 C# 中是否有可以为我提供一些签名的类,例如:

字体 unknownFont = Font.getFontFromAnyDirectory("Unknown2.ttf"); unknownFont.supportsAnyStyleCalled(Font.BOLD);//返回false。 unknownFont.supportsAnyStyleCalled(Font.ITALIC);//返回真。 // unknownFont = Font.getFontFromAnyDirectory("Unknown3.ttf"); unknownFont.supportsAnyStyleCalled(Font.BOLD);//返回真。 unknownFont.supportsAnyStyleCalled(Font.ITALIC);//返回false。

【问题讨论】:

    标签: fonts coding-style flex4 embed detect


    【解决方案1】:

    在 C# 中,您可以通过调用 FontFamily.IsStyleAvailable 来做到这一点

    【讨论】:

    • 感谢这个。但是,我已经尝试过了,它似乎提供了基于系列而不是每个字体文件的可用样式。即使该变量指向特定的 Arial 字体文件,例如 ariali.ttf 或 arialbd.ttf,它仍然提供所有可用的样式,因为它属于 Arial 系列。而Arial家族由arial、arialbd、ariali、arialbi字体文件组成。
    【解决方案2】:

    我知道这个问题已经很老了,我遇到了同样的问题,解决方案在C# get font style from .ttf 中说明。

    你可以使用:

    GlyphTypeface ttf = new GlyphTypeface(new Uri(@"C:\Windows\Fonts\calibrii.ttf"));
    Debug.Print(ttf.Style.ToString()); //=Italic or Normal
    Debug.Print(ttf.Weight.ToString()); //=Bold or Normal
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-07
      • 2012-01-21
      • 2013-12-05
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2010-09-17
      • 2011-07-18
      相关资源
      最近更新 更多