如果我有一封类型的信“(垂直)矩形,圆角“并将其放入\colorbox{<fillcolor>}{text}
,有没有办法设置颜色框参数,以便内部区域精确填充颜色?
问题:“圆角”让任务变得困难。设置\setlength{\fboxsep}{-0.57505pt}
可能不够。
提示1:我创建了“(垂直)圆角矩形”我自己使用 FontForge。
对于测试示例,我使用了U+25A2 "White Square with Rounded Corners"
(因为我只找到了一个正方形带圆角(不是矩形)使用字体Cambria.ttf
。
字体是不是对于测试示例来说很重要,并且也可以更换,只要字体包含U+25A2
。
提示2:TikZ、tcolorbox 等肯定有一些东西。但我尝试找出是否可以用普通方法做到这一点\colorbox
(!)。
\documentclass[margin=5pt]{standalone}
\usepackage{xcolor}
\usepackage{fontspec}
\newfontfamily\myfont{Cambria}% a font that contains U+25A2
\newcommand\mychar{\myfont\char"25A2}%U+25A2 ---> White Square with Rounded Corners
\begin{document}
\setlength{\fboxsep}{-0.57505pt}
Test: \colorbox{yellow}{\mychar}
\end{document}
答案1
我不知道您的自定义字母,但对于字符U+25A2
(▢),似乎它的边界框不适合其形状(至少对于字体而言Cambria
)。我没有Cambria
安装字体,但它与 相同DejaVu Sans
:
\documentclass[margin=5pt]{standalone}
\usepackage{xcolor}
\usepackage{fontspec}
\newfontfamily\myfont{DejaVu Sans}% a font that contains U+25A2
\newcommand\mychar{\myfont\char"25A2}%U+25A2 ---> White Square with Rounded Corners
\begin{document}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{0.05pt}
\fcolorbox{red}{white}{\mychar}
\end{document}
对于正方形,你可以使用高度来校正水平边界框,例如
\sbox{0}{\mychar}%
\dimen0=\dimexpr \wd0 - \ht0 - \dp0\relax%
\setlength{\fboxsep}{-0.25\dimen0}%
\colorbox{yellow}{\kern -0.5\dimen0\usebox{0}\kern -0.5\dimen0}%
也许您可以对您的自定义形状做类似的事情。
完整示例,带有字符U+25A2
和DejaVu Sans
字体:
\documentclass[margin=5pt]{standalone}
\usepackage{xcolor}
\usepackage{fontspec}
\newfontfamily\myfont{DejaVu Sans}% a font that contains U+25A2
\newcommand\mychar{\myfont\char"25A2}%U+25A2 ---> White Square with Rounded Corners
\newcommand\myfilledchar{%
\begingroup%
\sbox{0}{\mychar}%
\dimen0=\dimexpr \wd0 - \ht0 - \dp0\relax%
\setlength{\fboxsep}{-0.25\dimen0}%
\colorbox{yellow}{\kern -0.5\dimen0\usebox{0}\kern -0.5\dimen0}%
\endgroup%
}
\begin{document}
\myfilledchar
\quad
{\Huge \myfilledchar}
\quad
{\tiny \myfilledchar}
\end{document}