summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/fixjfm
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-09-21 20:57:22 +0000
committerKarl Berry <karl@freefriends.org>2017-09-21 20:57:22 +0000
commitc51be598b9cd977c55d61a6a19a98920eb416a66 (patch)
tree4a402745da44483d03d70d0234f472d50ba64766 /Master/texmf-dist/tex/generic/fixjfm
parentbc6b2d9b5bc8514cdd075cb5ba3182b1c4c16d78 (diff)
fixjfm (21sep17)
git-svn-id: svn://tug.org/texlive/trunk@45370 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/fixjfm')
-rw-r--r--Master/texmf-dist/tex/generic/fixjfm/fixjfm.sty130
1 files changed, 97 insertions, 33 deletions
diff --git a/Master/texmf-dist/tex/generic/fixjfm/fixjfm.sty b/Master/texmf-dist/tex/generic/fixjfm/fixjfm.sty
index dbfe4fa51af..08e6f6f3d5b 100644
--- a/Master/texmf-dist/tex/generic/fixjfm/fixjfm.sty
+++ b/Master/texmf-dist/tex/generic/fixjfm/fixjfm.sty
@@ -11,13 +11,15 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax
\else
- \ProvidesPackage{fixjfm}[2017/09/12 v0.5 Fix JFM (for *pTeX)]%
+ \ProvidesPackage{fixjfm}[2017/09/21 v0.6 Fix JFM (for *pTeX)]%
\fi
\edef\FIXJFMDOTSTYRESTORECATCODE{\catcode`\noexpand\@=\the\catcode`\@\relax}
\catcode`\@=11\relax
+% common utilities
+
\def\fixjfm@ifprimitive#1{%
\begingroup
\edef\fixjfm@temp@meaning{\meaning#1}%
@@ -35,10 +37,44 @@
\def\fixjfm@empty{}
+\begingroup
+ \let\CATCODE=\catcode
+ \let\RELAX=\relax
+ \let\GDEF=\gdef
+ \let\ENDGROUP=\endgroup
+ \CATCODE`\k=12\RELAX
+ \CATCODE`\a=12\RELAX
+ \CATCODE`\n=12\RELAX
+ \CATCODE`\j=12\RELAX
+ \CATCODE`\i=12\RELAX
+ \CATCODE`\c=12\RELAX
+ \CATCODE`\h=12\RELAX
+ \CATCODE`\r=12\RELAX
+ \CATCODE`\t=12\RELAX
+ \CATCODE`\e=12\RELAX
+ \GDEF\FIXJFM@KANJICHARACTER{kanji character }%
+\ENDGROUP
+
+\def\fixjfm@get@inhibitxspcode#1{%
+ \expandafter\expandafter\expandafter\fixjfm@@get@inhibitxspcode
+ \expandafter\meaning\expandafter#1\FIXJFM@KANJICHARACTER\relax\fixjfm@nil}
+
+\expandafter\def\expandafter\fixjfm@@get@inhibitxspcode
+ \expandafter#\expandafter1\FIXJFM@KANJICHARACTER#2#3\fixjfm@nil{%
+ \count2=-1\relax
+ \def\fixjfm@temp@tokens{#1}%
+ \ifx\fixjfm@temp@tokens\fixjfm@empty
+ \count2=\inhibitxspcode`#2\relax
+ \fi}
+
+% \leavevmode
+
\fixjfm@ifprimitive\quitvmode
\let\leavevmode=\quitvmode
\fi
+% \fixjfmspacing
+
\def\fixjfmspacing{\FixJFMSpacing}
\newif\iffixjfm@lastnodechar@available@
@@ -56,6 +92,37 @@
\xdef\fixjfm@kana{\kansuji2}%
\xdef\fixjfm@other{\kansuji3}%
\endgroup
+ \csname newif\expandafter\endcsname\csname iffixjfm@sp@status@\endcsname
+ \def\fixjfm@ifautospacing{%
+ \fixjfm@sp@status@false
+ \begingroup
+ \kanjiskip=10pt\relax
+ \setbox0=\hbox{\fixjfm@kanji\fixjfm@kanji\fixjfm@kanji}%
+ \dimen4=\wd0\relax
+ \noautospacing
+ \setbox0=\hbox{\fixjfm@kanji\fixjfm@kanji\fixjfm@kanji}%
+ \dimen2=\wd0\relax
+ \expandafter
+ \endgroup
+ \ifdim\dimen4>\dimen2\relax
+ \fixjfm@sp@status@true
+ \fi}%
+ \def\fixjfm@ifautoxspacing{%
+ \fixjfm@sp@status@false
+ \begingroup
+ \xspcode`\A=3\relax
+ \inhibitxspcode\sjis"8ABF=3\relax % U+6F22: Kanji Han
+ \xkanjiskip=20pt\relax
+ \setbox0=\hbox{\fixjfm@kanji A\fixjfm@kanji}%
+ \dimen4=\wd0\relax
+ \noautoxspacing
+ \setbox0=\hbox{\fixjfm@kanji A\fixjfm@kanji}%
+ \dimen2=\wd0\relax
+ \expandafter
+ \endgroup
+ \ifdim\dimen4>\dimen2\relax
+ \fixjfm@sp@status@true
+ \fi}%
\def\FixJFMSpacing{\futurelet\fixjfm@sp@temp@token\fixjfm@fixspacing}%
\def\fixjfm@fixspacing{%
\begingroup
@@ -63,17 +130,32 @@
\edef\fixjfm@sp@temp@tokens{\fixjfm@sp@temp@token}%
\expandafter\fixjfm@@fixspacing\fixjfm@sp@temp@tokens\relax\fixjfm@sp@nil
\ifnum\count0>-1\relax
- \ifnum\count0<256\relax\hskip\xkanjiskip\else\hskip\kanjiskip\fi
+ \ifnum\count0<256\relax
+ \ifnum\xspcode\count0>1\relax
+ \ifnum\count2>1\relax
+ \fixjfm@ifautoxspacing
+ \iffixjfm@sp@status@
+ \hskip\xkanjiskip
+ \fi
+ \fi
+ \fi
+ \else
+ \fixjfm@ifautospacing
+ \iffixjfm@sp@status@
+ \hskip\kanjiskip
+ \fi
+ \fi
\setbox0=\hbox{%
\inhibitglue\char\count0\relax\fixjfm@sp@temp@token\inhibitglue}%
\setbox2=\hbox{%
\inhibitglue\char\count0 \fixjfm@sp@temp@token\inhibitglue}%
\dimen0=\wd2\relax
\advance\dimen0 by -\wd0\relax
- \fixjfm@temp@hskip\relax
+ \fixjfm@temp@hskip
\fi
\endgroup}%
\long\def\fixjfm@@fixspacing#1#2\fixjfm@sp@nil{%
+ \count2=1\relax
\ifcat#1\fixjfm@kanji
\else
\ifcat#1\fixjfm@kana
@@ -81,8 +163,12 @@
\ifcat#1\fixjfm@other
\else
\count0=-1\relax
+ \count2=0\relax
\fi
\fi
+ \fi
+ \ifnum\count2>0\relax
+ \fixjfm@get@inhibitxspcode#1\relax
\fi}%
\def\SetFixJFMSpacingStretch#1{\def\fixjfm@temp@hskip@stretch{#1}}%
\def\SetFixJFMSpacingShrink#1{\def\fixjfm@temp@hskip@shrink{#1}}%
@@ -120,12 +206,16 @@
\UseFixJFMCJKTextFontCommands
\fi
+% \inhibitglue
+
\fixjfm@ifprimitive\protected
\protected\def\<{\ifvmode\leavevmode\fi\inhibitglue}%
\else
\def\<{\inhibitglue}%
\fi
+% \fixjfmparindent
+
\def\fixjfmparindent{\FixJFMParindent}
\begingroup
@@ -139,39 +229,13 @@
\fi
\endgroup
-\begingroup
- \let\CATCODE=\catcode
- \let\RELAX=\relax
- \let\GDEF=\gdef
- \let\ENDGROUP=\endgroup
- \CATCODE`\k=12\RELAX
- \CATCODE`\a=12\RELAX
- \CATCODE`\n=12\RELAX
- \CATCODE`\j=12\RELAX
- \CATCODE`\i=12\RELAX
- \CATCODE`\c=12\RELAX
- \CATCODE`\h=12\RELAX
- \CATCODE`\r=12\RELAX
- \CATCODE`\t=12\RELAX
- \CATCODE`\e=12\RELAX
- \GDEF\FIXJFM@KANJICHARACTER{kanji character }%
-\ENDGROUP
-
\def\FixJFMParindent{\futurelet\fixjfm@pi@temp@token\fixjfm@fixparindent}
\def\fixjfm@fixparindent{%
- \expandafter\expandafter\expandafter\fixjfm@@fixparindent
- \expandafter\meaning\expandafter\fixjfm@pi@temp@token
- \FIXJFM@KANJICHARACTER\relax\fixjfm@pi@nil}
-
-\expandafter\def\expandafter\fixjfm@@fixparindent
- \expandafter#\expandafter1\FIXJFM@KANJICHARACTER#2#3\fixjfm@pi@nil{%
- \def\fixjfm@pi@temp@tokens{#1}%
- \ifx\fixjfm@pi@temp@tokens\fixjfm@empty
- \ifnum\the\inhibitxspcode`#2=2\relax
- \inhibitglue
- \fi
- \fi}
+ \begingroup
+ \fixjfm@get@inhibitxspcode\fixjfm@pi@temp@token
+ \ifnum\count2=2\relax\inhibitglue\fi
+ \endgroup}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname PushPostHook\endcsname\relax % everyhook.sty