如果字形在同一个图形中,为什么字形不排列?

时间:2011-11-04 20:28:12

标签: fonts wolfram-mathematica

我正在尝试覆盖不同字体的字形,但很难让它们排成一行。我敢肯定他们应该排队比这更好。我怎么能这样做?

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

另外,我有兴趣绘制轮廓 - 这里我选择了它们,但我想画它们。

Screenshot

编辑:谢谢!在你的帮助下,我能够实现我想要的大部分目标:

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

2 个答案:

答案 0 :(得分:10)

默认情况下,文本在某个点居中(水平和垂直),字体具有不同高度的字符,从而导致文本移位。例如,比较以下内容:

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

如果您沿着边缘放置文本,它可能对您更有效,尽管它无法保证:

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

修改 根据Heike的建议使用Baseline

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

答案 1 :(得分:4)

关于您的第一个问题,欢迎来到不同字体的世界。它们有不同的指标,就是这样。您可以使用Overlay或其中一个图形选项(如ImagePadding)将其中一个移到另一个上。

关于第二个问题,documentation on JoinedCurve中的第二个“简洁示例”显示了如何使用ExportStringImportString执行此操作。