Dry Realizebrush使用一个 XLATEOBJ结构把画刷模型中的颜色转换成设备颜色索引。 当 BRUSHOBJ结构的 i Solidcolor成员的值是0 XFFFFFFFF并且 pvRBrush成员是NUL 时,驱动程序要调用GDI的 BRUSHOBJ pvGetrBrush函数。 BRUSHOBJ_ pvGetRBrush取出一个 驱动程序的指定画刷实现的指针。当驱动程序调用这个函数时,如果画刷还没有实现,GDI 自动调用 Drv Realizebrush进行这个画刷的驱动程序实现 抖动 如果需要,当GDI试图使用硬件不能精确表示的实色创建画刷时,它会请求驱动程序 的帮助。GDI调用驱动程序的 DryDither color函数,请求驱动程序相对于设备调色板的保 留部分抖动画刷 抖动使用几个颜色的模型近似选择的颜色,其结构是一个设备颜色索引数组。使用这 些颜色为其模型创建的画刷通常对于给定的颜色是很好的近似。 DryDithercolor也能表现 设备不能精确指定的颜色。为实现这一点, DryDi thercolor请求一个几种颜色的模型,并 创建一个画刷近似给定的实色 函数 DryDitherColor是可选的,并且只在 DEVINFO结构的 fl Graphics Caps成员中 GCAPS_ COLOR_ DITHER或 GCAPS MONO DITHER能力标志置1时才调用。 DryDithercolor可返 回的值在下表中列出 含义 DCR DRIVER 指示抖动值已经由驱动程序计算。在这个情况下,设备 颜色索引数组的 cXDither乘 cyDi ther的句柄传递回 DCR HALFTONE 指示GDⅠ使用存在的设备(过渡色调)调色板近似一个 颜色。例如,GDI可以使用打印机的典型调色板,只有 3种或4种颜色。 DCR HALFTONE能被显示器驱动程序使 用,仅当设备包含一个设备(过渡色调)调色板,如 VGA-16适配器卡,它有一个标准的固定调色板 DCR SOLID 指示GDI要用存在的设备调色板把请求的颜色映像到最 接近的颜色值(多对一)。 为使GDⅠ获得好的灰度模型,单色显示器也支持 DryDithercolor 36支持DDI字体和文本函数 对许多设备,GDI能处理所有的字体函数。然而,某些驱动程序只能在设备表面上画 其自己的字体,或者其设备的字体。其他驱动程序是字体驱动程序,能提供字形位图和/或 轮廓和字形规格给GDI。对这些情况,驱动程序必须支持有些有用的字体函数。 文本输出是更一般的函数。如果表面是标准格式位图,GDI能处理所有的文本输出, 除非驱动程序挂起调用以提高性能。对设备管理的表面,驱动程序必须支持文本输出 3.6.1管理和优化字体 生产者( producer)是能生成字体的驱动程序。在输出时它产生字形信息作为输出
31 DrvRealizeBrush 使用一个 XLATEOBJ 结构把画刷模型中的颜色转换成设备颜色索引。 当 BRUSHOBJ 结构的 iSolidColor 成员的值是 0xFFFFFFFF 并且 pvRBrush 成员是 NULL 时,驱动程序要调用 GDI 的 BRUSHOBJ_pvGetRBrush 函数。BRUSHOBJ_pvGetRBrush 取出一个 驱动程序的指定画刷实现的指针。当驱动程序调用这个函数时,如果画刷还没有实现,GDI 自动调用 DrvRealizeBrush 进行这个画刷的驱动程序实现。 抖动 如果需要,当 GDI 试图使用硬件不能精确表示的实色创建画刷时,它会请求驱动程序 的帮助。GDI 调用驱动程序的 DrvDitherColor 函数,请求驱动程序相对于设备调色板的保 留部分抖动画刷。 抖动使用几个颜色的模型近似选择的颜色,其结构是一个设备颜色索引数组。使用这 些颜色为其模型创建的画刷通常对于给定的颜色是很好的近似。DrvDitherColor 也能表现 设备不能精确指定的颜色。为实现这一点,DrvDitherColor 请求一个几种颜色的模型,并 创建一个画刷近似给定的实色。 函数 DrvDitherColor 是可选的,并且只在 DEVINFO 结构的 flGraphicsCaps 成员中 GCAPS_COLOR_DITHER 或 GCAPS_MONO_DITHER 能力标志置 1 时才调用。DrvDitherColor 可返 回的值在下表中列出。 值 含义 DCR_DRIVER 指示抖动值已经由驱动程序计算。在这个情况下,设备 颜色索引数组的 cxDither 乘 cyDither 的句柄传递回 去。 DCR_HALFTONE 指示 GDI 使用存在的设备(过渡色调)调色板近似一个 颜色。例如,GDI 可以使用打印机的典型调色板,只有 3 种或 4 种颜色。DCR_HALFTONE 能被显示器驱动程序使 用,仅当设备包含一个设备(过渡色调)调色板,如 VGA-16 适配器卡,它有一个标准的固定调色板。 DCR_SOLID 指示GDI要用存在的设备调色板把请求的颜色映像到最 接近的颜色值(多对一)。 为使 GDI 获得好的灰度模型,单色显示器也支持 DrvDitherColor。 3.6 支持 DDI 字体和文本函数 对许多设备,GDI 能处理所有的字体函数。然而,某些驱动程序只能在设备表面上画 其自己的字体,或者其设备的字体。其他驱动程序是字体驱动程序,能提供字形位图和/或 轮廓和字形规格给 GDI。对这些情况,驱动程序必须支持有些有用的字体函数。 文本输出是更一般的函数。如果表面是标准格式位图,GDI 能处理所有的文本输出, 除非驱动程序挂起调用以提高性能。对设备管理的表面,驱动程序必须支持文本输出。 3.6.1 管理和优化字体 生产者(producer)是能生成字体的驱动程序。在输出时它产生字形信息作为输出
包括字形规格、位图和轮廓。消费者( consuer)是使用字体的驱动程序。为产生文本输出 它接受字形信息作为输入,必须绘制其自身的字体或在设备管理表面上硬件的字体。驱动程 序可以既是生产者又是消费者。例如,打印机驱动程序在调用 Drvquery Font Data服务提供 字形规格时是生产者,处理 DrvTextout调用时是消费者。 驱动程序只有在它是字体生产者或字体消费者时才请求处理字体。如果硬件有驻留的 字体,驱动程序必须给GDⅠ提供有关这个字体的信息,包括在 IFIMETRICS结构中的字体规 格,从 Unicode到个体字形标识的映像,独立字形属性以及字距调整表。还有一些驱动程序 必须支持的函数。一些函数被字体驱动程序以及使用驱动程序指定或设备指定的字体的驱动 程序两者请求。其他的只被字体驱动程序请求。 字体函数的支持依赖于驱动程序的能力。通常的类型有: 规格函数 字形函数 True Type函数 3.6.1.1字体规格函数 当驱动程序必须支持字体时,它必须通过 IFIMETRICS结构给GDI提供字体信息。对 每个字体有独立的 FIMETRICS结构。大多数字段用术语FWO表达,每个字段在设计空间中 是带符号的16位数。如果字体是光栅字体,设计空间和设备空间是相同的,字体单元相当 于像素间的距离 基本上, IFIMETRICS结构是文本规格结构的DDI版本。所有的距离依赖于字体设计者 的抽象坐标系统。抽象空间坐标系统是右手笛卡儿坐标系统,y坐标向上增长,x坐标向右 增长。 IFIMETRICS结构设计为变长的。与字体联合的字符串长度没有限制。一般的习惯是紧 跟着 IFIMETRICS结构的最后一个字段立即存储字符串 任何提供字体的驱动程序必须支持 DrvQuery Font函数。驱动程序也包括函数 DrvQuery FontData,取出有关实现字体的信息。在对 DrvQueryFont Data的调用中,GDI提 供一个指针指向字形或字距调整句柄数组。驱动程序在 GDI GLYPGDATA结构中返回相关字形 的信息。如果 DrvQuery Font Data给定了字距调整句柄,它在Win32 POINTL表中返回有关字 距调整对的信息。下表列出了字体规格函数。 描述 Drv DestroyFont 通知驱动程序不再需要字体实现,驱动程序可以释放任何分 配的数据结构。GDI调用这个函数一次为字体生产者,一次 为字体消费者。这个函数是可选的,只在驱动程序必须释放 所分配的资源时才支持。 通知驱动程序不再需要指定的数据结构。这个函数是可选 的,只在驱动程序的存储器管理请求这个信息时才被实现。 DrvQuery Font 为字体返回指向 IFIMETRICS结构的指针。这个函数被所有 处理字体的驱动程序请求。 DrvQuery Font Data 返回有关实现的字体的信息。这个函数被所有处理字体的驱 程序请求(为选择的iMde值)。 DrvQuery FontTree 返回指向结构的指针,定义从 Unicode到字形句柄的映像或 字距调整对到字距调整句柄的映像。这个函数被所有处理字 体的驱动程序请求
32 包括字形规格、位图和轮廓。消费者(consumer)是使用字体的驱动程序。为产生文本输出, 它接受字形信息作为输入,必须绘制其自身的字体或在设备管理表面上硬件的字体。驱动程 序可以既是生产者又是消费者。例如,打印机驱动程序在调用 DrvQueryFontData 服务提供 字形规格时是生产者,处理 DrvTextOut 调用时是消费者。 驱动程序只有在它是字体生产者或字体消费者时才请求处理字体。如果硬件有驻留的 字体,驱动程序必须给 GDI 提供有关这个字体的信息,包括在 IFIMETRICS 结构中的字体规 格,从 Unicode 到个体字形标识的映像,独立字形属性以及字距调整表。还有一些驱动程序 必须支持的函数。一些函数被字体驱动程序以及使用驱动程序指定或设备指定的字体的驱动 程序两者请求。其他的只被字体驱动程序请求。 字体函数的支持依赖于驱动程序的能力。通常的类型有: ▪ 规格函数 ▪ 字形函数 ▪ TrueType 函数 3.6.1.1 字体规格函数 当驱动程序必须支持字体时,它必须通过 IFIMETRICS 结构给 GDI 提供字体信息。对 每个字体有独立的 FIMETRICS 结构。大多数字段用术语 FWORD 表达,每个字段在设计空间中 是带符号的 16 位数。如果字体是光栅字体,设计空间和设备空间是相同的,字体单元相当 于像素间的距离。 基本上,IFIMETRICS 结构是文本规格结构的 DDI 版本。所有的距离依赖于字体设计者 的抽象坐标系统。抽象空间坐标系统是右手笛卡儿坐标系统,y 坐标向上增长,x 坐标向右 增长。 IFIMETRICS 结构设计为变长的。与字体联合的字符串长度没有限制。一般的习惯是紧 跟着 IFIMETRICS 结构的最后一个字段立即存储字符串。 任何提供字体的驱动程序必须支持 DrvQueryFont 函数。驱动程序也包括函数 DrvQueryFontData,取出有关实现字体的信息。在对 DrvQueryFontData 的调用中,GDI 提 供一个指针指向字形或字距调整句柄数组。驱动程序在 GDI GLYPGDATA 结构中返回相关字形 的信息。如果 DrvQueryFontData 给定了字距调整句柄,它在 Win32 POINTL 表中返回有关字 距调整对的信息。下表列出了字体规格函数。 函数 描述 DrvDestroyFont 通知驱动程序不再需要字体实现,驱动程序可以释放任何分 配的数据结构。GDI 调用这个函数一次为字体生产者,一次 为字体消费者。这个函数是可选的,只在驱动程序必须释放 所分配的资源时才支持。 DrvFree 通知驱动程序不再需要指定的数据结构。这个函数是可选 的,只在驱动程序的存储器管理请求这个信息时才被实现。 DrvQueryFont 为字体返回指向 IFIMETRICS 结构的指针。这个函数被所有 处理字体的驱动程序请求。 DrvQueryFontData 返回有关实现的字体的信息。这个函数被所有处理字体的驱 动程序请求(为选择的 iMode 值)。 DrvQueryFontTree 返回指向结构的指针,定义从 Unicode 到字形句柄的映像或 字距调整对到字距调整句柄的映像。这个函数被所有处理字 体的驱动程序请求
DrvQuery FontTree I函数允许GDI获得指向由下列之一定义的树结构的指针: 从 Uni code到字形句柄的映像,包括字形变量( GDI FD_ GLYPHSET结构) 字距调整对到字距调整句柄的映像( FD KERNINGPAIRS结构) DrvQuery FontTree请求尽力产生需要的结构,如果可能驱动程序要预先计算这些文 件。结构可以存储在资源或文件中。如果结构存储在文件中,装载或读取它们的理想模式是 调用 EngMapFontFile函数,把文件映像到存储器。因为这个文件没有加进交换文件,如果 需要存储器可置为可用的,这比打开和读取文件更有效 特别地,驱动程序在pid参数中返回一个标识。当 FD GLYPHSET结构或 FD KERNINGPAIRS结构的数组不再需要时,GDI把它传递到 DryFree函数,带一个返回指针。 依靠在驱动程序中存储器如何管理,pid能确定这个结构,确定结构如何分配,或什么都不 做 DryFree和 Drvdestroy Font都是可选函数。GDI调用 DryFree通知驱动程序指定的数 据结构不再需要。驱动程序不需要实现它,除非它为结构分配了存储器并且当相应的数据结 构被释放时需要通知。例如,如果数据与 FONTOBJ结构关联,删除要被推迟直到调用 Drv Destroy Font,因此不必要实现 DryFree DrvDestroy Font通知驱动程序字体实现不再需要,驱动程序可以释放它分配的任何数 据结构。GDI调用这个函数一次为字体生产者,一次为字体消费者。只有当字体实例被摧毁 时,驱动程序必须释放分配的资源,才需要实现它。 3.6.1.2字体驱动程序函数 下表列出了字体驱动程序要支持的其他几个函数。 函数 描述 DrvloadFontfile 指定用于创建字体实现的文件:驱动程序必须准备这些要使 用的文件。字体驱动程序请求这个函数 DrvQueryAdvanceWidths请求驱动程序为指定的字形集发送GDI符号增长宽度 DrvQuery FontCaps 向指定的缓冲区拷贝定义字体驱动程序能力的位的数组。 DrvQuery FontFile 依靠查询模式,返回字体文件或描述串中字体表面的数量。 字体驱动程序请求这个函数。 DrvQueryGlyphAttrs 请求关于字体字形的信息。 DrvUnloadFontfile 通知驱动程序不再需要字体文件,驱动程序可以进行必要的 清除操作。字体驱动程序请求这个函数。 GDI用一个特别的用来创建字体实现的文件调用 DrvloadFont file函数。这个函数只 由字体驱动程序请求。当调用 DrvloadFontfile函数时,驱动程序执行准备要使用的文件的 转换 DrvloadFont file返回一个唯一的标识,允许GDI使用一个GDI维护的字体使用表请 求正确的字体。一旦装入了字体,GDI不再调用装入相同的字体 当指定的字体文件不再需要时GDI调用 DryUnloadFont file drvUnloadFontfile函 数只由字体驱动程序请求。 DryUnloadfontfile引起删除所有的临时文件,分配的所有的系 统资源被释放。 GDI调用 DrvQueryFontFile函数返回驱动程序装入的字体文件的信息 DrvQuery FontFile只由字体驱动程序请求。要返回的信息的类型由iMde指定。如果 iMode 是 QFF DESCRIPTION,函数返回一个 Microsoft@ Windows nt@/ Windows@2000用来描述字
33 DrvQueryFontTree 函数允许 GDI 获得指向由下列之一定义的树结构的指针: ▪ 从 Unicode 到字形句柄的映像,包括字形变量(GDI FD_GLYPHSET 结构) ▪ 字距调整对到字距调整句柄的映像(FD_KERNINGPAIRS 结构) DrvQueryFontTree 请求尽力产生需要的结构,如果可能驱动程序要预先计算这些文 件。结构可以存储在资源或文件中。如果结构存储在文件中,装载或读取它们的理想模式是 调用 EngMapFontFile 函数,把文件映像到存储器。因为这个文件没有加进交换文件,如果 需要存储器可置为可用的,这比打开和读取文件更有效。 特别地,驱动程序在 pid 参 数 中 返 回 一 个标 识 。 当 FD_GLYPHSET 结构或 FD_KERNINGPAIRS 结构的数组不再需要时,GDI 把它传递到 DrvFree 函数,带一个返回指针。 依靠在驱动程序中存储器如何管理,pid 能确定这个结构,确定结构如何分配,或什么都不 做。 DrvFree 和 DrvDestroyFont 都是可选函数。GDI 调用 DrvFree 通知驱动程序指定的数 据结构不再需要。驱动程序不需要实现它,除非它为结构分配了存储器并且当相应的数据结 构被释放时需要通知。例如,如果数据与 FONTOBJ 结构关联,删除要被推迟直到调用 DrvDestroyFont,因此不必要实现 DrvFree。 DrvDestroyFont 通知驱动程序字体实现不再需要,驱动程序可以释放它分配的任何数 据结构。GDI 调用这个函数一次为字体生产者,一次为字体消费者。只有当字体实例被摧毁 时,驱动程序必须释放分配的资源,才需要实现它。 3.6.1.2 字体驱动程序函数 下表列出了字体驱动程序要支持的其他几个函数。 函数 描述 DrvLoadFontFile 指定用于创建字体实现的文件;驱动程序必须准备这些要使 用的文件。字体驱动程序请求这个函数。 DrvQueryAdvanceWidths 请求驱动程序为指定的字形集发送 GDI 符号增长宽度。 DrvQueryFontCaps 向指定的缓冲区拷贝定义字体驱动程序能力的位的数组。 DrvQueryFontFile 依靠查询模式,返回字体文件或描述串中字体表面的数量。 字体驱动程序请求这个函数。 DrvQueryGlyphAttrs 请求关于字体字形的信息。 DrvUnloadFontFile 通知驱动程序不再需要字体文件,驱动程序可以进行必要的 清除操作。字体驱动程序请求这个函数。 GDI 用一个特别的用来创建字体实现的文件调用 DrvLoadFontFile 函数。这个函数只 由字体驱动程序请求。当调用 DrvLoadFontFile 函数时,驱动程序执行准备要使用的文件的 转换。 DrvLoadFontFile 返回一个唯一的标识,允许 GDI 使用一个 GDI 维护的字体使用表请 求正确的字体。一旦装入了字体,GDI 不再调用装入相同的字体。 当指定的字体文件不再需要时 GDI 调用 DrvUnloadFontFile。DrvUnloadFontFile 函 数只由字体驱动程序请求。DrvUnloadFontFile 引起删除所有的临时文件,分配的所有的系 统资源被释放。 GDI 调 用 DrvQueryFontFile 函 数 返 回 驱 动 程 序 装 入 的 字 体 文 件 的 信 息 。 DrvQueryFontFile 只由字体驱动程序请求。要返回的信息的类型由 iMode 指定。如果 iMode 是 QFF_DESCRIPTION,函数返回一个 Microsoft Windows NT/Windows 2000 用来描述字
体文件的字符串。如果 iNode是 QFF NUMFACES,函数返回字体文件中表面的数量。表面由 一个范围是1到表面数量的索引标识。 3.6.1.3 True Type字体驱动程序函数 TrueType字体驱动程序必须支持下表列出的函数。 函数 描述 DrvGetTrueTypeFile 给定GDI有效访问存储器映像的 True Type字体文件 DrvQuery True TypeOutline用本地的 TrueType格式返回字形句柄。 DrvQuery True TypeTable给定GDI用 True Type字体文件格式访问指定的文件 所有这些函数给GDI提供有关 True Type字体文件的信息。 DrvQuery True TypeAble给 定GDI用 TrueType字体文件格式访问指定的表。 DrvQuery True TypeOutline必须用本地的 True Type格式给GDI发送字形轮廓。 DrvGetTrue TypeFile给GDI返回 True Type驱动程序的 私有入口点,允许GDI有效访问存储器映像的 True Type字体文件 3.6.2绘制文本 如果驱动程序在 EngAssociateSurface函数中挂起调用,文本输出函数只为设备管理 的表面(设备位图或表面)或GDI管理的表面调用。主要为文本的图形输出函数是 DryTextout 和 DrvGetGlyphMode GDⅠ调用 DryTextout为文本输出在指定的位置绘制一系列字形的像素。 DrvTextout 的许多功能用 DEVINFO结构的 GXAPS位定义,它由 Dry Enablepdev函数返回。 DryTextout的输入参数定义两个像素集, foreground和 opaque 驱动程序绘制表面提供下列结果 1.首先使用不透明的画刷绘制不透明的像素 2.然后用前景画刷绘制前景像素 每个绘图操作在裁减区内进行。裁减区外的像素不受影响 驱动程序必须绘制表面,要首先使用不透明画刷在表面上计算和绘制不透明像素。然 后用前景画刷计算和绘制前景像素。每个操作都由裁减进行限制 前景和不透明像素通过画在表面上的颜色构造一个掩码。字体的字形本身没有颜色 前景像素集定义为字形的像素和某些额外的矩形的像素,用来模拟删除线和下划线。不透明 像素由不透明矩形定义。 Drytextout使用一个指针pfo选择指定的字体,查询当前的 FONTOBJ结构。这个过程 包括下载一个软字体或字体替换,或者任何其他的对设备需要的字体优化。 如果驱动程序有可升级的字体,它要为当前的 FONTOBJ结构调用 FONTOBJ pxoGetXform 函数,为相关的字体返回抽象到设备的转换。它为驱动程序支持的字体请求的。抽象空间是 设备字体的设计空间。例如, PostScript字体用1000乘1000单位字符单元定义。在 IFIMETRICS结构里返回的大多数规格转换到抽象空间,这说明为什么抽象到设备的转换是 必要的 图形引擎通过调用 DrvGetglyphMode函数查询驱动程序,寻找在内部如何缓存字体信 息。独立的字形可以缓存为位图、轮廓或其他(设备字体合适的选择)
34 体文件的字符串。如果 iMode 是 QFF_NUMFACES,函数返回字体文件中表面的数量。表面由 一个范围是 1 到表面数量的索引标识。 3.6.1.3 TrueType 字体驱动程序函数 TrueType 字体驱动程序必须支持下表列出的函数。 函数 描述 DrvGetTrueTypeFile 给定 GDI 有效访问存储器映像的 TrueType 字体文件。 DrvQueryTrueTypeOutline 用本地的 TrueType 格式返回字形句柄。 DrvQueryTrueTypeTable 给定 GDI 用 TrueType 字体文件格式访问指定的文件。 所有这些函数给 GDI 提供有关 TrueType 字体文件的信息。DrvQueryTrueTypeTable 给 定 GDI 用 TrueType 字体文件格式访问指定的表。DrvQueryTrueTypeOutline 必须用本地的 TrueType 格式给 GDI 发送字形轮廓。DrvGetTrueTypeFile 给 GDI 返回 TrueType 驱动程序的 私有入口点,允许 GDI 有效访问存储器映像的 TrueType 字体文件。 3.6.2 绘制文本 如果驱动程序在 EngAssociateSurface 函数中挂起调用,文本输出函数只为设备管理 的表面(设备位图或表面)或 GDI 管理的表面调用。主要为文本的图形输出函数是 DrvTextOut 和 DrvGetGlyphMode。 GDI 调用 DrvTextOut 为文本输出在指定的位置绘制一系列字形的像素。DrvTextOut 的许多功能用 DEVINFO 结构的 GXAPS 位定义,它由 DrvEnablePDEV 函数返回。 DrvTextOut 的输入参数定义两个像素集,foreground 和 opaque。 驱动程序绘制表面提供下列结果: 1.首先使用不透明的画刷绘制不透明的像素。 2.然后用前景画刷绘制前景像素。 每个绘图操作在裁减区内进行。裁减区外的像素不受影响。 驱动程序必须绘制表面,要首先使用不透明画刷在表面上计算和绘制不透明像素。然 后用前景画刷计算和绘制前景像素。每个操作都由裁减进行限制。 前景和不透明像素通过画在表面上的颜色构造一个掩码。字体的字形本身没有颜色。 前景像素集定义为字形的像素和某些额外的矩形的像素,用来模拟删除线和下划线。不透明 像素由不透明矩形定义。 DrvTextOut 使用一个指针 pfo 选择指定的字体,查询当前的 FONTOBJ 结构。这个过程 包括下载一个软字体或字体替换,或者任何其他的对设备需要的字体优化。 如果驱动程序有可升级的字体,它要为当前的FONTOBJ结构调用FONTOBJ_pxoGetXform 函数,为相关的字体返回抽象到设备的转换。它为驱动程序支持的字体请求的。抽象空间是 设备字体的设计空间。例如,PostScript 字体用 1000 乘 1000 单位字符单元定义。在 IFIMETRICS 结构里返回的大多数规格转换到抽象空间,这说明为什么抽象到设备的转换是 必要的。 图形引擎通过调用 DrvGetGlyphMode 函数查询驱动程序,寻找在内部如何缓存字体信 息。独立的字形可以缓存为位图、轮廓或其他(设备字体合适的选择)
第2部分显示器和视频微端口驱动程序 第1章 显示器介绍 第2章 显示器驱动程序 第3章 DirectDraw DDI 第4章 Direct 3D DDI 第5章 Mini客户端驱动程序 视频微端口驱动程序 第1章显示器介绍 运行在 Windows nto/ Windows@2000上的图像适配器要求一对显示器驱动程序和视 频微端口驱动程序。这一章介绍这些驱动程序并提供有关这两方面的信息。 Microsoft@ Windows⑧2000DK提供了支持标准图形卡的显示器和视频微端口驱动 程序的例子。 1.1显示器体系结构 图1.1显示了 Windows2000上显示器要求的部件 图1.1 Windows2000显示器子系统 图1.1中带阴影的元素是 Windows2000提供的服务。未带阴影的元素指示请求了第 三方显示器驱动程序和视频微端口驱动程序,使图形适配器在 Windows2000系统中显示。 对每种可以和 Windows nt@/ Windows@2000一起使用的图形卡,必须具有显示器驱 动程序和相应的视频微端口驱动程序。微端口驱动程序是特别为一种图形适配器(或适配器 家族)编写的。显示器驱动程序可以为共享一个公共的绘图接口的任意多个适配器编写:例 如,VGA显示器驱动程序可以与VGA或ET4000微端口驱动程序一起使用。这是因为显示器 驱动程序进行绘制,而微端口驱动程序执行诸如模式设置的操作并给驱动程序提供有关硬件 的信息。也可能有多个显示器驱动程序和一个特别的微端口驱动程序一起工作;例如,16 和256色的SVGA显示器驱动程序可以使用同一个微端口驱动程序 下面几节描述显示器和视频微端口驱动程序的主要职责。职责的分解是不严格的;主 要在模块性和性能之间平衡。例如,VGA驱动程序的硬件指针代码驻留在微端口驱动程序中。 这促进了模块化,同一个显示器驱动程序能够处理具有硬件指针的 Vedio seven vram以及 没有硬件指针的ET4000
35 第 2 部分 显示器和视频微端口驱动程序 第1章 显示器介绍 第2章 显示器驱动程序 第3章 DirectDraw DDI 第4章 Direct3D DDI 第5章 Mini 客户端驱动程序 第6章 视频微端口驱动程序 第 1 章 显示器介绍 运行在 Windows NT/Windows 2000 上的图像适配器要求一对显示器驱动程序和视 频微端口驱动程序。这一章介绍这些驱动程序并提供有关这两方面的信息。 Microsoft Windows 2000 DDK 提供了支持标准图形卡的显示器和视频微端口驱动 程序的例子。 1.1 显示器体系结构 图 1.1 显示了 Windows 2000 上显示器要求的部件。 图 1.1 Windows 2000 显示器子系统 图 1.1 中带阴影的元素是 Windows 2000 提供的服务。未带阴影的元素指示请求了第 三方显示器驱动程序和视频微端口驱动程序,使图形适配器在 Windows 2000 系统中显示。 对每种可以和 Windows NT/Windows 2000 一起使用的图形卡,必须具有显示器驱 动程序和相应的视频微端口驱动程序。微端口驱动程序是特别为一种图形适配器(或适配器 家族)编写的。显示器驱动程序可以为共享一个公共的绘图接口的任意多个适配器编写;例 如,VGA 显示器驱动程序可以与 VGA 或 ET4000 微端口驱动程序一起使用。这是因为显示器 驱动程序进行绘制,而微端口驱动程序执行诸如模式设置的操作并给驱动程序提供有关硬件 的信息。也可能有多个显示器驱动程序和一个特别的微端口驱动程序一起工作;例如,16 和 256 色的 SVGA 显示器驱动程序可以使用同一个微端口驱动程序。 下面几节描述显示器和视频微端口驱动程序的主要职责。职责的分解是不严格的;主 要在模块性和性能之间平衡。例如,VGA 驱动程序的硬件指针代码驻留在微端口驱动程序中。 这促进了模块化,同一个显示器驱动程序能够处理具有硬件指针的 Vedio Seven VRAM 以及 没有硬件指针的 ET4000