背景

背景

背景

希望使用 ConTeXt LMTX 使气泡自动适应文本。

问题

带框文本的右填充会根据是否使用宏而变化\definefont。在输出(如下)中,两个框架都应完全对齐。切换字体会破坏完全对齐。

代码

示例代码:

\definefont       [TextFontEmoji] [OpenSansEmoji]
\definefontfamily [TextFont] [rm] [LibreBaskerville] 
\setupbodyfont    [TextFont]

\starttext
  \startframedtext
    \TextFontEmoji
    \input ward
  \stopframedtext

  \startframedtext
    \input ward 
  \stopframedtext
\stoptext

上述代码产生:

文本框架填充

问题

如何在保持\framedtext环境对齐的同时切换字体?

答案1

OpenSansEmoji 的 OTF 版本无法与 ConTeXt 相符。

https://github.com/MorbZ/OpenSansEmoji

从系统中完全删除 OTF 版本并改用 TTF 版本。这涉及删除luametatex-cache目录并重建字体缓存。

以下操作可按预期产生包含表情符号的左、右对话框:

\definefont [TextFontEmoji] [OpenSansEmoji]

\startuseMPgraphic{TextBubble}{side}
  z1 = (0, 0) ;
  z2 = (OverlayWidth, 0) ;
  z3 = (OverlayWidth, OverlayHeight) ;
  z4 = (0, OverlayHeight) ;

  offset := 1 ;
  tail := 1 ;

  % Flip the tail's location and direction.
  if \MPvar{side} = 1:
    offset := 5 ;
    tail := -1 ;
  fi

  (offset/6)[x1,x2] = x8 + .25cm * tail = x7 + .25cm = x9 - .25cm ;
  y7 =  0cm ;
  y8 = -.5cm ;
  y9 =  0cm ;

  path p ;
  p = (z1--z7--z8--z9--z2--z3--z4--cycle) cornered .25cm ;
  draw p withpen pencircle scaled 0.75 ;

  setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\defineframedtext[TextBubbleFrame][
  style=TextFontEmoji,
  frame=off,
  width=.618\textwidth,
  autowidth=force,
  offset=.75em,
  after={\blank[2*big]},
]

% Receive text (left-facing).
\defineoverlay[TextBubbleRxOverlay][\useMPgraphic{TextBubble}{side=0}]
\defineframedtext[TextBubbleRxFrame][TextBubbleFrame][
  background=TextBubbleRxOverlay,
  location=left,
]

% Send text (right-facing).
\defineoverlay[TextBubbleTxOverlay][\useMPgraphic{TextBubble}{side=1}]
\defineframedtext[TextBubbleTxFrame][TextBubbleFrame][
  background=TextBubbleTxOverlay,
  location=right,
]

\definestartstop[bubblerx][
  before={\startnarrower\startTextBubbleRxFrame},
  after={\stopTextBubbleRxFrame\stopnarrower},
]

\definestartstop[bubbletx][
  before={\startnarrower\startTextBubbleTxFrame},
  after={\stopTextBubbleTxFrame\stopnarrower},
]

\starttext
  \startbubblerx
    Welcome to the future, human 

相关内容