다음을 통해 공유


FONTOBJ 구조체(winddi.h)

FONTOBJ 구조체는 글꼴의 특정 instance 대한 정보에 대한 액세스 권한을 드라이버에 제공하는 데 사용됩니다.

구문

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;

멤버

iUniq

글꼴의 고유한 실현을 지정합니다. 이 값은 드라이버에서 캐시되었을 수 있는 GDI 글꼴을 식별하거나 드라이버의 자체 글꼴 실현을 식별하는 데 사용할 수 있습니다. 이 멤버가 GDI 글꼴에 대해 0이면 글꼴을 캐시해서는 안 됩니다.

iFace

DrvQueryFont 호출에 의해 등록된 디바이스 글꼴의 디바이스 인덱스를 지정합니다. 글꼴이 GDI 글꼴인 경우 이 멤버는 GDI에만 의미가 있으며 드라이버는 이를 무시해야 합니다.

cxMax

지정된 글꼴에서 가장 큰 문자 모양 너비를 픽셀 단위로 지정합니다.

flFontType

글꼴의 형식을 지정하는 값입니다. 이 멤버는 다음 표에 나열된 플래그의 조합일 수 있습니다. 그러나 FO_GRAY16 및 FO_NOGRAY16 함께 사용할 수 없습니다.

플래그 의미
FO_CFF Postscript OpenType 글꼴입니다.
FO_DBCS_FONT Font는 DBCS 코드 페이지를 지원합니다.
FO_EM_HEIGHT TrueType 드라이버 내부 플래그입니다.
FO_GRAY16 글꼴 비트맵은 픽셀당 4비트 혼합(알파) 값입니다.
FO_MULTIPLEMASTER 여러 마스터(Type1 또는 OpenType) 글꼴입니다.
FO_NOGRAY16 글꼴 드라이버가 특정 글꼴을 인식할 수 없거나 회색조로 표시할 수 없음을 나타냅니다.
FO_POSTSCRIPT Postscript(Type1 또는 OpenType) 글꼴입니다.
FO_SIM_BOLD 드라이버 시뮬레이션 굵은 글꼴입니다.
FO_SIM_ITALIC 드라이버 시뮬레이션 기울임꼴 글꼴입니다.
FO_TYPE_DEVICE 디바이스별 글꼴입니다.
FO_TYPE_OPENTYPE OpenType 글꼴입니다.
FO_TYPE_RASTER 비트맵 글꼴입니다.
FO_TYPE_TRUETYPE TrueType 글꼴입니다.
FO_VERT_FACE 세로 글꼴입니다.
 

FO_RASTER 플래그가 설정되면 지정된 STROBJ 구조체에 기록된 문자 모양이 비트맵이고, 그렇지 않으면 PATHOBJ 구조체에 대한 포인터입니다. 문자 모양 이미지가 PATHOBJ 구조체 형태로 반환되는 경우 드라이버는 연결된 IFIMETRICS 구조체의 flInfo 멤버의 FM_INFO_TECH_STROKE 플래그를 검사해야 합니다. 해당 플래그가 설정되면 경로를 스트로크해야 합니다. 그렇지 않으면 교대 모드 규칙을 사용하여 경로를 채워야 합니다.

FO_GRAY16 플래그가 설정되면 글꼴 비트맵은 픽셀당 4비트 혼합(알파) 값입니다. 값이 0이면 결과 픽셀의 색이 배경과 같아야 합니다. 알파 값이 k이면 다음 표에서는 선형 알파 혼합 또는 감마 수정 알파 혼합을 사용하여 결과 픽셀의 특성을 설명합니다. 두 메서드 모두에서 전경 및 배경색은 각각 cf 및 cb입니다.

픽셀 특성 Description
혼합 색
(선형 알파 혼합)
선형 알파 혼합은 전경색과 배경색의 선형 조합인 혼합된 색을 생성합니다.

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

혼합 분수 b는 다음과 같이 가져옵니다.

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

참고: 전경색과 배경색에는 세 가지 색 채널(R, G, B)이 모두 포함됩니다.

혼합 색
(감마 수정 알파 혼합)
감마 수정 알파 혼합은 알파 값에 따라 달라지는 변수를 고정된 전력으로 발생시켜 혼합된 색을 생성합니다.

두 개의 수식이 제공됩니다. 하나는 전경색이 배경색보다 숫자로 클 때 사용해야 합니다. 다른 은 반대의 경우에 사용해야 합니다. 전경색과 배경색이 같으면 두 수식이 모두 c = cb로 단순화됩니다.

cf> cb인 경우
c = cb + pow(b[k], (1 / 감마)) * (cf - cb)
cf< cb인 경우
c = cb + (1 - pow(1 - b[k], 1 / 감마)) * (cf - cb)

이러한 수식에서 감마 = 2.33 및 b[k]는 다음과 같이 얻은 k번째 혼합 분수입니다.

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

참고: 선형 알파 혼합과 달리 이러한 수식은 세 가지 색 채널(R, G, B) 에 각각 적용되어야 합니다.

 

GDI는 글꼴을 16개 값 중 하나로 회색조로 지정하도록 요청할 때 DrvQueryFontData 함수에 대한 항목에서 FO_GRAY16 플래그를 설정합니다. 글꼴 드라이버가 특정 글꼴 실현을 회색으로 표시할 수 없는 경우 글꼴 공급자는 FO_GRAY16 플래그를 지우고 FO_NOGRAY16 플래그를 설정하여 회색 크기 조정 요청이 충족되지 않는다는 것을 GDI에 알릴 수 있습니다.

iTTUniq

연결된 TrueType 파일을 지정합니다. TrueType 글꼴 얼굴의 두 개의 개별 지점 크기 실현에는 동일한 iTTUniq 값을 공유하는 FONTOBJ 구조체가 있지만 iUniq 값은 다릅니다. TrueType 글꼴 형식만 0이 아닌 iTTUniq 멤버를 가질 수 있습니다. 자세한 내용은 flFontType을 참조하세요.

iFile

이미 로드된 디바이스 글꼴의 드라이버 정의 값에 대한 포인터입니다. 글꼴이 GDI 글꼴인 경우 이 멤버는 내부적으로 글꼴을 식별하는 데 사용되며 무시되어야 합니다.

sizLogResPpi

이 글꼴이 실현되는 디바이스의 해상도를 지정합니다.

ulStyleSize

글꼴 instance 스타일 크기를 포인트 단위로 지정합니다.

pvConsumer

이 글꼴 instance 연결된 소비자가 할당한 데이터에 대한 포인터입니다. 소비자는 문자 모양 정보를 텍스트 출력 생성을 위한 입력으로 허용하는 드라이버입니다. 글꼴 소비자만 이 멤버를 수정할 수 있습니다. 이 글꼴의 소비자는 이 멤버가 가리키는 위치에 모든 정보를 저장할 수 있습니다. 엔진은 이 멤버를 수정하지 않습니다. pvConsumer 멤버는 FONTOBJ 구조체가 소비자에게 처음 전달될 때 null이 되도록 보장됩니다.

pvProducer

이 글꼴 instance 연결된 생산자 할당 데이터에 대한 포인터입니다. 생산자는 문자 모양 정보를 출력으로 생성할 수 있는 드라이버입니다. 여기에는 문자 모양 메트릭, 비트맵 및 개요가 포함됩니다. 글꼴 생산자만 이 멤버를 수정할 수 있습니다. 이 글꼴의 생산자는 이 멤버가 가리키는 위치에 모든 정보를 저장할 수 있습니다. 엔진은 이 멤버를 수정하지 않습니다. pvProducer 멤버는 FONTOBJ 구조체가 생산자에게 처음 전달될 때 null이 되도록 보장됩니다.

설명

가속기로서 드라이버는 FONTOBJ 구조체의 공용 멤버에 액세스할 수 있습니다.

드라이버는 생산자와 소비자 모두일 수 있습니다. 예를 들어 프린터 드라이버는 드라이버 제공 DrvQueryFontData 함수에 대한 호출을 처리하는 동안 생산자 역할을 하여 문자 모양 메트릭을 제공하고 나중에 드라이버 제공 DrvTextOut 함수에 대한 호출을 처리하는 동안 소비자 역할을 할 수 있습니다.

요구 사항

요구 사항
헤더 winddi.h(Winddi.h 포함)

추가 정보

DrvDestroyFont

DrvGetGlyphMode

DrvQueryFont

DrvQueryTrueTypeOutline

FONTOBJ_cGetAllGlyphHandles

FONTOBJ_cGetGlyphs

FONTOBJ_pifi

FONTOBJ_pxoGetXform

FONTOBJ_vGetInfo

IFIMETRICS