Почему глифы не выстраиваются в линию, если они на одной и той же графике?

#fonts #wolfram-mathematica

#шрифты #wolfram-mathematica

Вопрос:

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

 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}]
  

Скриншот

Ответ №1:

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

 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]]]}
  }]
  

введите описание изображения здесь

Если вы расположите текст вдоль края, это может работать лучше для вас, хотя это ни в коем случае не гарантировано:

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

введите описание изображения здесь

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

введите описание изображения здесь

Комментарии:

1. Использование Baseline вместо Bottom для смещения в вертикальном направлении может работать даже лучше.

2. @Heike Хороший момент, тем более, что этот параметр не задокументирован. (Я немного поискал это, прежде чем ответить, но не нашел в Text документах.)

3. В BaseLine документации есть пример использования этого параметра.

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

Ответ №2:

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

Что касается вашего второго вопроса, второй «аккуратный пример» в документации по JoinedCurve показывает, как это сделать с помощью ExportString и ImportString .