使用字体

文本是使用字体来显示的— 字体是具有相同铅字字样的字符集,能够以特定的大小、风格和粗细来使用。

Windows 95 和 Windows NT 操作系统提供了一套完整的基本字体。TrueType(R) 字体是可缩放的,也就是说它们能产生任何大小的字符。当选择了一种 TrueType 字体,它将变换成选定的磅数大小,并以位图显示在屏幕上。

在打印时,选定的 TrueType 字体或其它字体,都会变换成恰当的大小,然后发送给打印机。因此,不需要单独的屏幕和打印字体。然而,如果有一种可用的、能提高打印速度的、等效的字体时,打印字体仍将被替换为 TrueType 字体。

为应用程序选择字体

要记住,应用程序的用户可能没有创建应用程序所使用的字体。如果选择了用户没有的 TrueType 字体,则 Windows 将会从用户系统中选择最接近匹配的字体。这样可能会给用户带来一些问题,要由应用程序的设计而定。例如,Windows 选择的字体可能会放大文本,以至屏幕上的标签有所重叠。

避免字体问题的一个方法是:与应用程序一起分布必要的各种字体。(为了与应用程序一起分布,可能要从版权所有者那里获得字体的许可。)

也可以设计应用程序去检查操作系统提供的字体中是否有所用到的字体。如果所需字体没有驻留在操作系统中,可以设计应用程序从所提供的字体列表中选择一种不同的字体。

避免字体问题的另一种方法是:使用大部分用户的操作系统都有的字体。如果使用了 Windows 特定版本的字体,要把该版本指定为应用程序的系统需求。

检查可用的字体

程序能够容易地检测出用户系统和打印机中是否有可用的匹配字体。Fonts 属性适用于 Printer 和 Screen 对象。被 Fonts 属性所返回的数组,是打印机或屏幕可用的所有字体的列表。可以循环地通过该属性数组,查找相匹配的名称字符串。以下代码示例,将确定系统中是否有与所选定的窗体相匹配的打印机字体:

Private Sub Form_Click ()
Dim I As Integer, Flag As Boolean
   For I = 0 To Printer.FontCount - 1
      Flag = StrComp (Font.Name,Printer.Fonts(I), 1)
      If Flag = True Then
         Debug.Print "There is a matching font."
         Exit For
      End If
   Next I
End Sub

详细信息 有关设置字体属性的信息,请参阅本章后面的“设置字体特征”。关于东亚系统字体的详细信息,请参阅“国际化”中的“DBCS 环境下字体、显示和打印的考虑因素”。

创建您自己的字体类型

如果您使用“引用”对话框设置一个对标准 OLE 类型的引用,那么就可以使用 StdFont 类来创建您自己的字体类型。如果浏览“对象浏览器”,您将会注意到有 StdFont 和 Font 类。Font 类是由 StdFont 基类推导出的,并且被所有的控件支持。

您可以使用以下语法:

Dim MyFont As Font

但是,您不能使用:

Dim MyFont As New Font

相反,要创建您自己的字体或图片类型,请使用下面的代码:

Dim MyFont As New StdFont
With MyFont
   .Bold = True
   .Name = "Arial"
End With
Set Text1.Font = MyFont