Ubah ukuran karakter tunggal dari font tertentu

Aug 19 2020

Saya menggunakan Kerkis Sansfont yunani sebagai font sekunder dalam dokumen saya, untuk judul, paragraf, dll. Saat saya menguji font, saya perhatikan bahwa huruf besar yunani F (Φ) jauh lebih kecil daripada huruf lainnya. Upaya saya untuk mengubah ukurannya adalah ini

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

Masalah yang saya hadapi adalah

  1. Masalah ini hanya muncul dengan Kerkis Sansfont dan hanya jika teks dicetak tebal
  2. Upaya saya memperbaiki ukuran secara lokal

Apakah ada cara untuk mengubah ukuran cetak tebal Φsecara global?

Jawaban

5 egreg Aug 19 2020 at 05:04

Bug harus dilaporkan ke pengelola Kerkis.

Sementara itu, Anda dapat melakukan hal berikut:

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

Saya menambahkan a +untuk menunjukkan bahwa perbaikan diterapkan hanya jika perlu, yaitu ketika rangkaian font dicetak tebal (juga miring tebal memiliki bug).

Dalam versi produksi, hapus +:

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

Keluarkan dengan +for debugging

Output dengan versi produksi