如何输入一个占据汉字符号大小的BOX

如何输入一个占据汉字符号大小的BOX

如果字体中不存在某个中文字符,则生成的 pdf 文档将无法正确显示该中文字符,而是会用一个大方框代替。就像下面这个方框一样: 在此处输入图片描述

图中这些方框内的汉字都是生僻字,常规字体中没有收录这些汉字,因此生成的pdf文档是无法显示这些汉字的。而是被一个盒子取代了。

现在,我想在乳胶中手动输出这些框。我该怎么做?

我尝试了一些命令,例如\文本方块 或者 $\Box$ 或者 $\平方$ 或者 $\平方$ 或者 $\APLbox$等等。

是的,这些命令中的每一个都有某种框,但没有我想要的框。

在此处输入图片描述

这些命令打出的方框并不精确占据一个汉字的大小,且其线条较粗,所以与以前的“生僻字替换方框”并不一样。我想要的是第一个。

我猜第一个“生僻字替换框”可能是统一码代码中,我找到了一些类似的,比如:□_(白色方块,U+25A1)、▯(白色垂直矩形,U+25AF)、◻_(白色中方块,U+25FB)、☐_(投票箱,U+2610)……

我不确定这些框是否有我想要的,因为我无法在 latex 中生成这些 un​​icode 符号,无论我是否使用\char{"unicode}命令或\symbol{"unicode}命令。

不管怎样,现在我需要“生僻汉字替换盒”的盒子,也就是第一张图片中的盒子。

因为这个方框占了一个汉字的大小,所以很完美。有些古文书籍,会有缺失的文字,用这个方框把缺失的文字占满,就完美了。那么,如何实现这个方框的手动输出呢?谢谢!

根据你的建议,我已经把我需要的盒子生成了pdf文档,并分享到云端。你可以帮我看看。再次感谢你的关注。

关联:https://pan.baidu.com/s/1RwovC-y9lgoZrLS2uv20VA?pwd=i719

答案1

感谢这位朋友(用户202729),我觉得我已经彻底解决了这个问题。而且在解决这个问题的过程中,我对 latex 字体有了更深入的了解。谢谢。下面是我的解决方案:

1.首先我很确定这个Box占位符不是通过$\Box$或者$\square$这样的数学公式生成的,因为这些公式生成的盒子明显和我想要的占位符不一样——无论是大小还是线条粗细。

2.然后,朋友(user202729)提示我生成一个pdf文档,并从pdf文档中找到该盒子的代码。我更加确定该盒子应该是由unicode 编码所以我打开了窗户”字符对应表”,在软件中选择可以生成这种框的字体,例如楷体(KaiTi), 仿宋(FangSong)。进一步,我开始逐个比较字体下的方框符号。果然,我找到了!从外观上看,应该就是这个。它的unicode编码是U+25A1; 它的名字是空心方形

在此处输入图片描述 在此处输入图片描述

3.为了确认该框是我要找的框,我使用 latex 命令以 unicode 格式打印它\symbol{"25A1}不过,有一个小问题,它没有出现在文本中,我找到了原因:我正在使用XeLaTeX + xeCJK输出中文,所以U+25A1是一个特殊字符,默认情况下不被视为 CJK 字符,因此它仍然被西文字体覆盖,而西文字体通常不包含此字符。因此,为了使用 unicode 编码成功打印此字符,您需要将字符声明为 CJK 字符并以中文字体打印。在简介区域添加这行代码:

\xeCJKsetcharclass{"25A0}{"25A2}{1}%All characters between U+25A0 and U+25A2 are expressed in Chinese. I want the U+25A1 symbol, which is right there.

4.经过这个小插曲,就成功了,\symbol{"25A1}命令可以打印这个字符,我完成了方框的输出。当然,我也发现,在不同的字体中,方框的解释是不同的。例如,在楷体(KaiTi),它的尺寸很完美,但线条较粗;仿宋(FangSong),线条合适,但较小。我试了几次,发现SimSun-ExtB.ttc 或 KaiXinSongB.ttf (大型中文字体库),盒子完美地呈现出了我想要的人物形象。 在此处输入图片描述

5.那么,答案揭晓了!中文方框确实是unicode字符。另外,不同的中文字体对应的字符大小和形状略有不同,不过开心松B.ttf字体的形状是我最满意的!

6.当然,还有点奇怪的是,为什么“生僻字替换框”在 SimSun-ExtB 或 KaiXinSongB 字体下会自动将字符解释为 U+25A1 符号?即使我将字体设置为楷体(KaiTi), 仿宋(FangSong)等,在这些常用字体下,如果我输入 \symbol{"25A1},它给出的框就是该字体下对应的U+25A1符号。但输入它无法显示的稀有汉字时,在SimSun-ExtB中就会出现U+25A1符号。这是我还没搞明白的。不过没关系,我只需要把要用框的地方改成SimSun-ExtB字体,输出就完美了。

就这些了。谢谢你的关注。感谢我的朋友(user202729)的指点!

相关内容