diff options
Diffstat (limited to 'Master/texmf-dist/source/uplatex/base/uplfonts.dtx')
-rw-r--r-- | Master/texmf-dist/source/uplatex/base/uplfonts.dtx | 217 |
1 files changed, 190 insertions, 27 deletions
diff --git a/Master/texmf-dist/source/uplatex/base/uplfonts.dtx b/Master/texmf-dist/source/uplatex/base/uplfonts.dtx index 5e0489f233e..eeff52edb43 100644 --- a/Master/texmf-dist/source/uplatex/base/uplfonts.dtx +++ b/Master/texmf-dist/source/uplatex/base/uplfonts.dtx @@ -7,7 +7,7 @@ % % Copyright (c) 2010 ASCII MEDIA WORKS % Copyright (c) 2016 Takuji Tanaka -% Copyright (c) 2016 Japanese TeX Development Community +% Copyright (c) 2016-2017 Japanese TeX Development Community % % This file is part of the upLaTeX2e system (community edition). % -------------------------------------------------------------- @@ -66,13 +66,22 @@ % \changes{v1.6e}{2016/06/26}{v1.6a以降の修正で全てのアクセント付き文字で % トラブルが相次いだため、いったんパッチを除去。} % \changes{v1.6e-u00}{2016/06/29}{p\LaTeX{}の変更に追随。} +% \changes{v1.6f}{2017/02/20}{ptrace.styのplatexrelease対応} +% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を追加} +% \changes{v1.6f}{2017/02/20}{\cs{strutbox}を縦横両対応に} +% \changes{v1.6f}{2017/02/20}{\cs{strutbox}の代わりに\cs{ystrutbox}を使用} +% \changes{v1.6f}{2017/02/20}{\cs{ystrut}を追加} +% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を組み立てるように} +% \changes{v1.6f-u00}{2017/03/05}{p\LaTeX{}の変更に追随。} +% \changes{v1.6g}{2017/03/07}{ベースライン補正量を修正} +% \changes{v1.6g-u00}{2017/03/08}{p\LaTeX{}の変更に追随。} % \fi % % \iffalse %<*driver> \NeedsTeXFormat{pLaTeX2e} % \fi -\ProvidesFile{uplfonts.dtx}[2016/06/29 v1.6e-u00 upLaTeX New Font Selection Scheme] +\ProvidesFile{uplfonts.dtx}[2017/03/08 v1.6g-u00 upLaTeX New Font Selection Scheme] % \iffalse \documentclass{jltxdoc} \GetFileInfo{uplfonts.dtx} @@ -146,7 +155,7 @@ %<*trace> \NeedsTeXFormat{pLaTeX2e} \ProvidesPackage{uptrace} - [2016/04/30 v1.6b-u00 Standard upLaTeX package (font tracing)] + [2017/03/05 v1.6f-u00 Standard upLaTeX package (font tracing)] \RequirePackageWithOptions{tracefnt} %</trace> % \end{macrocode} @@ -415,12 +424,25 @@ % % フォントサイズが変更されたときに、|\set@fontsize|コマンドで更新されます。 % +% 従来、横組ボックス用の支柱は|\strutbox|で、高さと深さが7対3となっていました。 +% これはp\LaTeX{}単体では問題になりませんでしたが、海外製の\LaTeX{}パッケージを +% 縦組で使用した場合に、意図しない幅や高さが取得されることがありました。 +% この不都合を回避するため、コミュニティ版p\LaTeX{}では次の方法をとります。 +% \begin{itemize} +% \item |\ystrutbox|(新設):高さと深さが7対3の横組ボックス用の支柱 +% \item |\tstrutbox|:高さと深さが5対5の縦組ボックス用の支柱 +% \item |\zstrutbox|:高さと深さが7対3の縦組ボックス用の支柱 +% \item |\strutbox|(仕様変更):縦横のディレクションに応じて +% |\tstrutbox|または|\ystrutbox|に展開されるマクロ +% \end{itemize} +% すなわち、従来のp\LaTeX{}における|\strutbox|と同じ挙動を示すのが、 +% 新設された|\ystrutbox|ということになります。 +% % \begin{macro}{\tstrutbox} % \begin{macro}{\zstrutbox} -% |\tstrutbox|は高さと深さが5対5、 -% |\zstrutbox|は高さと深さが7対3の支柱ボックスとなります。 +% |\tstrutbox|は高さと深さが5対5、 +% |\zstrutbox|は高さと深さが7対3の支柱ボックスとなります。 % これらは縦組ボックスの行間の調整などに使います。 -% なお、横組ボックス用の支柱は|\strutbox|で、高さと深さが7対3となっています。 % \begin{macrocode} \newbox\tstrutbox \newbox\zstrutbox @@ -428,24 +450,80 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\ystrutbox} +% |\ystrutbox|は高さと深さが7対3の横組ボックス用の支柱です。 +% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を追加} +% \begin{macrocode} +%</plcore> +%<platexrelease>\plIncludeInRelease{2017/04/08}{\ystrutbox} +%<platexrelease> {Add \ystrutbox}% +%<*plcore|platexrelease> +\newbox\ystrutbox +%</plcore|platexrelease> +%<platexrelease>\plEndIncludeInRelease +%<platexrelease>\plIncludeInRelease{0000/00/00}{\ystrutbox} +%<platexrelease> {Add \ystrutbox}% +%<platexrelease>\let\ystrutbox\@undefined +%<platexrelease>\plEndIncludeInRelease +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\strutbox} +% |\strutbox|は縦横両対応です。 +% \changes{v1.6f}{2017/02/20}{\cs{strutbox}を縦横両対応に} +% \begin{macrocode} +%<platexrelease>\plIncludeInRelease{2017/04/08}{\strutbox} +%<platexrelease> {Add \strutbox}% +%<*plcore|platexrelease> +\def\strutbox{\iftdir\tstrutbox\else\ystrutbox\fi} +%</plcore|platexrelease> +%<platexrelease>\plEndIncludeInRelease +%<platexrelease>\plIncludeInRelease{0000/00/00}{\strutbox} +%<platexrelease> {Add \strutbox}% +%<platexrelease>\newbox\strutbox % emulation purpose only +%<platexrelease>\plEndIncludeInRelease +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\strut} -% \begin{macro}{\tstrut} -% \begin{macro}{\zstrut} -% |\strutbox|は|\yoko|ディレクションで組まれていますので、 -% 縦組ボックス内で|\unhcopy|をするとエラーとなります。 -% このマクロは\file{ltplain.dtx}で定義されています。 +% ディレクションに応じて|\ystrutbox|と|\tstrutbox|を使い分けます。 +% ^^A |\strutbox|は|\yoko|ディレクションで組まれていますので、 +% ^^A 縦組ボックス内で|\unhcopy|をするとエラーとなります。 +% 元々このマクロは\file{ltplain.dtx}で定義されています。 % % \changes{v1.1c}{1995/08/24}{``\cs{centerling}~\cs{strut}''の幅がゼロに % なってしまうのを修正} % \changes{v1.3h}{1999/08/09}{縦組のとき、幅のあるボックスになってしまう % のを修正} +% \changes{v1.6f}{2017/02/20}{\cs{strutbox}の代わりに\cs{ystrutbox}を使用} % \begin{macrocode} +%<platexrelease>\plIncludeInRelease{2017/04/08}{\strut} +%<platexrelease> {Use \ystrutbox}% +%<*plcore|platexrelease> \def\strut{\relax \ifydir - \ifmmode\copy\strutbox\else\unhcopy\strutbox\fi + \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi \else \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi \fi} +%</plcore|platexrelease> +%<platexrelease>\plEndIncludeInRelease +%<platexrelease>\plIncludeInRelease{0000/00/00}{\strut} +%<platexrelease> {Use \ystrutbox}% +%<platexrelease>\def\strut{\relax +%<platexrelease> \ifydir +%<platexrelease> \ifmmode\copy\strutbox\else\unhcopy\strutbox\fi +%<platexrelease> \else +%<platexrelease> \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi +%<platexrelease> \fi} +%<platexrelease>\plEndIncludeInRelease +%<*plcore> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tstrut} +% \begin{macro}{\zstrut} +% \begin{macrocode} \def\tstrut{\relax\hbox{\tate \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi}} \def\zstrut{\relax\hbox{\tate @@ -453,6 +531,24 @@ % \end{macrocode} % \end{macro} % \end{macro} +% +% \begin{macro}{\ystrut} +% \changes{v1.6f}{2017/02/20}{\cs{ystrut}を追加} +% \begin{macrocode} +%</plcore> +%<platexrelease>\plIncludeInRelease{2017/04/08}{\ystrut} +%<platexrelease> {Add \ystrut}% +%<*plcore|platexrelease> +\def\ystrut{\relax\hbox{\yoko + \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi}} +%</plcore|platexrelease> +%<platexrelease>\plEndIncludeInRelease +%<platexrelease>\plIncludeInRelease{0000/00/00}{\ystrut} +%<platexrelease> {Add \ystrut}% +%<platexrelease>\let\ystrut\@undefined +%<platexrelease>\plEndIncludeInRelease +%<*plcore> +% \end{macrocode} % \end{macro} % % @@ -1078,6 +1174,10 @@ % |\fontsize|コマンドの内部形式です。 % ベースラインの設定と、支柱の設定を行ないます。 % \begin{macrocode} +%</plcore|trace> +%<platexrelease|trace>\plIncludeInRelease{2017/04/08}{\set@fontsize} +%<platexrelease|trace> {Construct \ystrutbox}% +%<*plcore|platexrelease|trace> \def\set@fontsize#1#2#3{% \@defaultunits\@tempdimb#2pt\relax\@nnil \edef\f@size{\strip@pt\@tempdimb}% @@ -1091,9 +1191,10 @@ \normalbaselineskip\baselineskip % \end{macrocode} % ここで、ベースラインシフトの調整と支柱を組み立てます。 +% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を組み立てるように} % \begin{macrocode} \adjustbaseline - \setbox\strutbox\hbox{\yoko + \setbox\ystrutbox\hbox{\yoko \vrule\@width\z@ \@height.7\baselineskip \@depth.3\baselineskip}% \setbox\tstrutbox\hbox{\tate @@ -1106,18 +1207,58 @@ % フォントサイズとベースラインに関する診断情報を出力します。 % \begin{macrocode} %<*trace> - \ifnum \tracingfonts>\tw@ - \ifx\f@linespread\@empty - \let\reserved@a\@empty - \else - \def\reserved@a{\f@linespread x}% - \fi - \@font@info{Changing size to\space - \f@size/\reserved@a \f@baselineskip}% - \aftergroup\type@restoreinfo - \fi + \ifnum \tracingfonts>\tw@ + \ifx\f@linespread\@empty + \let\reserved@a\@empty + \else + \def\reserved@a{\f@linespread x}% + \fi + \@font@info{Changing size to\space + \f@size/\reserved@a \f@baselineskip}% + \aftergroup\type@restoreinfo + \fi %</trace> \let\size@update\relax}} +%</plcore|platexrelease|trace> +%<platexrelease|trace>\plEndIncludeInRelease +%<platexrelease|trace>\plIncludeInRelease{0000/00/00}{\set@fontsize} +%<platexrelease|trace> {Construct \ystrutbox}% +%<platexrelease|trace>\def\set@fontsize#1#2#3{% +%<platexrelease|trace> \@defaultunits\@tempdimb#2pt\relax\@nnil +%<platexrelease|trace> \edef\f@size{\strip@pt\@tempdimb}% +%<platexrelease|trace> \@defaultunits\@tempskipa#3pt\relax\@nnil +%<platexrelease|trace> \edef\f@baselineskip{\the\@tempskipa}% +%<platexrelease|trace> \edef\f@linespread{#1}% +%<platexrelease|trace> \let\baselinestretch\f@linespread +%<platexrelease|trace> \def\size@update{% +%<platexrelease|trace> \baselineskip\f@baselineskip\relax +%<platexrelease|trace> \baselineskip\f@linespread\baselineskip +%<platexrelease|trace> \normalbaselineskip\baselineskip +%<platexrelease|trace> \adjustbaseline +%<platexrelease|trace> \setbox\strutbox\hbox{\yoko +%<platexrelease|trace> \vrule\@width\z@ +%<platexrelease|trace> \@height.7\baselineskip \@depth.3\baselineskip}% +%<platexrelease|trace> \setbox\tstrutbox\hbox{\tate +%<platexrelease|trace> \vrule\@width\z@ +%<platexrelease|trace> \@height.5\baselineskip \@depth.5\baselineskip}% +%<platexrelease|trace> \setbox\zstrutbox\hbox{\tate +%<platexrelease|trace> \vrule\@width\z@ +%<platexrelease|trace> \@height.7\baselineskip \@depth.3\baselineskip}% +%<*trace> +%<platexrelease|trace> \ifnum \tracingfonts>\tw@ +%<platexrelease|trace> \ifx\f@linespread\@empty +%<platexrelease|trace> \let\reserved@a\@empty +%<platexrelease|trace> \else +%<platexrelease|trace> \def\reserved@a{\f@linespread x}% +%<platexrelease|trace> \fi +%<platexrelease|trace> \@font@info{Changing size to\space +%<platexrelease|trace> \f@size/\reserved@a \f@baselineskip}% +%<platexrelease|trace> \aftergroup\type@restoreinfo +%<platexrelease|trace> \fi +%</trace> +%<platexrelease|trace> \let\size@update\relax}} +%<platexrelease|trace>\plEndIncludeInRelease +%<*plcore|trace> % \end{macrocode} % \end{macro} % @@ -1141,7 +1282,8 @@ % しまうため、計算した値が大きくなってしまいます。そこで、このボックス % の中でゼロにするようにしました。また、``/''と比較していたのを``M''に % しました。 -% \changes{v1.3k}{2001/05/10}{\cs{adjustbaseline}の調整量} +% \changes{v1.3k}{2001/05/10}{\cs{adjustbaseline}の調整量 +% (再び`M'を基準にした)} % \begin{macrocode} \newbox\adjust@box \newdimen\adjust@dimen @@ -1163,9 +1305,9 @@ % % \begin{eqnarray*} % \textmc{ベースラインシフト量} &=& -% \{ (\textmc{全角空白の深さ}) - (\textmc{/の深さ}) \} \\ +% \{ (\textmc{全角空白の深さ}) - (\textmc{Mの深さ}) \} \\ % &&- \frac{(\textmc{全角空白の高さ$+$深さ}) -% - (\textmc{/の高さ$+$深さ})}{2} +% - (\textmc{Mの高さ$+$深さ})}{2} % \end{eqnarray*} % % \begin{macrocode} @@ -1593,11 +1735,32 @@ % もとは\file{ltoutenc.dtx}で定義されています。 % % なお、|\_|を数式モードで使うと|\mathunderscore|が実行されます。 +% +% コミュニティ版では縦数式ディレクションでベースライン補正量が +% 変だったのを直しました。あわせて横ディレクションでもベースライン +% 補正に追随するようにしています。 +% \changes{v1.6g}{2017/03/07}{ベースライン補正量を修正} % \begin{macrocode} +%</plcore> +%<platexrelease>\plIncludeInRelease{2017/04/08}{\textunderscore} +%<platexrelease> {Baseline shift for \textunderscore}% +%<*plcore|platexrelease> \DeclareTextCommandDefault{\textunderscore}{% \leavevmode\kern.06em - \iftdir\raise-\tbaselineshift\fi + \raise-\iftdir\ifmdir\ybaselineshift + \else\tbaselineshift\fi + \else\ybaselineshift\fi \vbox{\hrule\@width.3em}} +%</plcore|platexrelease> +%<platexrelease>\plEndIncludeInRelease +%<platexrelease>\plIncludeInRelease{0000/00/00}{\textunderscore} +%<platexrelease> {Baseline shift for \textunderscore}% +%<platexrelease>\DeclareTextCommandDefault{\textunderscore}{% +%<platexrelease> \leavevmode\kern.06em +%<platexrelease> \iftdir\raise-\tbaselineshift\fi +%<platexrelease> \vbox{\hrule\@width.3em}} +%<platexrelease>\plEndIncludeInRelease +%<*plcore> % \end{macrocode} % \end{macro} % |