Windows API选择粗体字体

时间:2012-07-10 00:01:20

标签: c++ windows fonts gdi uniscribe

我正在尝试编写一些代码来选择粗体字体(我实际上想要将字体文件名发送到跨平台字体渲染器,但这不太相关)。我使用CreateFont()将cWeight设置为FW_BOLD,将pszFaceName设置为“Arial”。我将此字体选择为DC并使用GetTextFace()来检查实际选择的字体。结果是Arial。我很惊讶,字体不是Arial Bold,这是一个单独的面,有不同的字体文件。指定Arial Bold字体的唯一方法是将pszFaceName设置为“Arial Bold”。不幸的是,简单地将Bold附加到字体名称的末尾仅适用于某些字体,因为某些字体没有单独的粗体字体。

是否有任何通用的方法来指定粗体,以确保返回字体的实际粗体版本?

由于

菲尔

1 个答案:

答案 0 :(得分:2)

这不是它的工作方式,Windows字体映射器不会替换面部名称。 “Arial Bold”不是标准字体,也不与标准“Arial”字体有任何关系。如果你想使用它,那么你将不得不要求它。

使用FW_BOLD请求“Arial”选择c:\ windows \ fonts \ arialbd.ttf字体文件。一个明确设计用于呈现粗体arial的字体文件。面部名称为“Arial”。同样,ariali.ttf提供斜体版本,arialbi.ttf提供粗体斜体版本,arial.ttf是正常版本。