Почему глифы не выстраиваются в линию, если они находятся в одной и той же графике? - PullRequest
12 голосов
/ 05 ноября 2011

Я пытаюсь наложить глифы разных шрифтов, но сложно заставить их выстроиться в очередь.Я уверен, что они должны выстроиться в линию лучше, чем это.Как я могу это сделать?

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

Кроме того, мне интересно нарисовать контур - здесь я выбрал их, но я хотел бы нарисовать их.*

Редактировать: Спасибо!С вашей помощью я смог достичь большинства из того, что я пытался:

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 ]

10 голосов
/ 05 ноября 2011

По умолчанию текст центрируется (по горизонтали и вертикали) в точке, а шрифты имеют символы разной высоты, что приводит к смещению текста.Например, сравните следующее:

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

Редактировать Используя 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

4 голосов
/ 05 ноября 2011

По поводу вашего первого вопроса, добро пожаловать в мир разных шрифтов.У них разные метрики, и так оно и есть.Вы можете использовать Overlay или одну из графических опций, например ImagePadding, чтобы переключать одну над другой.

По второму вопросу, второй "аккуратный пример" в документации по JoinedCurve показывает, как это сделать, используя ExportString и ImportString.

...