2011-11-04 13 views
12

Estoy tratando de superponer glifos de diferentes fuentes, pero es difícil hacer que se alineen. Estoy seguro de que deberían alinearse mejor que esto. ¿Cómo puedo hacer eso?¿Por qué los glifos no se alinean si están en los mismos gráficos?

Graphics[ 
    {Opacity[0.1], 
     {Text[Style["a", FontFamily -> "Helvetica", 240]], 
     Text[Style["a", FontFamily -> "Arial", 240]]} 
    }] 

Además, me interesa dibujar el contorno - aquí los he seleccionado, pero me gustaría dibujarlos.

Screenshot

Edit: Gracias! Con su ayuda yo era capaz de lograr más de lo que yo estaba tratando de:

Manipulate[ 
Graphics[{{{Opacity[opacity], 
    Text[Style["Greats", Red, FontFamily -> "Helvetica", 180], {0, 
     0}, {Center, Baseline}]}, {Opacity[1 - opacity], 
    Text[Style["Greats", Blue, FontFamily -> "Arial", 180], {0, 
     0}, {Center, Baseline}]}}}], {opacity, 0.1, 1, 0.1}] 

Screenshot

Respuesta

10

De forma predeterminada, el texto se centra (horizontal y verticalmente) en un punto, y las fuentes tienen caracteres de diferentes alturas, lo que resulta en texto desplazado. Por ejemplo comparar el siguiente:

Graphics[{Opacity[ 
    0.1], {Text[ 
    Style["agÄ", FontFamily -> "Helvetica", 240, 
    Background -> RGBColor[0.8, 0, 0, 0.2]]], 
    Text[Style["agÄ", FontFamily -> "Arial", 240, 
    Background -> RGBColor[0, 0, 0.8, 0.2]]]} 
    }] 
Graphics[{Opacity[ 
    0.1], {Text[ 
    Style["agA", FontFamily -> "Helvetica", 240, 
    Background -> RGBColor[0.8, 0, 0, 0.2]]], 
    Text[Style["agA", FontFamily -> "Arial", 240, 
    Background -> RGBColor[0, 0, 0.8, 0.2]]]} 
    }] 

enter image description here

Si coloca el texto a lo largo de un borde, puede que funcione mejor para usted, aunque es de ninguna manera garantizado:

Graphics[{Opacity[ 
    0.1], {Text[ 
    Style["a", FontFamily -> "Helvetica", 240], {0, 0}, {Center, 
    Bottom}], 
    Text[Style["a", FontFamily -> "Arial", 240], {0, 0}, {Center, 
    Bottom}]}}] 

enter image description here

Editar Usando Baseline según lo sugerido por Heike:

Graphics[{Opacity[ 
    0.1], {Text[ 
    Style["a", FontFamily -> "Helvetica", 240], {0, 0}, {Center, 
    Baseline}], 
    Text[Style["a", FontFamily -> "Arial", 240], {0, 0}, {Center, 
    Baseline}]}}] 

enter image description here

+9

Uso de 'Baseline' en lugar de' Bottom' para el desplazamiento en la dirección vertical incluso podría funcionar mejor. – Heike

+0

@Heike Buen punto, especialmente porque esta configuración está poco documentada. (Lo busqué un poco antes de responder, pero no lo encontré en los documentos de 'Texto'). –

+0

Hay un ejemplo que usa esta configuración en la documentación 'BaseLine'. – Heike

4

En cuanto a su primera pregunta, bienvenido al mundo de diferentes fuentes. Tienen diferentes métricas y así es como es. Puede usar Overlay o una de las opciones gráficas como ImagePadding para desplazar una sobre la otra.

En su segunda pregunta, el segundo "buen ejemplo" en el documentation on JoinedCurve muestra cómo hacerlo usando ExportString y ImportString.

Cuestiones relacionadas