colorbox:如何僅填滿帶有圓角的矩形(正方形)的內部區域

colorbox:如何僅填滿帶有圓角的矩形(正方形)的內部區域

如果我有一封類型的信件「(垂直)矩形圓角並將其放入 a 中\colorbox{<fillcolor>}{text},有沒有辦法設定 colorbox-parameters 以便準確地用顏色填充內部區域?

問題:「圓角」使任務變得困難。可能設定\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}

完整範例

相關內容