android - studio - el lider que no tenia cargo pdf
Significado de arriba, ascenso, línea base, descenso, fondo y líder en FontMetrics de Android (2)
Esta parece una pregunta básica, pero no pude encontrar una similar en SO.
Mientras leía la
documentation
, tenía problemas para comprender los conceptos.
Quiero entender cuál es la diferencia entre la
top
y el
ascent
y también la
bottom
y el
descent
.
¿Y dónde está exactamente la línea de base?
¿Tienes un diagrama para ayudarme a visualizarlo?
Liderar NO es espacio entre líneas en la tipografía. Aparentemente, esto es algo que el código de Android no tiene en cuenta. Hemos estado luchando con esto nosotros mismos. La definición adecuada de liderazgo ( * ):
En tipografía, / / ˈlɛdɪŋ / se refiere a la distancia entre las líneas de base de líneas de tipo sucesivas. El término se originó en los días de la composición tipográfica a mano, cuando se insertaron finas tiras de plomo en las formas para aumentar la distancia vertical entre las líneas de tipografía.
Por lo que puedo decir, Android no tiene una forma de especificar esto.
Primero revisemos lo documentation la documentation :
- Arriba : la distancia máxima por encima de la línea de base para el glifo más alto en la fuente en un tamaño de texto dado.
- Ascenso : la distancia recomendada por encima de la línea de base para texto espaciado individual.
- Descenso : la distancia recomendada debajo de la línea de base para texto espaciado individual.
- Inferior : la distancia máxima por debajo de la línea de base para el glifo más bajo en la fuente en un tamaño de texto dado.
- Inicio : el espacio adicional recomendado para agregar entre líneas de texto.
Tenga en cuenta que la línea de base es de lo que se miden los primeros cuatro. Es la línea la que forma la base sobre la que se asienta el texto, aunque algunos caracteres (como g, y, j, etc.) pueden tener partes que van debajo de la línea. Es comparable a las líneas en las que escribe en un cuaderno rayado.
Aquí hay una imagen para ayudar a visualizar estas cosas:
Recuerde que al dibujar en un lienzo en Java y Android, bajar es un
aumento
en y y subir es una
disminución
en y.
Eso significa que la
top
y el
ascent
FontMetrics son números negativos, ya que se miden desde la línea de base (mientras que el descenso y la parte inferior son números positivos).
Por lo tanto, para obtener la distancia de
top
a
bottom
necesitaría hacer (
bottom
-
top
).
El
inicio
es la distancia entre la parte inferior de una línea y la parte superior de la siguiente.
En la imagen de arriba, es el espacio entre el naranja de la Línea 1 y el púrpura de la Línea 2. Como @MajorTom
señaló a continuación
, en tipografía el término se define más apropiadamente como "la distancia entre las líneas de base de líneas de tipo sucesivas".
*
Sin embargo, Android parece usar el término en el sentido más histórico.
La palabra (pronunciada "ledding") proviene de la tira de plomo que las antiguas máquinas de escribir solían poner entre líneas de tipo.
Básicamente era solo una forma de ajustar el espacio entre líneas.
En Android, nunca he visto que el líder sea otro que no sea
0
y no lo he visto utilizado para nada en el código fuente.
(Corrígeme si sabes dónde se usa para calcular cualquier cosa). Puedes cambiar el espacio entre líneas en un
TextView
con
setLineSpacing
en código o
android:lineSpacingExtra
y
android:lineSpacingMultiplier
en xml.
Estos métodos
, sin embargo, no utilizan ni modifican el encabezado.
Consulte estos enlaces para obtener más información:
- Dibujo preciso de texto de Android
- Métricas de fuentes en Java (y Android)
- Documentación de diseño
- Java: ¿el ascenso de FontMetrics es incorrecto?
- FontMetrics no es correcto cuando se ejecuta en un dispositivo Android. Simulador bien
-
Métricas de fuentes Java
(Java no parece usar la
top
ebottom
)
Explora más
Para explorar más Font Metrics, hice un proyecto simple.
En lugar de enumerar todo el código aquí. Agregué el proyecto a GitHub . Puede clonar el proyecto o copiar los siguientes archivos en un nuevo proyecto.
- FontMetricsView.java (una vista personalizada)
- MainActivity.java
- activity_main.xml
¿Las letras van alguna vez arriba o abajo?
Por lo general, no, pero podrían. La parte superior e inferior, según tengo entendido, están establecidas por la fuente (de ahí "FontMetrics"), por lo que un creador de fuentes podría hacer que un glifo sea más alto de lo que dicen que es la parte superior (o más bajo que la parte inferior). Además, al combinar marcas diacríticas en Unicode puede suceder muy fácilmente. Aquí es un ejemplo extremo (tomado de here ):?! M̵̳̙͔̟͕̓̄̉̅ͧ̋͊͌͑͌ͪ̒̿̚a͔̟̝͔ͥ̈̏ͮͯ̇͆̊̒ͦͦ͘͢͜y̵̴̢͕̝̩͈͕̼̣͕̟̌͗̾ͤ͌̄ͣͨ͊ͬb̡̯̰̪̜͙̟̝̠͚̜̥̙̤ͨ̋̒̒̊ͧͤ͐̓͋̌̾̇̔̈͡͠e̵ͯͪ̿̿̄ͫ҉͏͎̣̹̜͉̦̞̪̘̠̝̝͍̼̜̖̥̭͟ ̣̞͙͚̝̰̞̹̗̣͙͍͍̓͊̋ͣ̏̑̍̊͌ͩ͐ͣͣ̚͟h̛͋̏̍̆ͤ͛͐ͨ̌̋ͤͨ̓̑̚̕͟͏̻̣͖̖͚͚͓̼̪ȁ̔̅̿͐̑͡͏̝͓̮͚̘̦̰͚͎͔͉͚̮̠̕͜ṱ̼̖̓ͭ̏̅ͥ͌ͯ͌͠sͪ̓ͪ̄̌̓ͧ͋͐ͬ̅̑҉̨̪̬͎͍̥̬ ̡̮̳͙͓͔̹̘̹͓̘̻̦̣͎̫̐ͤ̐͛͝ sombreros ̶̨̡͇͚̙͚̭̣̳̤̞̫̗̣̦̮̖̞͒͆̿̄͑
Al conectar esa cadena en Android obtenemos esto:
Las marcas diacríticas van por
top
y por debajo de la
bottom
.
Sin embargo, es interesante notar que el ancho y la altura totales se miden correctamente por los límites del texto.
De todos modos, para todos los fines prácticos en su programación, puede suponer que el máximo y el mínimo para las letras de glifo son
top
e
bottom
.
Y generalmente se mantendrán dentro del
ascent
y
decent
.
Si por alguna razón necesita saber con certeza si las letras van más allá de la
top
o
bottom
, puede usar
TextPaint.getTextBounds
.