ConTeXt:使用 Unicode 符号作为项目符号

ConTeXt:使用 Unicode 符号作为项目符号

我无法弄清楚如何BLACK RIGHT-POINTING SMALL TRIANGLE在 ConTeXt 中的逐项列表中使用 ▸(又名)作为项目符号。

我的第一个想法是这应该可行:

\setupitemize[1][compact][symbol={▸}]

\starttext

\startitemize
\item This is an item in a list
\item So is this
\stopitemize

\stoptext

似乎不行。我也尝试过这个:

\definesymbol[1][{▸}]

我究竟做错了什么?

编辑我仍然卡住了,现在我想知道是不是因为我的打字稿有问题。我有这样的代码:

\starttypescript [sans] [roboto]
  \definefontsynonym [Sans]           [Roboto Condensed Light]
  \definefontsynonym [SansBold]       [Roboto Condensed Bold]
  \definefontsynonym [SansItalic]     [Roboto Condensed Light Italic]
  \definefontsynonym [SansBoldItalic] [Roboto Condensed Bold Italic]
\stoptypescript

\definetypeface[roboto][rm][sans][roboto][default]
\definetypeface[roboto][ss][sans][roboto][default]
\definetypeface[roboto][tt][mono][modern][default]
\definetypeface[roboto][mm][math][iwona] [default]

\setupbodyfont[roboto,ss,10pt]

我想要的项目符号是在 Lucida 中定义的,我的系统上也有这个,但我尝试了这个,它似乎也用 Lucida 覆盖了正文字体:

\definefontfallback [lucida_fallback] [Lucida] [0x25B8] [force=no]

\definefontsynonym [Fallback] [roboto] [fallbacks=lucida_fallback]

\definefont [Roboto] [Fallback]

\setupbodyfont[Roboto,ss,10pt]

所以我不知道如何整合信息这个答案参考下面(之前接受的)答案中的建议。我认为simplefonts它本身并不能满足我的要求,因为我真的希望字体的细体变体成为默认字体,而不是常规粗体。

答案1

如果你只想要这一个符号,回退机制可能有点夸张。你可以使用 \getglyph 命令:

\definesymbol [1] [\getglyph{name:xits-math}{\char"25B6}]

\starttext

\startitemize
  \item This is an item in a list
  \item So is this
\stopitemize

\stoptext

(我没有 lucida 字体,但我认为这是您想要的符号)。

答案2

您需要一种具有该符号的字体(如果我没记错的话,还要使用正确的符号定义方式)。以下是一个例子确实有效,定义一个后备(Lucida),主字体为 Roboto Condensed Light。

\usemodule[simplefonts]
\setmainfont[Roboto Condensed Light]
\setmainfontfallback[Lucida]
  [%range={0x00000-0xFFFFFF},% If you want to avoid thinking, the whole range
   range=0x025B8,% Just the ▸ symbol
   force=no,rscale=auto]

\definesymbol[blacktriangle][▸]
\setupitemize[1][packed][symbol=blacktriangle]

\starttext

\startitemize
\item This is an item in a list
\item So is this
\stopitemize

\stoptext

在此处输入图片描述

如果您的字体没有该符号,您可以随时使用 (Con)TeX(t) 命令来创建符号,例如\definesymbol[blacktriangle][$\blacktriangleright$]。如果字体中存在字形,您可以随时使用\Uchar(或传统\char)来输入它。例如,使用 Minion Pro

\definesymbol[blacktriangle][\Uchar"E0B8]

在此处输入图片描述

答案3

要为文档中的某些字符设置不同的字体,您可以将该\definefallbackfamily命令与该\definefontfamily命令一起使用。

\definefallbackfamily [roboto] [ss] [Latin Modern Math] [range=0x025B6]
\definefontfamily     [roboto] [ss] [Roboto] [tf=style:light,it=style:lightitalic] % bf=style:regular,bi=style:italic
\definefontfamily     [roboto] [mm] [Latin Modern Math]

\definesymbol[blacktriangle][▶︎]

\setupbodyfont[roboto,10pt]

\starttext

Regular {\it Italic} {\bf Bold} {\bi Bolditalic}

\startitemize[blacktriangle]
\item This is an item in a list
\item So is this
\stopitemize

\stoptext

此方法还允许您设置使用不同的字体作为字体的常规和斜体替代。

相关内容