비트 맵 글꼴 렌더러를 만들려고 시도하지만 실제 개별 문자 배치를 렌더링하는 데 문제가 있습니다.비트 맵 글꼴 렌더링 및 커닝
GetCharABCWidthsFloat 및 GetTextMetricsW를 통해 글꼴 문자 정보를 얻지 만 ABC 너비를 올바르게 사용하는 방법이 확실하지 않거나 추가 정보가 필요합니까?
FreeType 또는 다른 라이브러리를 사용하고 싶지 않습니다. C++ \ Windows를 통해 제공되는 표준 기능으로이 작업을 수행하려고합니다.
커닝 정보가 없으면 글자가 올바르게 표시되지 않습니다. 예를 들어, "f"와 "t"가 서로 옆에 배치되면 "Times new roman"을보십시오. 올바른 문자 간격이 없으면 너무 멀리 보입니다. 알고리즘의 예는 --- 여기
float letterBottomLeftX = 0.0f;
float letterHeight = 1.0f;
float letterWidth = 1.0f;
float scale = 1.0f;
for(U32 c = 0; c < numberOfCharacters; ++c)
{
fon->GetCharcterInfo(charValue, charInfo);
//float advancedWith = (charInfo.A * scale) + (charInfo.B * scale) + (charInfo.C * scale);
letterWidth = charInfo.B * scale;
letterHeight = textMetrics.Height * scale;
if(c == 0)
{
letterBottomLeftX = -(charInfo.A * scale);
}
// vertex placement, beginning at letterBottomLeftX
// texture placement
// index placement
letterBottomLeftX += (charInfo.A + charInfo.B + charInfo.C) * scale;
}
는 어떻게 생겼는지, 당신은 문자 사이의 나쁜 간격을 알 수있는 예입니다. (텍스쳐 UV를 무시하고, 글자 배치가 정확 해지면 바로 잡을 것입니다.)
http://img88.imageshack.us/img88/4015/njpjp2.png
아무도 아이디어가 없습니까? – jack
비트 맵 글꼴 렌더러를 작성한 사람이 있습니까? – jack