CRITICAL_SECTION;
IF_NOT_CONSTRUCTED(return -1);
- int pcAscender = _pNativeFont->GetAscender().ToInt();
+ int pcAscender = _DoubleToIntForPos(ceil(_pNativeFont->GetAscender().ToDouble()));
+
+ for (int i = pcAscender; i < INT_MAX; i++)
+ {
+ if (_ResUtil::ConvertToPhyCoord(_ResUtil::ConvertToVirCoordY(i)) >= pcAscender)
+ {
+ pcAscender = i;
+ break;
+ }
+ }
+
int vcAscender = _ResUtil::ConvertToVirCoordY(pcAscender);
return vcAscender;
CRITICAL_SECTION;
IF_NOT_CONSTRUCTED(return -1.0f);
- float pcAscender = _pNativeFont->GetAscender().ToFloat();
+ float pcAscender = float(ceil(_pNativeFont->GetAscender().ToDouble()));
float vcAscender = _ResUtil::ConvertToVirCoordY(pcAscender);
return vcAscender;
CRITICAL_SECTION;
IF_NOT_CONSTRUCTED(return -1);
- int pcDescender = _pNativeFont->GetDescender().ToInt();
- int vcDescender = _ResUtil::ConvertToVirCoordY(pcDescender);
+ int pcDescender = _DoubleToIntForPos(ceil(_pNativeFont->GetDescender().ToDouble()));
- if (vcDescender < 0)
+ if (pcDescender < 0)
{
- vcDescender *= -1;
+ pcDescender *= -1;
}
+ for (int i = pcDescender; i < INT_MAX; i++)
+ {
+ if (_ResUtil::ConvertToPhyCoord(_ResUtil::ConvertToVirCoordY(i)) >= pcDescender)
+ {
+ pcDescender = i;
+ break;
+ }
+ }
+
+ int vcDescender = _ResUtil::ConvertToVirCoordY(pcDescender);
+
return vcDescender;
}
CRITICAL_SECTION;
IF_NOT_CONSTRUCTED(return -1.0f);
- float pcDescender = _pNativeFont->GetDescender().ToFloat();
+ float pcDescender = float(ceil(_pNativeFont->GetDescender().ToDouble()));
float vcDescender = _ResUtil::ConvertToVirCoordY(pcDescender);
if (vcDescender < 0.0f)