Fonts 如何确定Windows操作系统字体是否支持粗体或斜体

Fonts 如何确定Windows操作系统字体是否支持粗体或斜体,fonts,coding-style,flex4,embed,detect,Fonts,Coding Style,Flex4,Embed,Detect,如何确定特定字体是否支持粗体或斜体,而不管它是真字体还是1型字体?我有以下与嵌入Flex字体问题相关的场景: 我有3个名为Unknown1、Unknown2和Unknown3的TTF字体文件。假设它们现在已经安装好了 当我嵌入字体时,Flex告诉我Unknown2.ttf不支持粗体字,或者Unknown3.ttf不支持斜体字 我的问题是,Flex是怎么知道这些的?我一直在搜索C和Java库,但它们似乎都没有提供我所需要的。或者很明显,我看起来不够努力。无论如何,Java或C中是否有类可以为我提供

如何确定特定字体是否支持粗体或斜体,而不管它是真字体还是1型字体?我有以下与嵌入Flex字体问题相关的场景:

我有3个名为Unknown1、Unknown2和Unknown3的TTF字体文件。假设它们现在已经安装好了 当我嵌入字体时,Flex告诉我Unknown2.ttf不支持粗体字,或者Unknown3.ttf不支持斜体字 我的问题是,Flex是怎么知道这些的?我一直在搜索C和Java库,但它们似乎都没有提供我所需要的。或者很明显,我看起来不够努力。无论如何,Java或C中是否有类可以为我提供一些签名,如:

Font unknownFont=Font.getFontFromAnyDirectoryUnknown2.ttf; unknownFont.supportsAnyStyleCalledFont.BOLD//返回false。 unknownFont.supportsAnyStyleCalledFont.ITALIC//返回true。 // unknownFont=Font.getFontFromAnyDirectoryUnknown3.ttf;
unknownFont.supportsAnyStyleCalledFont.BOLD//返回true。unknownFont.supportsAnyStyleCalledFont.ITALIC//返回false。

在C中,您可以通过调用来执行此操作。我知道这个问题已经很老了,我也遇到过同样的问题,解决方案如中所述

您可以使用:

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

谢谢你的这个。但是,我已经尝试过了,它似乎给出了基于族而不是每个字体文件的可用样式。即使变量指向特定的Arial字体文件,如ariali.ttf或arialbd.ttf,它仍然提供了所有可用的样式,因为它属于Arial系列。Arial系列由Arial、arialbd、Arali、arialbi字体文件组成。