다양한 글꼴에 대한 x 높이 수정

다양한 글꼴에 대한 x 높이 수정

Boondox 붓글씨 수학 글꼴과 Arev 수학 글꼴은 대문자와 소문자의 높이가 동일하지 않습니다.

의 답변을 적응XeTeX/fontspec으로 작은 대문자를 가짜로 만드시겠습니까?, scalebox대문자와 소문자에 맞게 높이를 정의하고 수정하곤 했습니다. \mathcalbd높이 보정이 포함된 새로운 매크로 와 \mathcalbdnocorr보정이 포함되지 않은 기본 매크로의 구현은 아래를 참고하세요.

두 가지 문제가 발생합니다.

  • 아래 첨자와 위 첨자는 지원되지 않습니다.
  • 패키지와 충돌이 있습니다bm
\documentclass{article}

\usepackage{graphicx}
\usepackage{arevmath}
\usepackage{amsmath}
% \usepackage{bm}

\DeclareFontFamily{U}{BOONDOX-calo}{\skewchar\font=45}
\DeclareFontShape{U}{BOONDOX-calo}{m}{n}{<-> BOONDOX-r-calo}{}
\DeclareFontShape{U}{BOONDOX-calo}{b}{n}{<-> BOONDOX-b-calo}{}
\makeatletter
\DeclareMathAlphabet{\m@thcalbd}{U}{BOONDOX-calo}{m}{n}
\SetMathAlphabet{\m@thcalbd}{bold}{U}{BOONDOX-calo}{b}{n}
% https://tex.stackexchange.com/questions/55664/
\def\calfont@helper#1 #2\relax{%
  \@calfont@helper#1\relax\relax%
  \if\relax#2\relax\else\ \@calfont@helper#2\relax\fi}
\def\@calfont@helper#1#2\relax{%
  \ifcat\relax#1#1% for escape sequences
  \else%
    \ifnum`#1=\lccode`#1\relax%
      \mathchoice%
        {\scalebox{1.20529}{$\m@th\m@thcalbd{#1}$}}%
        {\scalebox{1.20529}{$\m@th\m@thcalbd{#1}$}}%
        {\scalebox{.90396}{$\m@th\mkern-1.5mu\m@thcalbd{#1}$}}%
        {\scalebox{.70308}{$\m@th\mkern-1.1mu\m@thcalbd{#1}$}}%      
    \else\m@thcalbd{#1}\fi%
  \fi%
  \ifx\relax#2\relax\else\@calfont@helper#2\relax\fi}
\newcommand*{\mathcalbd}[1]{\bgroup\calfont@helper#1 \relax\relax\egroup}
\newcommand*{\mathcalbdnocorr}[1]{\m@thcalbd{#1}}
\makeatother

\begin{document}

Without height correction: $A\mathcalbdnocorr{A} a\mathcalbdnocorr{a}$

With height correction: $A\mathcalbd{A} a\mathcalbd{a}$

\bigskip

Two problems with the \verb+\mathcalbd+ macro:
\begin{enumerate}
\item \verb+\mathcalbd{A_a}+ does not work while
  \verb+\mathcalbdnocorr{A_a}+ does ($\mathcalbdnocorr{A_a}$). Same is
  true for superscripts.

\item \verb+\boldsymbol{\mathcalbd{A}}+ ($\boldsymbol{\mathcalbd{A}}$)
  does not work if package \texttt{bm} is loaded
\end{enumerate}


\end{document}

여기에 이미지 설명을 입력하세요

답변1

대문자와 소문자에 서로 다른 배율 인수를 갖는 두 개의 글꼴 모음을 사용할 수 있습니다.

\documentclass{article}

\usepackage{arevmath}
\usepackage{amsmath}
\usepackage{bm}

\DeclareFontFamily{U}{BOONDOX-calo}{\skewchar\font=45 }
\DeclareFontShape{U}{BOONDOX-calo}{m}{n}{<-> s*[1.1] BOONDOX-r-calo}{}
\DeclareFontShape{U}{BOONDOX-calo}{b}{n}{<-> s*[1.1] BOONDOX-b-calo}{}
\DeclareFontFamily{U}{BOONDOX-calo-scaled}{\skewchar\font=45 }
\DeclareFontShape{U}{BOONDOX-calo-scaled}{m}{n}{<-> s*[1.20529] BOONDOX-r-calo}{}
\DeclareFontShape{U}{BOONDOX-calo-scaled}{b}{n}{<-> s*[1.20529] BOONDOX-b-calo}{}
\DeclareMathAlphabet{\mathcalupper}{U}{BOONDOX-calo}{m}{n}
\SetMathAlphabet{\mathcalupper}{bold}{U}{BOONDOX-calo}{b}{n}
\DeclareMathAlphabet{\mathcallower}{U}{BOONDOX-calo-scaled}{m}{n}
\SetMathAlphabet{\mathcallower}{bold}{U}{BOONDOX-calo-scaled}{b}{n}

\ExplSyntaxOn
\NewDocumentCommand{\mathcalbd}{m}
 {{
  \tl_set:Nn \l_tmpa_tl { #1 }
  \regex_replace_all:nnN { [a-z] } { \{ \c{mathcallower}\{\0\} \} } \l_tmpa_tl
  \mathcalupper{ \tl_use:N \l_tmpa_tl }
 }}
\ExplSyntaxOff

\begin{document}


With height correction: $A\mathcalbd{A} a\mathcalbd{a}$

Subscript: $\mathcalbd{A_a} X_{a\mathcalbd{a}}$

Bold: $\bm{A} \bm{\mathcalbd{A}} \bm{a}\bm{\mathcalbd{a}}$

Bold with subscripts: $\bm{\mathcalbd{A_a}}$

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보