WYSIWYG 显示和输出
大多数应用程序都尝试支持 WYSIWYG(你看到的内容)输出。 这意味着打印时,在应用程序窗口中使用 10 磅 Helvetica 粗体字体绘制的文本应具有类似的外观。 在大多数情况下,获取真正的 WYSIWYG 输出几乎是不可能的,甚至不可取。 这部分是由于视频和打印机技术的差异造成的:屏幕上的像素通常大于普通激光打印机上的点。 查看距离也不同;计算机用户通常位于离屏幕约两英尺远的地方,但读者的眼睛通常比打印页面少一英尺。
为了补偿屏幕和打印页之间的易读性差异,系统支持一个名为逻辑英寸的单元,该单元始终以像素为单位指定。 对于视频显示,逻辑英寸始终大于物理英寸,以补偿较长的观看距离和(通常)粗糙分辨率。 对于打印机,逻辑英寸始终等于物理英寸。
若要在绘制文本时获取 WYSIWYG 效果,涉及两个相关问题:使单个字符看起来相同,并且与设备无关的页面布局。 若要解决第一个问题,应用程序可以使用 CreateFont 函数指定理想(或逻辑)字体的字体名称和大小,然后调用 SelectObject 函数来标识显示或打印机设备上下文。 当应用程序调用 SelectObject 时,系统将选择与指定逻辑字体最接近的物理字体。 当系统选择显示字体时,它将选择大于实际大小的物理字体。 之所以发生这种情况,是因为显示器上的逻辑英寸较大。 但是,从用户的角度来看,它似乎非常接近正确的高度。 当系统选择打印机的字体时,它会选择实际请求的大小的物理字体。 有关字体和文本输出的详细信息,请参阅 字体和文本。
第二个问题(独立于设备的页面布局)可以通过使用 TrueType 指标来解决。 即使在与 16 位版本的 Windows 保持兼容性时也是如此。 有关详细信息,请参阅 使用可移植 TrueType 指标。
若要在绘制位图图形时获取 WYSIWYG 效果,应用程序可以检索屏幕和打印页的宽度和高度(以逻辑英寸为单位)。 使用这些值,应用程序可以创建水平和垂直缩放因子,以在打印机上绘制位图图像时保持图像的比例。 有关位图和位图输出的详细信息,请参阅 位图。