tenia studio resumen que progressbar lider color cambiar android fontmetrics

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:

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.

¿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 .