标准 TeX 中的 Unicode 替换字符

标准 TeX 中的 Unicode 替换字符

是否有一种字体可供所有 TeX 用户使用,其中包含可以识别为 Unicode 替换字符的字形?我意识到我可以将 XeTeX 与已添加 FFFD(或者可能是字体中没有的任何字符),但我对使用标准 pdfTeX 与标准 LaTeX 2e 和纯 ASCII 输入文件感兴趣。

该字形通常看起来像一个实心的黑色菱形,里面有一个白色问号:

? 在黑匣子里

如果没有这样的字体,那么在不使用 XeTeX 或类似软件的情况下,将这样的字形放入标准 pdfTeX 文档(其输入文件中没有 Unicode 或非 ASCII UTF-8 字节序列)的最佳稳健策略是什么?插入 TikZ 命令?原始 PostScript?

现在,由于缺乏更好的解决方案,我正在使用 \textbullet,只是因为它是我能想到的最粗/最黑的字形,并且它在大多数标准字体中都可用。

创建只有一个字形的自定义字体实际上并不可行,或者如果可行的话,这也是一种最后的手段,除非(也许)它可以在每次处理文档时自动且动态地完成。

(转自 texhax 邮件列表:http://tug.org/pipermail/texhax/2015-January/021519.html;最初由 Doug McKenna 提出)

答案1

当然,这是 LaTeX,而不是标准 TeX。它将\blacksquare其旋转 45 度,得到黑色菱形。然后,它会在\sffamily\small ?其上方插入一个白色,居中左/右,垂直中心下方 0.2pt。然后,它使用\scalebox使复合符号变大 2 倍(或者您想要的大小)。

\documentclass{article}
\usepackage{amssymb,graphicx,stackengine,xcolor}
\def\ucr{\scalebox{2}{\stackinset{c}{}{c}{-.2pt}{%
  \textcolor{white}{\sffamily\bfseries\small ?}}{%
  \rotatebox{45}{$\blacksquare$}}}}
\begin{document}
\ucr
\end{document}

在此处输入图片描述

答案2

我想说不存在这样的字体,所以我建议采用另一种方法。

您可以选择自己喜欢的字体并将字形提取为文件eps,然后将其包含在内。

您可以参考一个答案我在这里解释了我是如何做到这件事的。


或者,

梅威瑟:

\documentclass{article}
\usepackage[export]{adjustbox}
\usepackage{filecontents}
\begin{filecontents*}{repchar.eps}
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.12.8 (http://cairographics.org)
%%CreationDate: Thu Jan 15 01:23:35 2015
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%BoundingBox: 0 -1 192 192
%%EndComments
%%BeginProlog
save
50 dict begin
/q { gsave } bind def
/Q { grestore } bind def
/cm { 6 array astore concat } bind def
/w { setlinewidth } bind def
/J { setlinecap } bind def
/j { setlinejoin } bind def
/M { setmiterlimit } bind def
/d { setdash } bind def
/m { moveto } bind def
/l { lineto } bind def
/c { curveto } bind def
/h { closepath } bind def
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
      0 exch rlineto 0 rlineto closepath } bind def
/S { stroke } bind def
/f { fill } bind def
/f* { eofill } bind def
/n { newpath } bind def
/W { clip } bind def
/W* { eoclip } bind def
/BT { } bind def
/ET { } bind def
/pdfmark where { pop globaldict /?pdfmark /exec load put }
    { globaldict begin /?pdfmark /pop load def /pdfmark
    /cleartomark load def end } ifelse
/BDC { mark 3 1 roll /BDC pdfmark } bind def
/EMC { mark /EMC pdfmark } bind def
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
/Tj { show currentpoint cairo_store_point } bind def
/TJ {
  {
    dup
    type /stringtype eq
    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
  } forall
  currentpoint cairo_store_point
} bind def
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
/Tf { pop /cairo_font exch def /cairo_font_matrix where
      { pop cairo_selectfont } if } bind def
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
      /cairo_font where { pop cairo_selectfont } if } bind def
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
/g { setgray } bind def
/rg { setrgbcolor } bind def
/d1 { setcachedevice } bind def
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
%%PageBoundingBox: 0 -1 192 192
%%EndPageSetup
q 0 -1 192 193 rectclip q
0 g
191.25 95.625 m 95.625 -0 l 0 95.625 l 95.625 191.25 l h
129.711 119.812 m 129.711 128.437 126.523 135.617 120.148 141.355 c 113.773
 147.094 106.012 149.961 96.863 149.961 c 85.836 149.961 76.238 148.273 
68.062 144.898 c 66.039 124.762 l 72.262 128.738 79.125 130.726 86.625 130.726
 c 92.25 130.726 96.898 129.187 100.574 126.113 c 104.25 123.039 106.086
 118.988 106.086 113.961 c 106.086 108.488 102.918 101.57 96.582 93.207 
c 90.242 84.844 87.074 76.312 87.074 67.613 c 104.176 67.613 l 104.176 71.664
 106.387 76.426 110.812 81.898 c 118.312 91.199 122.398 96.414 123.074 97.539
 c 127.5 104.586 129.711 112.012 129.711 119.812 c h
108.676 31.726 m 108.676 55.351 l 82.574 55.351 l 82.574 31.726 l h
f
Q Q
showpage
\end{filecontents*}
\begin{document}
\includegraphics[height=\fontcharht\font`X]{repchar.eps}
\end{document}

请注意,“[height=\fontcharht\font`X]”选项会使你的字符变成大写字母 X 的大小,如下所示这个帖子

相关内容