summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/uplatex/base/uplfonts.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-06-11 23:06:28 +0000
committerKarl Berry <karl@freefriends.org>2016-06-11 23:06:28 +0000
commita880c715c123c4ecf8da826a5283895cec739b42 (patch)
treed0950d1b4dbc38cdd8eec296333da8ed9b42d5d2 /Master/texmf-dist/source/uplatex/base/uplfonts.dtx
parent95b471835523e634d7a1a09c433dbd827d3af0ef (diff)
uplatex (11jun16)
git-svn-id: svn://tug.org/texlive/trunk@41370 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/uplatex/base/uplfonts.dtx')
-rw-r--r--Master/texmf-dist/source/uplatex/base/uplfonts.dtx166
1 files changed, 135 insertions, 31 deletions
diff --git a/Master/texmf-dist/source/uplatex/base/uplfonts.dtx b/Master/texmf-dist/source/uplatex/base/uplfonts.dtx
index 010a5c43b0b..05845476674 100644
--- a/Master/texmf-dist/source/uplatex/base/uplfonts.dtx
+++ b/Master/texmf-dist/source/uplatex/base/uplfonts.dtx
@@ -14,7 +14,7 @@
%
% \fi
%
-% \CheckSum{1811}
+% \CheckSum{2030}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -75,13 +75,16 @@
% \changes{v1.6a-u00}{2016/04/06}{p\LaTeX{}の変更に追随。}
% \changes{v1.6b-u00}{2016/04/30}{uptrace.styの冒頭でtracefnt.styを
% \cs{RequirePackageWithOptions}するようにした}
+% \changes{v1.6c}{2016/06/06}{v1.6aでの修正で\'e など全てのアクセント付き文字で
+% 周囲に\cs{xkanjiskip}が入らなくなっていたのを修正。}
+% \changes{v1.6c-u00}{2016/06/06}{p\LaTeX{}の変更に追随。}
% \fi
%
% \iffalse
%<*driver>
\NeedsTeXFormat{pLaTeX2e}
% \fi
-\ProvidesFile{uplfonts.dtx}[2016/04/30 v1.6b-u00 upLaTeX New Font Selection Scheme]
+\ProvidesFile{uplfonts.dtx}[2016/06/06 v1.6c-u00 upLaTeX New Font Selection Scheme]
% \iffalse
\documentclass{jltxdoc}
\GetFileInfo{uplfonts.dtx}
@@ -1643,51 +1646,152 @@
% \begin{macrocode}
%<*pldefs>
\ProvidesFile{upldefs.ltx}
- [2016/04/06 v1.6a-u00 upLaTeX Kernel (Default settings)]
+ [2016/06/06 v1.6c-u00 upLaTeX Kernel (Default settings)]
+%</pldefs>
% \end{macrocode}
%
% \subsection{合成文字}
-% \begin{macro}{\@text@composite}
-% \begin{macro}{\@text@composite@x}
% \LaTeXe{}のカーネルのコードをそのまま使うと、p\TeX{}のベースライン
% 補正量がゼロでないときに合成文字がおかしくなっていたため、対策します。
-% \changes{v1.6a}{2016/04/01}{ベースライン補正量が0でないときに
-% \cs{AA}など一部の合成文字がおかしくなることへの対応。}
% \begin{macrocode}
-%</pldefs>
-%<platexrelease>\plIncludeInRelease{2016/04/17}{\@text@composite}
+%<platexrelease>\plIncludeInRelease{2016/06/10}{\@text@composite}
%<platexrelease> {Fix for non-zero baselineshift}%
%<*pldefs|platexrelease>
-\def\@text@composite#1#2#3#{%
- \begingroup
- \setbox\z@=\hbox\bgroup%
- \ybaselineshift\z@\tbaselineshift\z@
- \expandafter\@text@composite@x
- \csname\string#1-\string#2\endcsname}
+% \end{macrocode}
+% \begin{macro}{\g@tlastchart@}
+% \TeX\ Live 2015で追加された\cs{lastnodechar}を利用して、
+% 「直前の文字」の符号位置を得るコードです。\cs{lastnodechar}が未定義の場合は
+% $-1$が返ります。
+% \changes{v1.6c}{2016/06/06}{マクロ追加}
+% \begin{macrocode}
+\def\g@tlastchart@#1{#1\ifx\lastnodechar\@undefined\m@ne\else\lastnodechar\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pltx@isletter}
+% 第一引数のマクロ(|#1|)の置換テキストが、カテゴリコード11か12の文字トークン1文字であった
+% 場合に第二引数の内容に展開され、そうでない場合は第三引数の内容に展開されます。
+% \changes{v1.6c}{2016/06/06}{マクロ追加}
+% \begin{macrocode}
+\def\pltx@mark{\pltx@mark@}
+\let\pltx@scanstop\relax
+\long\def\pltx@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+\long\def\pltx@isletter#1{%
+ \expandafter\pltx@isletter@i\romannumeral-`0#1\pltx@scanstop}
+\long\def\pltx@isletter@i#1\pltx@scanstop{%
+ \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}%
+ {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}}
+\long\def\pltx@isletter@ii#1\pltx@scanstop#{%
+ \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi%
+ {\pltx@isletter@iii}{\pltx@isletter@iv}}
+\long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo}
+\long\def\pltx@isletter@iv#1#2#3\pltx@mark{%
+ \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{%
+ \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi
+ {\@firstoftwo}{\@secondoftwo}%
+ }{\@secondoftwo}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@text@composite}
+% \begin{macro}{\@text@composite@x}
+% \changes{v1.6a}{2016/04/01}{ベースライン補正量が0でないときに
+% \cs{AA}など一部の合成文字がおかしくなることへの対応。}
+% \changes{v1.6c}{2016/06/06}{v1.6aでの修正で\'e など全てのアクセント付き文字で
+% 周囲に\cs{xkanjiskip}が入らなくなっていたのを修正。}
+% \begin{macrocode}
+%<platexrelease>\def\@text@composite#1#2#3\@text@composite{%
+%<platexrelease> \expandafter\@text@composite@x
+%<platexrelease> \csname\string#1-\string#2\endcsname}
\def\@text@composite@x#1#2{%
\ifx#1\relax
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi
- #1{#2}\egroup
- \leavevmode
- \expandafter\lower
- \iftdir
- \ifmdir
- \ifmmode\tbaselineshift\else\ybaselineshift\fi
- \else
- \tbaselineshift
- \fi
+ #2%
+ \else\pltx@isletter{#1}{#1}{%
+ \begingroup
+ \setbox\z@\hbox\bgroup%
+ \ybaselineshift\z@\tbaselineshift\z@
+ #1%
+ \g@tlastchart@\@tempcntb
+ \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}%
+ \aftergroup\pltx@composite@temp
+ \egroup
+% \end{macrocode}
+% \begin{macrocode}
+ \ifnum\@tempcntb<\z@
+ \@tempdima=\iftdir
+ \ifmdir
+ \ifmmode\tbaselineshift\else\ybaselineshift\fi
+ \else
+ \tbaselineshift
+ \fi
+ \else
+ \ybaselineshift
+ \fi
+ \@tempcntb=\@cclvi
+ \else\@tempdima=\z@
+ \fi
+% \end{macrocode}
+% アクセントが付く「本体の文字」が欧文文字と推測される場合には、
+% 一旦数式モードに入ることによって\cs{xkanjiskip}が前後に入るようにします。
+% 必要なら、数式モードの前後に\cs{null}を補って\cs{xkanjiskip}の挿入を抑制します。
+% \begin{macrocode}
+ \ifnum\@tempcntb<\@cclvi
+ \ifnum\@tempcntb>\m@ne\ifnum\@tempcntb<\@cclvi
+ \ifodd\xspcode\@tempcntb\else\leavevmode\hbox{}\fi
+ \fi\fi
+ \begingroup\mathsurround\z@$%
+ \ifx\textbaselineshiftfactor\@undefined\else
+ \textbaselineshiftfactor\z@\fi
+ \box\z@
+ $\endgroup%
+ \ifnum\@tempcntb>\m@ne\ifnum\@tempcntb<\@cclvi
+ \ifnum\xspcode\@tempcntb<2\hbox{}\fi
+ \fi\fi
+% \end{macrocode}
+% \begin{macrocode}
\else
- \ybaselineshift
+ \ifdim\@tempdima=\z@{\ybaselineshift\z@\tbaselineshift\z@#1}%
+ \else\lower\@tempdima\box\z@\fi
\fi
- \box\z@
- \endgroup}
+ \endgroup}%
+ \fi
+}
%</pldefs|platexrelease>
%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\@text@composite}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\let\g@tlastchart@\@undefined
+%<platexrelease>\let\pltx@isletter\@undefined
+%<platexrelease>\def\@text@composite#1#2#3#{%
+%<platexrelease> \begingroup
+%<platexrelease> \setbox\z@=\hbox\bgroup%
+%<platexrelease> \ybaselineshift\z@\tbaselineshift\z@
+%<platexrelease> \expandafter\@text@composite@x
+%<platexrelease> \csname\string#1-\string#2\endcsname}
+%<platexrelease>\def\@text@composite@x#1#2{%
+%<platexrelease> \ifx#1\relax
+%<platexrelease> \expandafter\@secondoftwo
+%<platexrelease> \else
+%<platexrelease> \expandafter\@firstoftwo
+%<platexrelease> \fi
+%<platexrelease> #1{#2}\egroup
+%<platexrelease> \leavevmode
+%<platexrelease> \expandafter\lower
+%<platexrelease> \iftdir
+%<platexrelease> \ifmdir
+%<platexrelease> \ifmmode\tbaselineshift\else\ybaselineshift\fi
+%<platexrelease> \else
+%<platexrelease> \tbaselineshift
+%<platexrelease> \fi
+%<platexrelease> \else
+%<platexrelease> \ybaselineshift
+%<platexrelease> \fi
+%<platexrelease> \box\z@
+%<platexrelease> \endgroup}
+%<platexrelease>\plEndIncludeInRelease
%<platexrelease>\plIncludeInRelease{0000/00/00}{\@text@composite}
%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\let\g@tlastchart@\@undefined
+%<platexrelease>\let\pltx@isletter\@undefined
%<platexrelease>\def\@text@composite#1#2#3\@text@composite{%
%<platexrelease> \expandafter\@text@composite@x
%<platexrelease> \csname\string#1-\string#2\endcsname}