colorbox: como preencher apenas a área interna de um retângulo (quadrado) com cantos arredondados

colorbox: como preencher apenas a área interna de um retângulo (quadrado) com cantos arredondados

Se eu tiver uma carta do tipo"retângulo (vertical) comcantos arredondados"e coloque-o em um \colorbox{<fillcolor>}{text}, existe uma maneira de definir os parâmetros da caixa de cores para que exatamente a área interna seja preenchida com cor?

Problema:Os ‘cantos arredondados’ dificultam a tarefa. A configuração \setlength{\fboxsep}{-0.57505pt}provavelmente não é suficiente.

insira a descrição da imagem aqui

Dica 1:Eu criei o"retângulo (vertical) com cantos arredondados"eu mesmo usando FontForge.
Para um exemplo de teste, usei U+25A2 "White Square with Rounded Corners"(porque só encontrei um quadradocom cantos arredondados, não um retângulo) com a fonte Cambria.ttf.
A fonte énãoimportante para o exemplo de teste etambém pode ser substituído, desde que a fonte contenha U+25A2.

Dica 2:Certamente há algo com TikZ, tcolorbox etc. Mas tento descobrir se é possível fazer isso com o normal \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}

Responder1

Não sei sobre sua letra personalizada, mas para o caractere U+25A2(▢) parece que sua caixa delimitadora não se ajusta ao seu formato (pelo menos com a Cambriafonte). Não tenho a Cambriafonte instalada, mas é o mesmo com 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}

▢ caixa delimitadora

Com um quadrado, você pode usar a altura para corrigir a caixa delimitadora horizontal, com algo como

\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}%

Talvez você possa fazer algo semelhante com sua forma personalizada.

Exemplo completo, com caractere U+25A2e DejaVu Sansfonte:

\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}

Exemplo completo

informação relacionada