特定のフォントから1文字のサイズを変更する

Aug 19 2020

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. 私の試みはローカルでサイズを修正します

太字のサイズをΦグローバルに変更する方法はありますか?

回答

5 egreg Aug 19 2020 at 05:04

バグは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 }
 }

+デバッグ用の出力

製品版で出力