调整特定字体的单个字符的大小

调整特定字体的单个字符的大小

我在文档中使用Kerkis Sans希腊字体作为辅助字体,用于标题、段落等。在测试字体时,我注意到大写希腊字母 F (Φ) 比其他字母小得多。我尝试调整它的大小,如下所示

\documentclass[english,greek]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{txfontsb,graphicx}

\newcommand{\kerkissans}[1]{{\fontfamily{maksf}\selectfont #1}}


\begin{document}
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ\\
\kerkissans{ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ}\\
\kerkissans{\textbf{ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ}}\\
\kerkissans{\textbf{\resizebox{!}{6pt}{Φ}Φ}}
\end{document}

在此处输入图片描述

我面临的问题是

  1. 此问题仅出现在Kerkis Sans字体上且文本为粗体时
  2. 我尝试在本地修复尺寸

有没有办法Φ在全局范围内调整粗体大小?

答案1

应该将该错误报告给 Kerkis 的维护者。

在此期间,您可以进行如下操作:

\documentclass[english,greek]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{txfontsb}
\usepackage{graphicx}
\usepackage{newunicodechar}
\usepackage{xparse}

\newcommand{\kerkissans}[1]{{\fontfamily{maksf}\selectfont #1}}

\newunicodechar{Φ}{\FIXEDPHI}

\ExplSyntaxOn
\NewDocumentCommand{\FIXEDPHI}{}
 {
  \str_if_eq:eeTF { \use:c { f@family } } { maksf }
   {
    \str_if_in:enTF { \use:c { f@series } } { b }
     { \resizebox{!}{\fontcharht\font`A}{F} +}
     { F }
   }
   { F }
 }
\prg_generate_conditional_variant:Nnn \str_if_in:nn { e } { T, F, TF }
\ExplSyntaxOff


\begin{document}

ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ

\kerkissans{ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ}

\kerkissans{\textit{ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ}}

\kerkissans{\textbf{ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ}}

\kerkissans{\textit{\textbf{ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ}}}

\end{document}

我添加了一个+以表明仅在必要时应用修复,即当字体系列为粗体时(粗体斜体也有错误)。

在生产版本中,删除+

\NewDocumentCommand{\FIXEDPHI}{}
 {
  \str_if_eq:eeTF { \use:c { f@family } } { maksf }
   {
    \str_if_in:enTF { \use:c { f@series } } { b }
     { \resizebox{!}{\fontcharht\font`A}{F} }
     { F }
   }
   { F }
 }

输出用于+调试

在此处输入图片描述

输出生产版本

在此处输入图片描述

相关内容