Estrutura FONTOBJ (winddi.h)

A estrutura FONTOBJ é usada para dar a um driver acesso a informações sobre uma instância específica de uma fonte.

Sintaxe

typedef struct _FONTOBJ {
  ULONG     iUniq;
  ULONG     iFace;
  ULONG     cxMax;
  FLONG     flFontType;
  ULONG_PTR iTTUniq;
  ULONG_PTR iFile;
  SIZE      sizLogResPpi;
  ULONG     ulStyleSize;
  PVOID     pvConsumer;
  PVOID     pvProducer;
} FONTOBJ;

Membros

iUniq

Especifica uma realização distinta da fonte. Esse valor pode ser usado pelo driver para identificar uma fonte GDI que ele pode ter armazenado em cache ou para identificar a realização de um driver de sua própria fonte. Se esse membro for zero para uma fonte GDI, a fonte não deverá ser armazenada em cache.

iFace

Especifica o índice do dispositivo para uma fonte de dispositivo, que foi registrada por uma chamada para DrvQueryFont. Se a fonte for uma fonte GDI, esse membro terá significado apenas para GDI e o driver deverá ignorá-la.

cxMax

Especifica a largura, em pixels, do maior glifo na fonte especificada.

flFontType

É um valor que especifica o tipo da fonte. Esse membro pode ser uma combinação dos sinalizadores listados na tabela a seguir. (Observe, no entanto, que FO_GRAY16 e FO_NOGRAY16 são mutuamente exclusivos.)

Sinalizador Significado
FO_CFF Fonte OpenType postscript.
FO_DBCS_FONT A fonte dá suporte a páginas de código DBCS.
FO_EM_HEIGHT Sinalizador interno do driver TrueType.
FO_GRAY16 Bitmaps de fonte são valores de combinação de quatro bits por pixel (alfa).
FO_MULTIPLEMASTER Fonte Vários Mestres (Type1 ou OpenType).
FO_NOGRAY16 Indica que o driver de fonte não pode (ou não fará) dimensionamento de cinza em uma determinada realização de fonte.
FO_POSTSCRIPT Fonte Postscript (Type1 ou OpenType).
FO_SIM_BOLD Fonte em negrito simulada pelo driver.
FO_SIM_ITALIC Fonte itálica simulada pelo driver.
FO_TYPE_DEVICE Fonte específica do dispositivo.
FO_TYPE_OPENTYPE Fonte OpenType.
FO_TYPE_RASTER Fonte bitmap.
FO_TYPE_TRUETYPE Fonte TrueType.
FO_VERT_FACE Fonte vertical.
 

Se o sinalizador FO_RASTER estiver definido, os glifos gravados na estrutura STROBJ especificada serão bitmaps, caso contrário, serão ponteiros para estruturas PATHOBJ. Se as imagens de glifo forem retornadas na forma de estruturas PATHOBJ, o driver deverá inspecionar o sinalizador FM_INFO_TECH_STROKE do membro flInfo da estrutura IFIMETRICS associada. Se esse sinalizador estiver definido, os caminhos deverão ser traçados, caso contrário, os caminhos deverão ser preenchidos usando a convenção de modo alternado.

Se o sinalizador FO_GRAY16 estiver definido, os bitmaps de fonte serão valores de combinação de quatro bits por pixel (alfa). Um valor zero significa que o pixel resultante deve ter a mesma cor que a tela de fundo. Se o valor alfa for k, a tabela a seguir descreverá os atributos do pixel resultante, usando a mesclagem alfa linear ou a mesclagem alfa corrigida por gama. Em ambos os métodos, as cores de primeiro plano e de plano de fundo são, respectivamente, cf e cb.

Atributo Pixel Descrição
Cor combinada
(mesclagem alfa linear)
A mesclagem alfa linear produz uma cor combinada que é uma combinação linear das cores de primeiro plano e de plano de fundo.

c = b * cf + (1 - b) * cb

A fração blend, b, é obtida da seguinte maneira:

b = k / 15, para k = 0, 1, 2, ..., 15

Observação: as cores de primeiro plano e plano de fundo incluem todos os três canais de cores (R, G, B).

Cor combinada
(mesclagem alfa corrigida por gama)
A mesclagem alfa corrigida por gama produz uma cor combinada gerando uma variável que depende do valor alfa para uma potência fixa.

Duas fórmulas são fornecidas: uma deve ser usada quando a cor de primeiro plano é numericamente maior que a cor da tela de fundo; o outro deve ser usado no caso oposto. (Quando as cores de primeiro plano e de plano de fundo são iguais, ambas as fórmulas simplificam para c = cb.)

Se cf> cb,
c = cb + pow(b[k], (1 / gama)) * (cf - cb)
Se cf< cb,
c = cb + (1 - pow(1 - b[k], 1 / gama)) * (cf - cb)

Nessas fórmulas, gama = 2,33 e b[k] é a kth fração de mesclagem, obtida da seguinte maneira:

b[k] = 0, para k = 0 e
b[k] = (k + 1) / 16, para k = 1, 2, ..., 15

Observação: ao contrário da mesclagem alfa linear, essas fórmulas devem ser aplicadas a cada um dos três canais de cores (R, G, B).

 

A GDI define o sinalizador FO_GRAY16 na entrada para a função DrvQueryFontData quando solicita que uma fonte seja dimensionada em cinza para um dos 16 valores. Se o driver de fonte não puder dimensionar uma determinada realização de fonte, o provedor de fontes limpará o sinalizador FO_GRAY16 e definirá o sinalizador FO_NOGRAY16 para informar à GDI que a solicitação de dimensionamento de cinza não será atendida.

iTTUniq

Especifica o arquivo TrueType associado. Duas realizações de tamanho de ponto separadas de uma face de fonte TrueType terão estruturas FONTOBJ que compartilham o mesmo valor iTTUniq , mas terão valores iUniq diferentes. Somente tipos de fonte TrueType podem ter um membro iTTUniq diferente de zero. Para obter mais informações, consulte flFontType.

iFile

Ponteiro para um valor definido pelo driver para fontes de dispositivo que já estão carregadas. Se a fonte for uma fonte GDI, esse membro será usado internamente para identificar a fonte e deve ser ignorado.

sizLogResPpi

Especifica a resolução do dispositivo para o qual essa fonte é realizada.

ulStyleSize

Especifica o tamanho do estilo da instância de fonte, em pontos.

pvConsumer

Ponteiro para dados alocados pelo consumidor associados a essa instância de fonte. Um consumidor é um driver que aceita informações de glifo como entrada para gerar saída de texto. Somente um consumidor de fonte pode modificar esse membro. O consumidor dessa fonte pode armazenar qualquer informação no local apontado por esse membro. O mecanismo não modificará esse membro. O membro pvConsumer tem a garantia de ser nulo na primeira vez que uma estrutura FONTOBJ é passada para o consumidor.

pvProducer

Ponteiro para dados alocados pelo produtor associados a essa instância de fonte. Um produtor é um driver que pode produzir informações de glifo como saída; isso inclui métricas de glifo, bitmaps e estruturas de tópicos. Somente um produtor de fontes pode modificar esse membro. O produtor dessa fonte pode armazenar qualquer informação no local apontado por esse membro. O mecanismo não modificará esse membro. O membro pvProducer tem a garantia de ser nulo na primeira vez que uma estrutura FONTOBJ é passada ao produtor.

Comentários

Como acelerador, o driver tem permissão para acessar os membros públicos da estrutura FONTOBJ.

Um driver pode ser um produtor e um consumidor. Por exemplo, um driver de impressora pode atuar como um produtor durante o processamento de uma chamada para a função DrvQueryFontData fornecida pelo driver para fornecer métricas de glifo e, posteriormente, agir como um consumidor durante o processamento de uma chamada para a função DrvTextOut fornecida pelo driver.

Requisitos

Requisito Valor
Cabeçalho winddi.h (inclua Winddi.h)

Confira também

DrvDestroyFont

DrvGetGlyphMode

DrvQueryFont

DrvQueryTrueTypeOutline

FONTOBJ_cGetAllGlyphHandles

FONTOBJ_cGetGlyphs

FONTOBJ_pifi

FONTOBJ_pxoGetXform

FONTOBJ_vGetInfo

IFIMETRICS