2012-05-14 20 views
11

Estoy intentando que mi aplicación C# genere correos electrónicos de formulario. Debería haber terminado esto en una hora el viernes ... pero Outlook es bastante desobediente.HTMLBody se niega a generar el tamaño de fuente que especifico, siempre termina en un tamaño diferente

Parece que no importa la forma en que especifique el tamaño de fuente en el HTMLBody de MailItem, sale un ligeramente diferente de. La cara de la fuente siempre sale como se especifica, pero el tamaño nunca es el correcto.

email.HTMLBody = "<p style='font-size:11px;font-family:Calibri;'>girl look at that body</p>"; 
email.HTMLBody = "<style> body { font-family:'Calibri'; font-size:11px; } </style> <body>girl look at that body</body>"; 
email.HTMLBody = "<html><header><style> body { font-family:'Calibri'; font-size:11px; } </style></header> <body>girl look at that body</body></html>"; 
email.HTMLBody = "<span style='font-size:11px;font-family:calibri;'>girl look at that body</span>"; 

produce tamaño de la fuente 8.5.

email.HTMLBody = "<html><body><font face='Calibri' size='11px'>girl look at that body</font></body></html>"; 
email.HTMLBody = "<font face='Calibri' size='11px'>girl look at that body</font>"; 

produce la fuente del tamaño 12.

Por lo tanto, parece que especificar 11px (o 11pt, intenté también) la fuente a través de CSS me da 8.5px, y por etiquetas de fuente me da 12px.

He jugado un poco más con esto, y básicamente, la fuente de la fuente produce una fuente de 12 puntos sin importar qué. Así que eso es un callejón sin salida, pero sabía que la etiqueta de la fuente estaba obsoleta de todos modos. La etiqueta CSS me dará diferentes tamaños, pero rara vez lo que estoy pidiendo. Siempre está apagado, y no por una cantidad constante.

tamaño de fuente en el código = tamaño de fuente en el correo electrónico:

  • 12 = 9
  • 13 = 10
  • 14 = 10,5
  • 15 = 11,5
  • 16 = 12
  • 17 = 13
  • 18 = 13.5
  • 19 = 14,5
  • 20 = 15

Especificación 14.5px en CSS me da mi 11px deseada ... pero no me siento cómodo algo que depende de la implementación de eso.

¿Cuál es el problema aquí? ¿Hay algo que olvido especificar en CSS? Algo que necesito ajustar en otro lugar en MailItem o Outlook.Application?

Respuesta

1

Me parece que algunas configuraciones en el correo electrónico están configuradas para reducir el tamaño de la fuente especificada. Esto puede variar según la configuración del usuario. Usted declara que "no es por una cantidad constante", pero no estoy de acuerdo. Según sus números, todos los valores pares están saliendo en .75 la cantidad que usted declara, mientras que todos los valores impares son aproximadamente .76xxxx. Por lo tanto, es como si el correo electrónico estuviera configurado para multiplicar el tamaño de fuente dado por aproximadamente el equivalente a .75em.

Sí, podría compensar tomando su valor objetivo y multiplicar por aproximadamente 1.33, pero ¿lo está haciendo usted solo? En otras palabras, como dije originalmente, esta puede ser una configuración específica para el usuario (que puede ser de manera predeterminada .75 en Outlook, no lo sé), en cuyo caso no puede garantizar el tamaño de la fuente en todos los usuarios.

Tal vez el tamaño de la fuente en em unidades puede funcionar aquí.Si otorga un 1.33em, puede obtener la mayor consistencia para su tamaño objetivo y también responde a la configuración del usuario.

Al mirar una versión de Outlook por mi cuenta, no pude identificar con certeza una configuración para escalar específicamente las fuentes. Se pueden establecer tamaños de fuente predeterminados, y tal vez la escala se basa en una fórmula de tamaño predeterminado para el tamaño solicitado.

7

Es porque usaste 11px en lugar de pt. "px" significa píxeles y 1 pixel de texto no significa 1 punto en tamaño de fuente. Use 11pt en lugar de 11px.

Por esta discusión aquí: https://graphicdesign.stackexchange.com/questions/199/point-vs-pixel-what-is-the-difference

Un píxel es un solo 'elemento de imagen' cuadrado (de ahí píxeles), es decir, un solo punto de la imagen. Una imagen de 10x10 se compone de un conjunto de píxeles en una cuadrícula de 10 de ancho por 10 de profundidad, que suman 100 píxeles.

El 'punto' (pt) por el contrario es una unidad de longitud, comúnmente utilizada para medir la altura de una fuente, pero técnicamente capaz de medir cualquier longitud. En aplicaciones, 1pt equivale exactamente a 1/72 de pulgada; en la impresión tradicional técnicamente, 72pt es de 0.996264 pulgadas, ¡aunque creo que le perdonarán por redondearlo!

Cuantos pixels = 1pt depende de la resolución de su imagen. Si su imagen es de 72ppi (píxeles por pulgada), entonces un punto será exactamente un píxel.

+0

Mencioné en el párrafo justo después del código que también intenté usar 'pt' en todos los lugares donde usé 'px', pero obtuve los mismos resultados. – friggle

+0

Sé que esto es muy viejo, y ojalá hubiera pensado en esto en aquel entonces, pero ¿y si lo que estamos discutiendo es solo una cuestión de diferencia de tamaño con la fuente misma? Para ver lo que quiero decir, ve aquí: [Type Tester] (http://www.typetester.org). Puede cambiar el tamaño de la fuente base en el extremo derecho para que sea 14px, y comparar entre Calibri, Arial (no es una gran diferencia) y Times New Roman (gran diferencia). Quizás Calibri no es la fuente que desea utilizar. – seekerOfKnowledge

1

Tuve el mismo problema al escribir una macro de VBA que creó un correo electrónico de Outlook con datos de Excel. Lo gracioso fue que no importaba lo que hiciera, usar pt o px, nada de eso importaba: cualquier valor que usara, la salida siempre saltaba sobre el tamaño de letra 11. El uso de 11pt me dio el tamaño de letra 8.5. El uso de 12pt me dio 9. Utilizando 14 me dio 12 ...

De todos modos, cuando agregó un decimal de repente funcionó. Así que intente esto: 11.0pt. Espero eso ayude.

-2

Prueba esto: <span style="font-size:11pt">

espero que ayude.

+0

El OP indica que tanto 11px como 11pt tuvieron el mismo resultado. – friggle

Cuestiones relacionadas