summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/uplatex/base/uplfonts.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/uplatex/base/uplfonts.dtx')
-rw-r--r--Master/texmf-dist/source/uplatex/base/uplfonts.dtx217
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}
%