获得特定字体的字体样式

时间:2012-11-20 12:19:04

标签: vb.net fonts visual-studio-2005

我有两个组合框 combobox1& combobox2 我在combobox1中获取所有系统字体 我需要在combobox2中获得选择字体的字体样式

 Dim fc As New Drawing.Text.InstalledFontCollection
    Dim ff As FontFamily() = fc.Families()
    For Each family As FontFamily In ff
        Me.ComboBox1.Items.Add(family.Name)
    Next

当我为例如选择字体名称时。 Monotype Corsiva字体只有italic&斜体加粗字体样式

简而言之,我需要获得与我在combobox1中选择的字体相关的字体样式,因为不同字体的字体样式不同

1 个答案:

答案 0 :(得分:0)

这些字体名称是根据后来排版中可用的添加字体样式合成的,尤其是OpenType中添加的样式。他们不完美地映射回旧的GDI风格。您看到的诀窍是将姓氏从Monotype修改为" Monotype Corsiva",强烈暗示只有斜体("草书")样式可用。相同类型的映射技巧用于各种添加的粗体样式和音高,名称如" Semibold"和#34; Condense"。

由于您只能使用FontStyle枚举来选择代码中的字体,因此使用FontFamily.IsStyleAvailable()方法检查映射的样式应该可以正常工作。您希望为用户提供字体外观的预览,就像FontDialog类一样,因此对最终结果几乎没有什么困惑。一般都喜欢FontDialog。