Приведенный ниже код хорош для большинства случаев, но в некоторых шрифтах подъемы и спуски расположены слишком близко к верхней и нижней линиям.
Картинка описания Ascent and Descent:

Вы можете увидеть это здесь. Вот как это выглядит при увеличении 200%. Даже при этом вы можете видеть, что он выглядит очень близко.
Выглядит почти касающимся линии:

Только при увеличении масштаба 1600% вы можете увидеть достаточный зазор. Потому что эти PDF-файлы будут распечатаны и могут увеличиваться или уменьшаться.
Но при масштабировании достаточно места:

Я хочу проверить и настроить в соответствии с этим. Мне нужно быть настолько точным, потому что эти буквы, которые будут использоваться в счетах-фактурах, могут иметь шрифты большего/меньшего размера, изменение высоты строк и все такое, что испортит их внешний вид.
В настоящее время для этого я использую приведенный ниже код:
public bool FitsToTheLine(PdfRectangle textLineRectangle, PdfRectangle overAllRectangle, double lineHeight)
{
double lineBottom = textLineRectangle.TopLeft.Y - lineHeight;
double lineTop = textLineRectangle.TopLeft.Y;
double lineLeft = textLineRectangle.BottomLeft.X;
double lineRight = textLineRectangle.BottomRight.X;
double bottomYLimit = overAllRectangle.BottomLeft.Y;
double topYLimit = overAllRectangle.TopLeft.Y;
double xStartLimit = overAllRectangle.BottomLeft.X;
double xFinishLimit = overAllRectangle.BottomRight.X;
bool tooLow = lineBottom < bottomYLimit;
bool tooHigh = lineTop > topYLimit;
bool tooLeft = lineLeft < xStartLimit;
bool tooRight = lineRight > xFinishLimit;
if (tooLow || tooHigh || tooLeft || tooRight)
{
return false;
}
return true;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... d-descents
Мобильная версия