Tek bir karakteri belirli yazı tipinden yeniden boyutlandırın

Aug 19 2020

Kerkis SansYunanca yazı tipini belgelerimde, başlıklar, paragraflar vb. İçin ikincil yazı tipi olarak kullanıyorum. Yazı tipini test ederken, büyük yunanca F (Φ) 'nin diğer harflerden çok daha küçük olduğunu fark ettim. Yeniden boyutlandırma girişimim buydu

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

Karşılaştığım sorunlar

  1. Bu sorun yalnızca Kerkis Sansyazı tipinde ve yalnızca metin kalın olduğunda ortaya çıkar
  2. Denemem boyutu yerel olarak düzeltir

Kalınlığı Φglobal olarak yeniden boyutlandırmanın bir yolu var mı ?

Yanıtlar

5 egreg Aug 19 2020 at 05:04

Hata, Kerkis'in geliştiricisine bildirilmelidir.

Bu arada şunları yapabilirsiniz:

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

+Düzeltmenin yalnızca gerektiğinde, yani yazı tipi serisi kalın olduğunda (ayrıca kalın italik hata içeriyorsa) uygulandığını göstermek için bir ekledim .

Üretim sürümünde +şunları kaldırın :

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

+Hata ayıklama için çıktı

Üretim versiyonu ile çıktı