颜色框:如何仅填充带圆角的矩形(正方形)的内部区域

颜色框:如何仅填充带圆角的矩形(正方形)的内部区域

如果我有一封类型的信“(垂直)矩形,圆角并将其放入\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+25A2DejaVu 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}

完整示例

相关内容