О линиях внутри строк текста
я вот что подумал: для того, чтобы говорить о символах, нам наверно нужно научиться разговаривать на одном языке и понимать хоть какие типографические термины.
сейчас будет картинка, которую я сделал на досуге. ну и пояснение небольшое.

есть три самые важные линии: базовая (baseline), линия строчных (median) и линия прописных (cap line). все буквы в шрифте равняются на них.
но равняются — не значит механистически зажаты между ними. шрифтовики очень бережно относятся ко всяким оптическим иллюзиям наших поломанных мозгов: например к тому, что круг и квадрат одинаковой высоты будут ощущаться фигурами разного размера. или что белое в чёрном будет выглядеть большим, чем чёрное в белом.



поэтому шрифтовики придумывают разного сорта оптические компенсации. например, круглые части букв чутка вылезают за границы своих линий.

ещё две важные линии — линии выносных элементов (ascender & descender lines). по расстоянию между ними (em-square) определяется кегль шрифта (font size).

последние линии, для которых я не знаю названия на русском — ascent & descent. можно назвать их границами, за которые не вылезут абсолютное большинство символов, даже Ñ и |.
однако за их границы часто вылезает буква Ǻ (латинская А с кружком и акутом сверху) и всякие извращения с комбинирующимися символами типа z̶̽ä̵l̴̚g̶̛o̵͐-текста. „р“ с цедилью снизу в Ox p̧ul... я тоже придумал, потому что не нашел настолько свисающих символов среди настоящих. даже «игрек с точкой снизу» рисуют как ỵ

ascent & descent ограничивают собой bounding box — по сути тот прямоугольник, который появится при выделении текста мышкой.
отношение bounding box к em-square отличается от шрифта к шрифту, что может быть проблемой. если вы в массиве текста замените шрифт у одного слова, строку может раздуть. это происходит потому, что bounding box у этого слова теперь большего размера, чем в остальном тексте. строкам приходится подстраиваться под него, чтобы ничего не обрезалось или не налезло друг на друга.

а на сегодня всё.