2009-12-25 12 views
11

Esta es una continuación de this question.Obtenga la familia de fuentes calculadas en JavaScript

estoy trabajando en un componente para la CKEditor, una versión modificada de los menús desplegables de fuente que siempre muestran los valores de la familia de fuente/tamaño actualmente seleccionado, sin importar donde se definieron, utilizando computedStyle y consortes.

Como puede ver en la otra pregunta, determinar el tamaño de la fuente funciona ahora en todos los navegadores. Ahora estoy teniendo problemas para trabajar con el atributo fontFamily. Mi función genérica de "estilo calculado" devuelve solo la cadena de fuente completa que se definió, p.

Times New Roman, Georgia, Serif 

Lo que necesito, con el fin de coincidir con la configuración en contra de las entradas en el menú desplegable familia de fuentes, es un nombre de fuente fija del fuente real del elemento DOM estoy comprobando.

¿Se puede hacer esto de alguna manera, al menos para las fuentes web más comunes?

Respuesta

9

No creo que haya ningún método para hacerlo directamente, pero a Lalit Patel se le ocurrió una técnica inteligente que crea un elemento con algunas letras y adivina la fuente a partir del ancho del elemento.

Ver http://www.lalit.org/lab/javascript-css-font-detect

+0

Sí, pensé en eso también, es una idea muy inteligente. En mi caso, sin embargo, es excesivo, ya que todo el procedimiento tendría que suceder cada vez que el usuario cambia la posición del cursor en un editor WYSIWYG. –

+0

Ah, sí tengo. No estoy familiarizado con CKEditor, pero ¿hay alguna manera de rastrear qué estilos se aplican a qué texto? En lugar de calcularlo cada vez que se mueve el cursor, ¿podría registrar qué estilos se aplican al texto cada vez que el usuario los cambia? –

+1

@Pekka Luego necesita memorizar los resultados de la detección. Y, tal vez, también pruebe algunas de las fuentes comunes por adelantado. – kangax

2

El UA elige la primera fuente en la lista que encuentra instalada. Las fuentes instaladas en el sistema operativo no son realmente parte del DOM, por lo que lo mejor que puede hacer es adivinar.

+0

Tienes razón. Paul D. Waite presenta una solución que no voy a utilizar en este caso, pero que permite solucionarlo. –

Cuestiones relacionadas