Nota, que hace deben considerar Precisamente lo que quiere decir con centrado vertical.
Las fuentes se representan en una línea de base, ejecutándose a lo largo de la parte inferior del texto. El espacio vertical se asigna de la siguiente manera:
---
^
| leading
|
--
^ Y Y
| Y Y
| Y Y
| ascent Y y y
| Y y y
| Y y y
-- baseline ______Y________y_________
| y
v descent yy
--
El encabezado es simplemente el espacio recomendado entre las líneas de la fuente. Con el objetivo de centrar verticalmente entre dos puntos, debe ignorar el encabezado (es el encabezado, por cierto, no leeding, en general tipografía es/fue el espacio de plomo insertado entre las líneas en una placa de impresión).
Así que para el centrado de los ascendentes y descendentes de texto, desea que el
baseline=(top+((bottom+1-top)/2) - ((ascent + descent)/2) + ascent;
Sin el final "+ ascenso", que tiene la posición de la parte superior de la fuente; por lo tanto, agregar el ascenso va desde la parte superior a la línea de base.
Además, tenga en cuenta que la altura de la fuente debe incluir inicial, pero algunas fuentes no la incluyen, y debido a las diferencias de redondeo, la altura de la fuente puede no ser igual (avance + ascenso + descenso).
Oh wow, Esa es una explicación perfecta. ¡Muchas gracias! (también para la explicación de liderar, no lo sabía) – brimborium
¿Por qué estás agregando 1? – Max
@Alex: Porque (abajo + 1-arriba) es la altura; si la parte inferior y la superior son iguales, la altura es uno, no cero.El efecto neto es redondear hacia abajo en el caso de que el punto medio sea n.5 píxeles. –