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 |
---|---|
|
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). |
|
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.)
Nessas fórmulas, gama = 2,33 e b[k] é a kth fração de mesclagem, obtida da seguinte maneira:
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) |