Actualmente estoy trabajando en un proyecto de JavaScript que usa el lienzo HTML5 como un objetivo de representación. Para que mi código funcione correctamente con las interfaces (rígidamente especificadas) que me han proporcionado, necesito poder tomar una fuente y extraer las alturas de ascenso y descenso de esa fuente. Esto permitirá a los clientes ubicar el texto con mayor precisión. Soy consciente de que puedo cambiar dónde se dibuja el texto estableciendo el atributo textBaseline
, pero en realidad necesito los valores numéricos que describen estas alturas diferentes. ¿Hay una manera simple de hacer esto? Si no, ¿hay una biblioteca (afortunadamente ligera) que pueda manejarlo por mí? La mayoría de las soluciones propuestas que he encontrado son bibliotecas de renderizado de fuentes pesadas, lo que parece una sobrecarga masiva para este problema.Obteniendo métricas de fuentes en JavaScript?
Respuesta
This article en HTML5 tipográficas métricas discute el problema y una part solution using CSS - aunque el redondeo entero de offsetTop etc es un problema (potencialmente pueden utilizar getBoundingClientRect()
para obtener valores de punto flotante adecuados para algunos navegadores).
La respuesta corta es que no hay un camino integrado y usted está por su cuenta.
Debido a esto, la mayoría de la gente simplemente los estima. Algunas personas calculan previamente todos los valores, lo cual no es demasiado trabajo, siempre que use solo unas pocas fuentes.
La tercera forma es hacer un lienzo en la memoria e imprimir algunas letras (por ejemplo, un Q
y un O
) e intentar programar el ascenso y el descenso utilizando la colisión por píxel. Es un problema y puede ser lento dependiendo de la cantidad de fuentes y de la precisión que desee, pero es la forma más precisa de hacerlo si no desea calcular previamente los valores.
Sólo como referencia aquí: La anchura del texto se puede medir con:
ctx.measureText(txt).width
- 1. SVG y métricas de fuentes
- 2. fuentes personalizadas con diferentes métricas verticales entre OS
- 3. Métricas de fuente para las fuentes "base 14" en la especificación PDF
- 4. Obteniendo comportamiento sincrónico en javascript?
- 5. Obteniendo fuentes de elevación del repositorio de maven
- 6. Agregar fuentes a video HTML5 en javascript?
- 7. obteniendo el tamaño de archivo en javascript
- 8. Métricas de código
- 9. Calcular métricas de código
- 10. Cambiar varias fuentes de imagen Javascript
- 11. Métricas de similitud de cadenas en Python
- 12. Eclipse Plugin métricas
- 13. Entender las métricas de código
- 14. Jugar! Métricas de rendimiento 2.0
- 15. Cómo capturar métricas de código en Xcode?
- 16. Métricas de software en Metodologías ágiles
- 17. Métricas de código en Visual Studio 2010
- 18. Obtenga la familia de fuentes calculadas en JavaScript
- 19. ¿Cómo iterar las fuentes instaladas usando javascript?
- 20. obteniendo parte de una imagen con JavaScript
- 21. JavaScript - Obteniendo valores de formulario HTML
- 22. Calcular con precisión el ancho del texto en unidades métricas
- 23. Obteniendo el índice Z de un DIV en JavaScript?
- 24. Obteniendo el valor de retorno del código Javascript en Selenium
- 25. Métricas de código de php - Notepad ++
- 26. ¿Practicando las métricas de diseño de Android?
- 27. Métricas y advertencias de código para C++
- 28. ¿Generar métricas de proyecto con Doxygen?
- 29. Mostrar métricas menos barra de estado?
- 30. Métricas de la calidad del software
de Mozilla Bespin tratado de resolver ese problema y finalmente ejecutar en discusión que terminó con el lienzo conclusión fue y nunca será diseñado para editores de texto. Por lo tanto, confíe en que 'm' tenga la misma altura y ancho o utilice la fuente de Bespin o el método de prueba de píxeles que se describe a continuación o mida un div off con el mismo texto/fuente o cualquier otra aproximación no confiable. Disculpa, no me gusta la desilusión, también. Pero, ¿estás seguro de que elegiste el caballo correcto para este camino? – noiv
Actualmente estoy trabajando en una implementación de JVM en JavaScript y estoy usando el lienzo como un objetivo de representación. Necesito implementar las bibliotecas de fuentes Java, por lo que necesito estos valores precisos. Estoy pensando que voy a seguir con la respuesta de Simon y simplemente simular la implementación escribiendo fuera de la pantalla y raspando los resultados. :-( – templatetypedef
Espero que haya considerado el suavizado de fuentes .... – noiv