Current File : //usr/share/texlive/texmf-dist/doc/fonts/tipa/boxchar.sty |
% boxchar.sty --- for displaying large scale character images.
% Copyright 2002 FUKUI Rei
%
% This program may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.2
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.2 or later is part of all distributions of LaTeX
% version 1999/12/01 or later.
%
% This program consists of all files listed in Manifest.txt.
%
% 2001/12/24 Rei Fukui
% For extra huge size fonts, some modifications necessary to the *.fd
% files.
% Without the following, NFSS will complain because T3 and U/tipx
% are not declared at this moment.
{\fontencoding{T3}\selectfont
\fontencoding{U}\fontfamily{tipx}\selectfont}
% Redefine several font commands. For xipa and xipx fonts, these
% redefinitions are unnecessary.
\DeclareFontShape{T3}{cmr}{m}{n}{%
<5> <6> <7> <8> tipa8
<9> tipa9
<10> <10.95> tipa10
<12> <14.4> tipa12
<17.28> <20.74> <24.88> tipa17
<25-> tipa10
}{}
\DeclareFontShape{U}{tipx}{m}{n}{%
<5> <6> <7> <8> tipx8
<9> tipx9
<10> <10.95> tipx10
<12> <14.4> tipx12
<17.28> <20.74> <24.88> tipx17
<25-> tipx10
}{}
% An extra huge size font for the MainItem.
% Can be used with 10pt, 11pt, and 12pt texts.
\def\ExHuge{%
\ifnum\@ptsize=0 % 10*1.2^9 = 51.5978
\fontsize{51.6}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=1 % 11*1.2^9 = 56.75758
\fontsize{56.758}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=2 % 12*1.2^9 = 61.91736
\fontsize{61.917}{\f@baselineskip}\selectfont
\fi\fi\fi}
\def\ExHugeTipa{%
\ifnum\@ptsize=0 % 10*1.2^9 = 51.5978
\fontencoding{T3}\fontsize{51.6}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=1 % 11*1.2^9 = 56.75758
\fontencoding{T3}\fontsize{56.758}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=2 % 12*1.2^9 = 61.91736
\fontencoding{T3}\fontsize{61.917}{\f@baselineskip}\selectfont
\fi\fi\fi}
% Another extra huge size font for the SubItem.
% Can be used with 10pt, 11pt, and 12pt texts.
\def\exHuge{%
\ifnum\@ptsize=0 % 10*1.2^8 = 42.998
\fontsize{43}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=1 % 11*1.2^8 = 47.298
\fontsize{47.298}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=2 % 12*1.2^8 = 51.5978
\fontsize{51.6}{\f@baselineskip}\selectfont
\fi\fi\fi}
\def\exHugeTipa{%
\ifnum\@ptsize=0 % 10*1.2^8 = 42.998
\fontencoding{T3}\fontsize{43}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=1 % 11*1.2^8 = 47.298
\fontencoding{T3}\fontsize{47.298}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=2 % 12*1.2^8 = 51.5978
\fontencoding{T3}\fontsize{51.6}{\f@baselineskip}\selectfont
\fi\fi\fi}
% Another extra huge size font for the SubItem.
% Can be used with 10pt, 11pt, and 12pt texts.
\def\exhuge{%
\ifnum\@ptsize=0 % 10*1.2^6 = 29.85984
\fontsize{29.86}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=1 % 11*1.2^6 = 32.845824
\fontsize{32.846}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=2 % 12*1.2^6 = 35.831808
\fontsize{35.832}{\f@baselineskip}\selectfont
\fi\fi\fi}
\def\exhugeTipa{%
\ifnum\@ptsize=0 % 10*1.2^6 = 29.85984
\fontencoding{T3}\fontsize{29.86}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=1 % 11*1.2^6 = 32.845824
\fontencoding{T3}\fontsize{32.846}{\f@baselineskip}\selectfont
\else\ifnum\@ptsize=2 % 12*1.2^6 = 35.831808
\fontencoding{T3}\fontsize{35.832}{\f@baselineskip}\selectfont
\fi\fi\fi}
% Produces a super huge image such that 10pt = 10cm.
\def\SuperHuge{%
\fontsize{284.52756}{\f@baselineskip}\selectfont}
\def\SuperHugeTipa{%
\fontencoding{T3}\fontsize{284.52756}{\f@baselineskip}\selectfont}
% A huge size font for the SubSubItem.
\def\hugeTipa{\huge\fontencoding{T3}\selectfont}
% Macros for setting up character box size and margins.
\newcommand\chaboxvmarginrate{.8}
\newcommand\chaboxhmarginrate{.6}
% Calculate various sizes for an IPA box.
% global: \ch@rboxxheight, \ch@rboxht, \ch@rboxdp, \ch@rboxwd
% Sizes can be changed by #1 (font size) and the above two values.
\def\ipasetb@xsize#1#2{{%
\setbox\z@\hbox{#2{x}}%
\xdef\ch@rboxxheight{\the\ht\z@\relax}%
\dimen\z@\ht\z@ \dimen\@ne \chaboxvmarginrate\dimen\z@
\edef\ch@rboxvmargin{\the\dimen\@ne\relax}%
\dimen\z@\wd\z@ \dimen\@ne \chaboxhmarginrate\dimen\z@
\edef\ch@rboxhmargin{\the\dimen\@ne\relax}%
\setbox\z@\hbox{#2{l}}%
\dimen\z@\ht\z@ \advance\dimen\z@ \ch@rboxvmargin
\xdef\ch@rboxht{\the\dimen\z@\relax}%
\setbox\z@\hbox{#2{p}}%
\dimen\z@\dp\z@ \advance\dimen\z@ \ch@rboxvmargin
\xdef\ch@rboxdp{\the\dimen\z@\relax}%
\setbox\z@\hbox{#2{m}}%
\dimen\z@\wd\z@ \advance\dimen\z@ \ch@rboxhmargin
\xdef\ch@rboxwd{\the\dimen\z@\relax}}}
\def\ptmxheight{128.0374pt\relax}
\def\ipasetb@xsizevar#1#2{{%
\setbox\z@\hbox{#2{x}}%
% \xdef\ch@rboxxheight{\the\ht\z@\relax}%
\xdef\ch@rboxxheight{\ptmxheight\relax}%
\dimen\z@\ht\z@ \dimen\@ne \chaboxvmarginrate\dimen\z@
\edef\ch@rboxvmargin{\the\dimen\@ne\relax}%
\dimen\z@\wd\z@ \dimen\@ne \chaboxhmarginrate\dimen\z@
\edef\ch@rboxhmargin{\the\dimen\@ne\relax}%
\setbox\z@\hbox{#2{l}}%
\dimen\z@\ht\z@ \advance\dimen\z@ \ch@rboxvmargin
\xdef\ch@rboxht{\the\dimen\z@\relax}%
\setbox\z@\hbox{#2{p}}%
\dimen\z@\dp\z@ \advance\dimen\z@ \ch@rboxvmargin
\xdef\ch@rboxdp{\the\dimen\z@\relax}%
\setbox\z@\hbox{#2#1}%
\dimen\z@\wd\z@ \advance\dimen\z@ \ch@rboxhmargin
\xdef\ch@rboxwd{\the\dimen\z@\relax}}}
\def\rigidframe{\let\ipasetb@xsize\ipasetb@xsizevar}
\def\doubleframebox#1#2{%
\hbox{\fboxrule.8pt\fboxsep3pt\fbox{%
\fboxrule.4pt\fboxsep\z@\fbox{\symbolb@x{#1}{#2}}}}}
\def\singleframebox#1#2{%
\hbox{\fboxrule.4pt\fboxsep\z@\fbox{\symbolb@x{#1}{#2}}}}
% The main macro for displaying a large scale image of a character in
% a framebox with the base and x-height lines indicated.
% Note that the frame is not drawn by this macro.
%
% Arguments:
% #1 = the character to display
% #2 = font size
%
% The result of this macro is an \hbox of which the width is
% \ch@rboxwd and the height is \ch@rboxtotalht.
\def\symbolb@x#1#2{{%
\ipasetb@xsize{#1}{#2}\setbox\z@\hbox{#2{#1}}%
\dimen\z@\ch@rboxht \advance\dimen\z@ by\ch@rboxdp
\edef\ch@rboxtotalht{\the\dimen\z@}%
\hbox to\ch@rboxwd{\hsize\ch@rboxwd
\hss
\vbox to\ch@rboxtotalht{\offinterlineskip
\dott@dline{\ch@rboxxheight}{\patterni}
\dott@dline{\z@}{\patternii}
\dimen\z@\ch@rboxht \advance\dimen\z@ by-\ht\z@
\kern\dimen\z@
\hbox to\hsize{\hfil\box\z@\hfil}
\vss}%
\hss}}}
% A macro for drawing a dotted line.
\def\dott@dline#1#2{%
\dimen\z@\ch@rboxht \advance\dimen\z@ by-#1\relax
\vtop to\z@{\kern\the\dimen\z@
\hbox to\ch@rboxwd{\xleaders#2\hfil}\vss}}
% Patterns used for dotted lines
\def\patterni{\hbox to 2pt{% thin dotted line
\hfil\vrule width .5pt height .1pt depth .1pt \hfil}}
\def\patternii{\hbox to 2pt{% thick dotted line
\hfil\vrule width .5pt height .15pt depth .15pt \hfil}}
\endinput