summaryrefslogtreecommitdiff
path: root/language/japanese/japanese-otf-uptex/test
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/japanese/japanese-otf-uptex/test
Initial commit
Diffstat (limited to 'language/japanese/japanese-otf-uptex/test')
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/Makefile192
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/era.tex111
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex133
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex69
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex45
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex31
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex181
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex204
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex17
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex75
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex75
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex14
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex313
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex291
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex191
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex293
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex158
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex103
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex75
19 files changed, 2571 insertions, 0 deletions
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/Makefile b/language/japanese/japanese-otf-uptex/test/uplatex/Makefile
new file mode 100644
index 0000000000..78974e127f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/Makefile
@@ -0,0 +1,192 @@
+UPTEX = uptex
+PTEX = ptex
+UPLATEX = uplatex
+PLATEX = platex -kanji=utf8
+DVIPS = dvips
+DVIPDFMX = dvipdfmx
+PDVITYPE = pdvitype
+
+all: otf sp art bsrg jis04 scale prop punct exclam
+
+otf: uplatex-otf platex-otf
+sp: uplatex-sp platex-sp
+art: uplatex-article platex-article
+brsg: uplatex-brsg platex-brsg
+jis04: uplatex-jis04 platex-jis04
+scale: uplatex-scale platex-scale
+prop: uplatex-prop platex-prop
+exclam: uplatex-exclam platex-exclam
+
+uplatex-otf:
+ for opt in default deluxe expert bold noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\def\class{ujarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-h-uplatex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\class{utarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-v-uplatex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-v-uplatex.dvi ; \
+ done
+
+platex-otf:
+ for opt in default deluxe expert bold noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\def\class{jarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-h-platex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\class{tarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-v-platex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-v-platex.dvi ; \
+ done
+
+uplatex-sp:
+ for opt in default deluxe expert bold noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\def\class{ujarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-h-uplatex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\class{utarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-v-uplatex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-v-uplatex.dvi ; \
+ done
+
+platex-sp:
+ for opt in default deluxe expert bold noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\def\class{jarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-h-platex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\class{tarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-v-platex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-v-platex.dvi ; \
+ done
+
+uplatex-article:
+ for opt in noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\def\class{article}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-a-uplatex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-a-uplatex.dvi ; \
+ done
+
+platex-article:
+ for opt in noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\def\class{article}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-a-platex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-a-platex.dvi ; \
+ done
+
+uplatex-brsg:
+ for opt in default expert; do \
+ for burasage in br oi; do \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{ujbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-h-uplatex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{utbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-v-uplatex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-v-uplatex.dvi ; \
+ done \
+ done
+
+platex-brsg:
+ for opt in default expert; do \
+ for burasage in br oi; do \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{jbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-h-platex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{tbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-v-platex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-v-platex.dvi ; \
+ done \
+ done
+
+uplatex-jis04:
+ for opt in default expert; do \
+ for brsg in br oi; do \
+ for jis in 00 04; do \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{ujarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-h-uplatex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{utarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-v-uplatex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-v-uplatex.dvi ; \
+ done \
+ done \
+ done
+
+platex-jis04:
+ for opt in default expert; do \
+ for brsg in br oi; do \
+ for jis in 00 04; do \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{jarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-h-platex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{tarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-v-platex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-v-platex.dvi ; \
+ done \
+ done \
+ done
+
+uplatex-scale:
+ for scl in default 0.5 1.0 1.5 2.0; do \
+ $(UPLATEX) "\def\scale{$$scl}\def\class{ujarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-uplatex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-uplatex.dvi ; \
+ done
+ for scl in default 1.0; do \
+ $(UPLATEX) "\def\scale{$$scl}\def\class{jsarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-js-uplatex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-js-uplatex.dvi ; \
+ done
+
+platex-scale:
+ for scl in default 0.5 1.0 1.5 2.0; do \
+ $(PLATEX) "\def\scale{$$scl}\def\class{jarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-platex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-platex.dvi ; \
+ done
+ for scl in default 1.0; do \
+ $(PLATEX) "\def\scale{$$scl}\def\class{jsarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-js-platex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-js-platex.dvi ; \
+ done
+
+uplatex-prop:
+ for test in 1 2; do \
+ $(UPLATEX) "\def\class{ujarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-h-uplatex.dvi ; \
+ $(DVIPDFMX) upkanatest$$test-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\class{utarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-v-uplatex.dvi ; \
+ $(DVIPDFMX) -l upkanatest$$test-v-uplatex.dvi ; \
+ done
+
+platex-prop:
+ for test in 1 2; do \
+ $(PLATEX) "\def\class{jarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-h-platex.dvi ; \
+ $(DVIPDFMX) upkanatest$$test-h-platex.dvi ; \
+ $(PLATEX) "\def\class{tarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-v-platex.dvi ; \
+ $(DVIPDFMX) -l upkanatest$$test-v-platex.dvi ; \
+ done
+
+punct:
+ for opt in default deluxe expert bold noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\input" punctuation.tex ; \
+ mv punctuation.dvi punctuation-$$opt.dvi ; \
+ $(DVIPDFMX) punctuation-$$opt.dvi ; \
+ done
+
+uplatex-exclam:
+ for opt in default deluxe noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\input" exclam.tex ; \
+ mv exclam.dvi exclam-$$opt-uplatex.dvi ; \
+ $(DVIPDFMX) exclam-$$opt-uplatex.dvi ; \
+ done
+
+platex-exclam:
+ for opt in default deluxe noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\input" exclam.tex ; \
+ mv exclam.dvi exclam-$$opt-platex.dvi ; \
+ $(DVIPDFMX) exclam-$$opt-platex.dvi ; \
+ done
+
+clean:
+ rm -f *.aux *.log *.dvi *.pdf
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/era.tex b/language/japanese/japanese-otf-uptex/test/uplatex/era.tex
new file mode 100644
index 0000000000..65be6c5245
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/era.tex
@@ -0,0 +1,111 @@
+% -*- coding: utf-8 -*-
+
+%%%%%%%%
+% ①,②,③,④,⑤,⑥ のどれかを実行すればよい。
+% ① platex, 新元号なし
+% $ platex era.tex
+% ② uplatex, 新元号なし
+% $ uplatex era.tex
+% ③ platex, 新元号あり
+% $ platex "\def\era{true}\input" era.tex
+% ④ uplatex, 新元号あり
+% $ uplatex "\def\era{true}\input" era.tex
+% ⑤ platex, 新元号あり、\ajLig{令和}も含む
+% $ platex "\def\era{full}\input" era.tex
+% ⑥ uplatex, 新元号あり、\ajLig{令和}も含む
+% $ uplatex "\def\era{full}\input" era.tex
+%%%%%%
+
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@full{full}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\engine{upLaTeX}
+ \else
+ \def\engine{pLaTeX}
+ \fi
+\fi
+
+\newif\ifnewera\newerafalse
+\ifx\era\@undefined
+ \edef\era{なし}
+\else
+ \neweratrue
+ \ifx\era\@full
+ \def\ligNewEra{\ajLig{令和}}
+ \edef\era{あり (ajLigも含む)}
+ \else
+ \def\ligNewEra{\relax}
+ \edef\era{あり}
+ \fi
+\fi
+\typeout{## 新元号:\era ##}
+
+\documentclass[a4paper,draft,autodetect-engine]{jsarticle}
+
+\usepackage{plext}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+\edef\bs{$\backslash$\kern0em}
+
+\begin{document}
+\parindent0pt
+
+エンジン:\texttt{\engine}\\
+オプション:\texttt{\option}\\
+新元号:\era
+
+\vskip1zh
+
+\bs{}ajLig: \ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}\ifnewera\ligNewEra\fi
+
+\bs{}UTF: \UTF{337E}\UTF{337D}\UTF{337C}\UTF{337B}\ifnewera\UTF{32FF}\fi
+
+\bs{}CID: \CID{7621}\CID{7622}\CID{7623}\CID{8323}\ifnewera\CID{23058}\fi
+
+\ifuptexmode
+
+UTF-8: ㍾㍽㍼㍻\ifnewera ㋿\fi
+
+\bs{}kchar: \kchar"337E\kchar"337D\kchar"337C\kchar"337B\ifnewera\kchar"32FF\fi
+
+\fi
+
+\vskip1zh
+
+\parbox<t>{25.0zw}{
+
+\bs{}ajLig: \ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}\ifnewera\ligNewEra\fi
+
+\bs{}UTF: \UTF{337E}\UTF{337D}\UTF{337C}\UTF{337B}\ifnewera\UTF{32FF}\fi
+
+\bs{}CID: \CID{12041}\CID{12042}\CID{12043}\CID{12044}\ifnewera\CID{23059}\fi
+
+\ifuptexmode
+
+UTF-8: ㍾㍽㍼㍻\ifnewera ㋿\fi
+
+\bs{}kchar: \kchar"337E\kchar"337D\kchar"337C\kchar"337B\ifnewera\kchar"32FF\fi
+
+\fi
+
+}
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex b/language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex
new file mode 100644
index 0000000000..2f8f1c3818
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex
@@ -0,0 +1,133 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+
+\documentclass[a4paper,draft]{\class}
+
+\usepackage{plext}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\begin{document}
+\parindent0pt
+
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}
+
+\vskip1zh
+
+あっ!あっ?ああ!ああ?驚いた。\\
+あっ! あっ? ああ! ああ? 驚いた。\\
+あっ!あっ?と驚き、ああ!ああ?と嘆く。\\
+あっ!\inhibitglue あっ?\inhibitglue と驚き、
+ああ!\inhibitglue ああ?\inhibitglue と嘆く。\\
+あっ\,!\inhibitglue\,あっ\,?\inhibitglue\,と驚き、
+ああ\,!\inhibitglue\,ああ\,?\inhibitglue\,と嘆く。\\
+あっ!\<あっ?\<と驚き、
+ああ!\<ああ?\<と嘆く。\\
+あっ\,!\<\,あっ\,?\<\,と驚き、
+ああ\,!\<\,ああ\,?\<\,と嘆く。
+
+\ifuptexmode
+
+あっ‼あっ⁇ああ‼ああ⁇驚いた。\\
+あっ‼ あっ⁇ ああ‼ ああ⁇ 驚いた。\\
+あっ‼あっ⁇と驚き、ああ‼ああ⁇と嘆く。\\
+あっ‼\inhibitglue あっ⁇\inhibitglue と驚き、
+ああ‼\inhibitglue ああ⁇\inhibitglue と嘆く。\\
+あっ\,‼\inhibitglue\,あっ\,⁇\inhibitglue\,と驚き、
+ああ\,‼\inhibitglue\,ああ\,⁇\inhibitglue\,と嘆く。\\
+あっ‼\<あっ⁇\<と驚き、
+ああ‼\<ああ⁇\<と嘆く。\\
+あっ\,‼\<\,あっ\,⁇\<\,と驚き、
+ああ\,‼\<\,ああ\,⁇\<\,と嘆く。
+
+あっ⁈あっ⁉ああ⁈ああ⁉驚いた。\\
+あっ⁈ あっ⁉ ああ⁈ ああ⁉ 驚いた。\\
+あっ⁈あっ⁉と驚き、ああ⁈ああ⁉と嘆く。\\
+あっ⁈\inhibitglue あっ⁉\inhibitglue と驚き、
+ああ⁈\inhibitglue ああ⁉\inhibitglue と嘆く。\\
+あっ\,⁈\inhibitglue\,あっ\,⁉\inhibitglue\,と驚き、
+ああ\,⁈\inhibitglue\,ああ\,⁉\inhibitglue\,と嘆く。\\
+あっ⁈\<あっ⁉\<と驚き、
+ああ⁈\<ああ⁉\<と嘆く。\\
+あっ\,⁈\<\,あっ\,⁉\<\,と驚き、
+ああ\,⁈\<\,ああ\,⁉\<\,と嘆く。
+
+\fi
+
+\vskip1zh
+
+\parbox<t>{25.0zw}{
+
+あっ!あっ?ああ!ああ?驚いた。\\
+あっ! あっ? ああ! ああ? 驚いた。\\
+あっ!あっ?と驚き、ああ!ああ?と嘆く。\\
+あっ!\inhibitglue あっ?\inhibitglue と驚き、
+ああ!\inhibitglue ああ?\inhibitglue と嘆く。\\
+あっ\,!\inhibitglue\,あっ\,?\inhibitglue\,と驚き、
+ああ\,!\inhibitglue\,ああ\,?\inhibitglue\,と嘆く。\\
+あっ!\<あっ?\<と驚き、
+ああ!\<ああ?\<と嘆く。\\
+あっ\,!\<\,あっ\,?\<\,と驚き、
+ああ\,!\<\,ああ\,?\<\,と嘆く。
+
+\ifuptexmode
+
+あっ‼あっ⁇ああ‼ああ⁇驚いた。\\
+あっ‼ あっ⁇ ああ‼ ああ⁇ 驚いた。\\
+あっ‼あっ⁇と驚き、ああ‼ああ⁇と嘆く。\\
+あっ‼\inhibitglue あっ⁇\inhibitglue と驚き、
+ああ‼\inhibitglue ああ⁇\inhibitglue と嘆く。\\
+あっ\,‼\inhibitglue\,あっ\,⁇\inhibitglue\,と驚き、
+ああ\,‼\inhibitglue\,ああ\,⁇\inhibitglue\,と嘆く。\\
+あっ‼\<あっ⁇\<と驚き、
+ああ‼\<ああ⁇\<と嘆く。\\
+あっ\,‼\<\,あっ\,⁇\<\,と驚き、
+ああ\,‼\<\,ああ\,⁇\<\,と嘆く。
+
+あっ⁈あっ⁉ああ⁈ああ⁉驚いた。\\
+あっ⁈ あっ⁉ ああ⁈ ああ⁉ 驚いた。\\
+あっ⁈あっ⁉と驚き、ああ⁈ああ⁉と嘆く。\\
+あっ⁈\inhibitglue あっ⁉\inhibitglue と驚き、
+ああ⁈\inhibitglue ああ⁉\inhibitglue と嘆く。\\
+あっ\,⁈\inhibitglue\,あっ\,⁉\inhibitglue\,と驚き、
+ああ\,⁈\inhibitglue\,ああ\,⁉\inhibitglue\,と嘆く。\\
+あっ⁈\<あっ⁉\<と驚き、
+ああ⁈\<ああ⁉\<と嘆く。\\
+あっ\,⁈\<\,あっ\,⁉\<\,と驚き、
+ああ\,⁈\<\,ああ\,⁉\<\,と嘆く。
+
+\fi
+
+}
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex b/language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex
new file mode 100644
index 0000000000..49d42eb177
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex
@@ -0,0 +1,69 @@
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@op@cls{}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\scale\@undefined
+ \edef\scale{default}
+\else
+ \ifx\scale\@default
+ \else
+ \edef\@opt@{scale=\scale,\@opt@}
+ \fi
+\fi
+\typeout{## scale: \scale ##}
+
+\ifx\class\@undefined
+ \def\class{jarticle}
+\fi
+\ifx\class\@jarticle
+\else
+ \ifx\class\@tarticle
+ \else
+ \ifnum\jis"2121="3000
+ \edef\@opt@{uplatex,\@opt@}
+ \def\@op@cls{,uplatex}
+ \else
+ \fi
+ \fi
+\fi
+
+\documentclass[a4paper,titlepage,draft\@op@cls]{\class}
+
+\usepackage[\@opt@]{otf}
+\usepackage{color}
+\newcommand{\redframe}[1]{%
+ \textcolor{red}{\frame{\textcolor{black}{#1}}}}
+
+\begin{document}
+\section{見出し}
+
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}\\
+スケール:\texttt{\scale}
+
+\parindent0mm
+\xkanjiskip=0pt plus.1pt minus.1pt
+
+\vbox{\tate
+\hbox{\Large \redframe{HMH}\redframe{回□回}\redframe{HMH}\redframe{回□回}\redframe{HMH}}
+\hbox{\Large HMH回□回HMH回□回HMH}
+}
+
+\vbox{\yoko
+\hbox{\Large \redframe{HMH}\redframe{回□回}\redframe{HMH}\redframe{回□回}\redframe{HMH}}
+\hbox{\Large HMH回□回HMH回□回HMH}
+}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex b/language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex
new file mode 100644
index 0000000000..e12e947fc8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex
@@ -0,0 +1,45 @@
+% -*- coding: utf-8 -*-
+
+%\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% Adobe-Japan1-6には和文用グリフがない
+\Bracket{‘}{’} \BracketUCS{2018}{2019}\\
+\Bracket{“}{”} \BracketUCS{201C}{201D}\\
+\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300C}{300D}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\
+%\Bracket{〚}{〛} \BracketUCS{301A}{301B}\\% Adobe-Japan1-6には無い
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 日本では標準的ではない
+\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+\Bracket{⦅}{⦆} \BracketUCS{FF5F}{FF60}\\
+
+\parbox<t>{21.0zw}{
+
+%\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% Adobe-Japan1-6には和文用グリフがない
+%\Bracket{‘}{’} \BracketUCS{2018}{2019}\\% 標準的ではない
+%\Bracket{“}{”} \BracketUCS{201C}{201D}\\% 標準的ではない
+%\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\% 標準的ではない
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300C}{300D}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\
+%\Bracket{〚}{〛} \BracketUCS{301A}{301B}\\% Adobe-Japan1-6には無い
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 日本では標準的ではない。UniJISup-UTF16-Vでは割り当てた。
+\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+\Bracket{⦅}{⦆} \BracketUCS{FF5F}{FF60}\\
+
+}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex b/language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex
new file mode 100644
index 0000000000..1d46dcf910
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex
@@ -0,0 +1,31 @@
+% -*- coding: utf-8 -*-
+
+%\Punct{·} \PunctUCS{00B7}\\% Adobe-Japan1-6には和文用グリフがない
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+\parbox<t>{15.5zw}{
+
+%\Punct{·} \PunctUCS{00B7}\\% Adobe-Japan1-6には和文用グリフがない
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+%\Punct{;} \PunctUCS{FF1B}\\% Adobe-Japan1-6には縦組み用グリフがない
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex b/language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex
new file mode 100644
index 0000000000..72c981b8f3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex
@@ -0,0 +1,181 @@
+% -*- coding: utf-8 -*-
+\makeatletter
+
+\def\@opt@{uplatex}
+\def\@default{default}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\documentclass[twocolumn]{ujarticle}
+\textwidth 170mm
+\textheight 255mm
+\voffset -10mm
+\topmargin 0mm
+\headheight 0mm
+\headsep 0mm
+\leftmargin 0mm
+\rightmargin 0mm
+
+\usepackage{color}
+\usepackage{plext}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\newcommand{\Bracket}[2]{%
+ \textcolor{green}{\fbox{\textcolor{black}{#1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{#2}}}%
+ \textcolor{green}{\fbox{\textcolor{black}{\inhibitglue #1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{#2\inhibitglue}}}%
+%%% vvv 色無し vvv %%%
+% \fbox{#1}雪\fbox{#2}%
+% \fbox{\inhibitglue #1}雪\fbox{#2\inhibitglue}%
+}
+\newcommand{\BracketUCS}[2]{%
+ \Bracket{\kchar"#1}{\kchar"#2} {\footnotesize U+#1, U+#2}%
+}
+\newcommand{\Punct}[1]{%
+ 雪\textcolor{green}{\fbox{\textcolor{black}{#1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{\inhibitglue #1\inhibitglue}}}雪%
+%%% vvv 色無し vvv %%%
+% 雪\fbox{#1}雪%
+% \fbox{\inhibitglue #1\inhibitglue}雪%
+}
+\newcommand{\PunctUCS}[1]{%
+ \Punct{\kchar"#1} {\footnotesize U+#1}%"
+}
+
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+
+\begin{document}
+\parindent0pt
+\fboxsep0pt
+
+オプション:\texttt{\option}
+
+\section{括弧類}
+{
+[mc/m]
+
+\input{paren0.tex}
+
+{\bfseries%
+[mc/bx]
+
+\input{paren0.tex}
+}}
+
+{\gtfamily
+[gt/m]
+
+\input{paren0.tex}
+
+{\bfseries%
+[gt/bx]
+
+\input{paren0.tex}
+}}
+
+{\mgfamily
+[mg/m]
+
+\input{paren0.tex}
+}
+
+{\rubyfamily%
+[ruby/m]
+
+\input{paren0.tex}
+
+{\bfseries%
+[ruby/bx]
+
+\input{paren0.tex}
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+\input{paren0.tex}
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\input{paren0.tex}
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+\input{paren0.tex}
+}
+
+
+\section{句読点など}
+{
+[mc/m]
+
+\input{punct0.tex}
+
+{\bfseries%
+[mc/bx]
+
+\input{punct0.tex}
+}}
+
+{\gtfamily
+[gt/m]
+
+\input{punct0.tex}
+
+{\bfseries%
+[gt/bx]
+
+\input{punct0.tex}
+}}
+
+{\mgfamily
+[mg/m]
+
+\input{punct0.tex}
+}
+
+{\rubyfamily%
+[ruby/m]
+
+\input{punct0.tex}
+
+{\bfseries%
+[ruby/bx]
+
+\input{punct0.tex}
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+\input{punct0.tex}
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\input{punct0.tex}
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+\input{punct0.tex}
+}
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex
new file mode 100644
index 0000000000..fdd6023915
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex
@@ -0,0 +1,204 @@
+%
+% This file is generated from the data of UniCNS-UTF32
+% in cid2code.txt (Version 10/24/2017)
+% for Adobe-CNS1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-CNS1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-CNS1-0\\
+\UTFT{200CC}\UTFT{2008A}\UTFT{27607}
+
+Adobe-CNS1-1\\
+\UTFT{23ED7}\UTFT{26ED3}\UTFT{257E0}\UTFT{28BE9}\UTFT{258E1}\UTFT{294D9}\UTFT{259AC}\UTFT{2648D}\UTFT{25C01}\UTFT{2530E}%
+\UTFT{25CFE}\UTFT{25BB4}\UTFT{26C7F}\UTFT{25D20}\UTFT{25CC1}\UTFT{24882}\UTFT{24578}\UTFT{26E44}\UTFT{26ED6}\UTFT{24057}%
+\UTFT{26029}\UTFT{217F9}\UTFT{2836D}\UTFT{26121}\UTFT{2615A}\UTFT{262D0}\UTFT{26351}\UTFT{21661}\UTFT{20068}\UTFT{23766}%
+\UTFT{2833A}\UTFT{26489}\UTFT{2A087}\UTFT{26CC3}\UTFT{22714}\UTFT{26626}\UTFT{23DE3}\UTFT{266E8}\UTFT{28A48}\UTFT{226F6}%
+\UTFT{26498}\UTFT{2148A}\UTFT{2185E}\UTFT{24A65}\UTFT{24A95}\UTFT{26A52}\UTFT{23D7E}\UTFT{214FD}\UTFT{2F98F}\UTFT{249A7}%
+\UTFT{23530}\UTFT{21773}\UTFT{23DF8}\UTFT{2F994}\UTFT{20E16}\UTFT{217B4}\UTFT{2317D}\UTFT{2355A}\UTFT{23E8B}\UTFT{26DA3}%
+\UTFT{26B05}\UTFT{26B97}\UTFT{235CE}\UTFT{26DA5}\UTFT{26ED4}\UTFT{26E42}\UTFT{25BE4}\UTFT{26B96}\UTFT{26E77}\UTFT{26E43}%
+\UTFT{25C91}\UTFT{25CC0}\UTFT{28625}\UTFT{2863B}\UTFT{27088}\UTFT{21582}\UTFT{270CD}\UTFT{270F0}\UTFT{2F9B2}\UTFT{218A2}%
+\UTFT{2739A}\UTFT{2A0F8}\UTFT{22C27}\UTFT{275E0}\UTFT{23DB9}\UTFT{275E4}\UTFT{2770F}\UTFT{28A25}\UTFT{27924}\UTFT{27ABD}%
+\UTFT{27A59}\UTFT{27B3A}\UTFT{27B38}\UTFT{25430}\UTFT{25565}\UTFT{24A7A}\UTFT{216DF}\UTFT{27D54}\UTFT{27D8F}\UTFT{2F9D4}%
+\UTFT{27D53}\UTFT{27D98}\UTFT{27DBD}\UTFT{21910}\UTFT{2F9D7}\UTFT{28002}\UTFT{21014}\UTFT{2498A}\UTFT{281BC}\UTFT{2710C}%
+\UTFT{28365}\UTFT{28412}\UTFT{2A29F}\UTFT{20A50}\UTFT{289DE}\UTFT{2853D}\UTFT{23DBB}\UTFT{23262}\UTFT{22325}\UTFT{26ED7}%
+\UTFT{2853C}\UTFT{27ABE}\UTFT{2856C}\UTFT{2860B}\UTFT{28713}\UTFT{286E6}\UTFT{28933}\UTFT{21E89}\UTFT{255B9}\UTFT{28AC6}%
+\UTFT{23C9B}\UTFT{28B0C}\UTFT{255DB}\UTFT{20D31}\UTFT{28AE1}\UTFT{28BEB}\UTFT{28AE2}\UTFT{28AE5}\UTFT{28BEC}\UTFT{28C39}%
+\UTFT{28BFF}\UTFT{286D8}\UTFT{2127C}\UTFT{23E2E}\UTFT{26ED5}\UTFT{28AE0}\UTFT{26CB8}\UTFT{20274}\UTFT{26410}\UTFT{290AF}%
+\UTFT{290E5}\UTFT{24AD1}\UTFT{21915}\UTFT{2330A}\UTFT{24AE9}\UTFT{291D5}\UTFT{291EB}\UTFT{230B7}\UTFT{230BC}\UTFT{2546C}%
+\UTFT{29433}\UTFT{2941D}\UTFT{2797A}\UTFT{27175}\UTFT{20630}\UTFT{2415C}\UTFT{25706}\UTFT{26D27}\UTFT{216D3}\UTFT{24A29}%
+\UTFT{29857}\UTFT{29905}\UTFT{25725}\UTFT{290B1}\UTFT{29BD5}\UTFT{29B05}\UTFT{28600}\UTFT{2307D}\UTFT{29D3E}\UTFT{21863}%
+\UTFT{29E68}\UTFT{29FB7}\UTFT{2A192}\UTFT{2A1AB}\UTFT{2A0E1}\UTFT{2A123}\UTFT{2A1DF}\UTFT{2A134}\UTFT{2A193}\UTFT{2A220}%
+\UTFT{2193B}\UTFT{2A233}\UTFT{2A0B9}\UTFT{2A2B4}\UTFT{24364}\UTFT{2A3ED}\UTFT{28C2B}\UTFT{26DA2}\UTFT{2FA1B}\UTFT{2908B}%
+\UTFT{24975}\UTFT{249BB}\UTFT{249F8}\UTFT{24348}\UTFT{24A51}\UTFT{28BDA}\UTFT{218FA}\UTFT{2897E}\UTFT{28E36}\UTFT{28A44}%
+\UTFT{2896C}\UTFT{244B9}\UTFT{24473}\UTFT{243F8}\UTFT{217EF}\UTFT{218BE}\UTFT{23599}\UTFT{21885}\UTFT{2542F}\UTFT{217F8}%
+\UTFT{216FB}\UTFT{21839}\UTFT{21774}\UTFT{218D1}\UTFT{25F4B}\UTFT{216C0}\UTFT{24A25}\UTFT{213FE}\UTFT{212A8}\UTFT{213C6}%
+\UTFT{214B6}\UTFT{236A6}\UTFT{24994}\UTFT{27165}\UTFT{23E31}\UTFT{2555C}\UTFT{23EFB}\UTFT{27052}\UTFT{236EE}\UTFT{2999D}%
+\UTFT{26F26}\UTFT{21922}\UTFT{2373F}\UTFT{240E1}\UTFT{2408B}\UTFT{2410F}\UTFT{26C21}\UTFT{266B1}\UTFT{20FDF}\UTFT{20BA8}%
+\UTFT{20E0D}\UTFT{28B13}\UTFT{24436}\UTFT{20465}\UTFT{25651}\UTFT{201AB}\UTFT{203CB}\UTFT{2030A}\UTFT{20414}\UTFT{202C0}%
+\UTFT{28EB3}\UTFT{20275}\UTFT{2020C}\UTFT{24A0E}\UTFT{23E8A}\UTFT{23595}\UTFT{23E39}\UTFT{23EBF}\UTFT{21884}\UTFT{23E89}%
+\UTFT{205E0}\UTFT{204A3}\UTFT{20492}\UTFT{20491}\UTFT{28A9C}\UTFT{2070E}\UTFT{20873}\UTFT{2438C}\UTFT{20C20}\UTFT{249AC}%
+\UTFT{210E4}\UTFT{20E1D}\UTFT{24ABC}\UTFT{2408D}\UTFT{240C9}\UTFT{20345}\UTFT{20BC6}\UTFT{28A46}\UTFT{216FA}\UTFT{2176F}%
+\UTFT{21710}\UTFT{25946}\UTFT{219F3}\UTFT{21861}\UTFT{24295}\UTFT{25E83}\UTFT{28BD7}\UTFT{20413}\UTFT{21303}\UTFT{289FB}%
+\UTFT{21996}\UTFT{2197C}\UTFT{23AEE}\UTFT{21903}\UTFT{21904}\UTFT{218A0}\UTFT{216FE}\UTFT{28A47}\UTFT{21DBA}\UTFT{23472}%
+\UTFT{289A8}\UTFT{21927}\UTFT{217AB}\UTFT{2173B}\UTFT{275FD}\UTFT{22860}\UTFT{2262B}\UTFT{225AF}\UTFT{225BE}\UTFT{29088}%
+\UTFT{26F73}\UTFT{2003E}\UTFT{20046}\UTFT{2261B}\UTFT{22C9B}\UTFT{22D07}\UTFT{246D4}\UTFT{2914D}\UTFT{24665}\UTFT{22B6A}%
+\UTFT{22B22}\UTFT{23450}\UTFT{298EA}\UTFT{22E78}\UTFT{249E3}\UTFT{22D67}\UTFT{22CA1}\UTFT{2308E}\UTFT{232AD}\UTFT{24989}%
+\UTFT{232AB}\UTFT{232E0}\UTFT{218D9}\UTFT{2943F}\UTFT{23289}\UTFT{231B3}\UTFT{25584}\UTFT{28B22}\UTFT{2558F}\UTFT{216FC}%
+\UTFT{2555B}\UTFT{25425}\UTFT{23103}\UTFT{2182A}\UTFT{23234}\UTFT{2320F}\UTFT{23182}\UTFT{242C9}\UTFT{26D24}\UTFT{27870}%
+\UTFT{21DEB}\UTFT{232D2}\UTFT{232E1}\UTFT{25872}\UTFT{2383A}\UTFT{237BC}\UTFT{237A2}\UTFT{233FE}\UTFT{2462A}\UTFT{237D5}%
+\UTFT{24487}\UTFT{21912}\UTFT{23FC0}\UTFT{23C9A}\UTFT{28BEA}\UTFT{28ACB}\UTFT{2801E}\UTFT{289DC}\UTFT{23F7F}\UTFT{2403C}%
+\UTFT{2431A}\UTFT{24276}\UTFT{2478F}\UTFT{24725}\UTFT{24AA4}\UTFT{205EB}\UTFT{23EF8}\UTFT{2365F}\UTFT{24A4A}\UTFT{24917}%
+\UTFT{25FE1}\UTFT{24ADF}\UTFT{28C23}\UTFT{23F35}\UTFT{26DEA}\UTFT{24CD9}\UTFT{24D06}\UTFT{2A5C6}\UTFT{28ACC}\UTFT{249AB}%
+\UTFT{2498E}\UTFT{24A4E}\UTFT{249C5}\UTFT{248F3}\UTFT{28AE3}\UTFT{21864}\UTFT{25221}\UTFT{251E7}\UTFT{23232}\UTFT{24697}%
+\UTFT{23781}\UTFT{248F0}\UTFT{24ABA}\UTFT{24AC7}\UTFT{24A96}\UTFT{261AE}\UTFT{25581}\UTFT{27741}\UTFT{256E3}\UTFT{23EFA}%
+\UTFT{216E6}\UTFT{20D4C}\UTFT{2498C}\UTFT{20299}\UTFT{23DBA}\UTFT{2176E}\UTFT{201D4}\UTFT{20C0D}\UTFT{226F5}\UTFT{25AAF}%
+\UTFT{25A9C}\UTFT{2025B}\UTFT{25BC6}\UTFT{25BB3}\UTFT{25EBC}\UTFT{25EA6}\UTFT{249F9}\UTFT{217B0}\UTFT{26261}\UTFT{2615C}%
+\UTFT{27B48}\UTFT{25E82}\UTFT{26B75}\UTFT{20916}\UTFT{2004E}\UTFT{235CF}\UTFT{26412}\UTFT{263F8}\UTFT{2082C}\UTFT{25AE9}%
+\UTFT{25D43}\UTFT{25E0E}\UTFT{2343F}\UTFT{249F7}\UTFT{265AD}\UTFT{265A0}\UTFT{27127}\UTFT{26CD1}\UTFT{267B4}\UTFT{26A42}%
+\UTFT{26A51}\UTFT{26DA7}\UTFT{2721B}\UTFT{21840}\UTFT{218A1}\UTFT{218D8}\UTFT{2F9BC}\UTFT{23D8F}\UTFT{27422}\UTFT{25683}%
+\UTFT{27785}\UTFT{27784}\UTFT{28BF5}\UTFT{28BD9}\UTFT{28B9C}\UTFT{289F9}\UTFT{29448}\UTFT{24284}\UTFT{21845}\UTFT{27DDC}%
+\UTFT{24C09}\UTFT{22321}\UTFT{217DA}\UTFT{2492F}\UTFT{28A4B}\UTFT{28AFC}\UTFT{28C1D}\UTFT{28C3B}\UTFT{28D34}\UTFT{248FF}%
+\UTFT{24A42}\UTFT{243EA}\UTFT{23225}\UTFT{28EE7}\UTFT{28E66}\UTFT{28E65}\UTFT{249ED}\UTFT{24A78}\UTFT{23FEE}\UTFT{290B0}%
+\UTFT{29093}\UTFT{257DF}\UTFT{28989}\UTFT{28C26}\UTFT{28B2F}\UTFT{263BE}\UTFT{2421B}\UTFT{20F26}\UTFT{28BC5}\UTFT{24AB2}%
+\UTFT{294DA}\UTFT{295D7}\UTFT{28B50}\UTFT{24A67}\UTFT{28B64}\UTFT{28A45}\UTFT{27B06}\UTFT{28B65}\UTFT{258C8}\UTFT{298F1}%
+\UTFT{29948}\UTFT{21302}\UTFT{249B8}\UTFT{214E8}\UTFT{2271F}\UTFT{23DB8}\UTFT{22781}\UTFT{2296B}\UTFT{29E2D}\UTFT{2A1F5}%
+\UTFT{2A0FE}\UTFT{24104}\UTFT{2A1B4}\UTFT{2A0ED}\UTFT{2A0F3}\UTFT{2992F}\UTFT{26E12}\UTFT{26FDF}\UTFT{26B82}\UTFT{26DA4}%
+\UTFT{26E84}\UTFT{26DF0}\UTFT{26E00}\UTFT{237D7}\UTFT{26064}\UTFT{2359C}\UTFT{23640}\UTFT{249DE}\UTFT{202BF}\UTFT{2555D}%
+\UTFT{21757}\UTFT{231C9}\UTFT{24941}\UTFT{241B5}\UTFT{241AC}\UTFT{26C40}\UTFT{24F97}\UTFT{217B5}\UTFT{28A49}\UTFT{24488}%
+\UTFT{289FC}\UTFT{218D6}\UTFT{20F1D}\UTFT{26CC0}\UTFT{21413}\UTFT{242FA}\UTFT{22C26}\UTFT{243C1}\UTFT{23DB7}\UTFT{26741}%
+\UTFT{2615B}\UTFT{260A4}\UTFT{249B9}\UTFT{2498B}\UTFT{289FA}\UTFT{28B63}\UTFT{2189F}\UTFT{24AB3}\UTFT{24A3E}\UTFT{24A94}%
+\UTFT{217D9}\UTFT{24A66}\UTFT{203A7}\UTFT{21424}\UTFT{249E5}\UTFT{24916}\UTFT{24976}\UTFT{204FE}\UTFT{28ACE}\UTFT{28A16}%
+\UTFT{28BE7}\UTFT{255D5}\UTFT{28A82}\UTFT{24943}\UTFT{20CFF}\UTFT{2061A}\UTFT{20BEB}\UTFT{20CB8}\UTFT{217FA}\UTFT{216C2}%
+\UTFT{24A50}\UTFT{21852}\UTFT{28AC0}\UTFT{249AD}\UTFT{218BF}\UTFT{21883}\UTFT{27484}\UTFT{23D5B}\UTFT{28A81}\UTFT{21862}%
+\UTFT{20AB4}\UTFT{2139C}\UTFT{28218}\UTFT{290E4}\UTFT{27E4F}\UTFT{23FED}\UTFT{23E2D}\UTFT{203F5}\UTFT{28C1C}\UTFT{26BC0}%
+\UTFT{21452}\UTFT{24362}\UTFT{24A71}\UTFT{22FE3}\UTFT{212B0}\UTFT{223BD}\UTFT{21398}\UTFT{234E5}\UTFT{27BF4}\UTFT{236DF}%
+\UTFT{28A83}\UTFT{237D6}\UTFT{233FA}\UTFT{24C9F}\UTFT{236AD}\UTFT{26CB7}\UTFT{26D26}\UTFT{26D51}\UTFT{26C82}\UTFT{26FDE}%
+\UTFT{2173A}\UTFT{26C80}\UTFT{27053}\UTFT{217DB}\UTFT{217B3}\UTFT{21905}\UTFT{241FC}\UTFT{2173C}\UTFT{242A5}\UTFT{24293}%
+\UTFT{23EF9}\UTFT{27736}\UTFT{2445B}\UTFT{242CA}\UTFT{24259}\UTFT{289E1}\UTFT{26D28}\UTFT{244CE}\UTFT{27E4D}\UTFT{243BD}%
+\UTFT{24256}\UTFT{21304}\UTFT{243E9}\UTFT{2F825}\UTFT{23300}\UTFT{27AF4}\UTFT{256F6}\UTFT{27B18}\UTFT{27A79}\UTFT{249BA}%
+\UTFT{20346}\UTFT{27657}\UTFT{25FE2}\UTFT{275FE}\UTFT{2209A}\UTFT{28A9A}\UTFT{2403B}\UTFT{24A45}\UTFT{205CA}\UTFT{20611}%
+\UTFT{21EA8}\UTFT{23CFF}\UTFT{285E8}\UTFT{299C9}\UTFT{221C3}\UTFT{28B4E}\UTFT{20C78}\UTFT{20779}\UTFT{23F4A}\UTFT{24AA7}%
+\UTFT{26B52}\UTFT{27632}\UTFT{2493F}\UTFT{233CC}\UTFT{28948}\UTFT{21D90}\UTFT{27C12}\UTFT{24F9A}\UTFT{26BF7}\UTFT{2191C}%
+\UTFT{249F6}\UTFT{23FEF}\UTFT{2271B}\UTFT{257E1}\UTFT{2F8CD}\UTFT{2F806}\UTFT{24521}\UTFT{24934}\UTFT{26CBD}\UTFT{26411}%
+\UTFT{290C0}\UTFT{20A11}\UTFT{26469}\UTFT{20021}\UTFT{23519}\UTFT{2258D}\UTFT{2217A}\UTFT{249D0}\UTFT{20EF8}\UTFT{22926}%
+\UTFT{28473}\UTFT{217B1}\UTFT{24A2A}\UTFT{21820}\UTFT{29CAD}\UTFT{298A4}\UTFT{2160A}\UTFT{2372F}\UTFT{280E8}\UTFT{213C5}%
+\UTFT{291A8}\UTFT{270AF}\UTFT{289AB}\UTFT{2417A}\UTFT{2A2DF}\UTFT{28318}\UTFT{26E07}\UTFT{2816F}\UTFT{269B5}\UTFT{213ED}%
+\UTFT{2322F}\UTFT{28C30}\UTFT{28949}\UTFT{24988}\UTFT{24AA5}\UTFT{23F81}\UTFT{21FA1}\UTFT{295E9}\UTFT{2789D}\UTFT{28024}%
+\UTFT{27A3E}\UTFT{23CB7}\UTFT{26258}\UTFT{29D98}\UTFT{23D40}\UTFT{20E9D}\UTFT{282E2}\UTFT{20C41}\UTFT{20C96}\UTFT{20E76}%
+\UTFT{22C62}\UTFT{20EA2}\UTFT{21075}\UTFT{22B43}\UTFT{22EB3}\UTFT{20DA7}\UTFT{2688A}\UTFT{20EF9}\UTFT{27FF9}\UTFT{247E0}%
+\UTFT{29D7C}\UTFT{275A3}\UTFT{26048}\UTFT{24618}\UTFT{29EAC}\UTFT{29FDE}\UTFT{272B2}\UTFT{2048E}\UTFT{20EB6}\UTFT{27F2E}%
+\UTFT{2A434}\UTFT{243F2}\UTFT{29E06}\UTFT{294D0}\UTFT{26335}\UTFT{20D28}\UTFT{20D71}\UTFT{21F0F}\UTFT{21DD1}\UTFT{2176D}%
+\UTFT{2B473}\UTFT{28E97}\UTFT{25C21}\UTFT{20CD4}\UTFT{201F2}\UTFT{2A64A}\UTFT{2837D}\UTFT{2A2B2}\UTFT{24ABB}\UTFT{26E05}%
+\UTFT{2AE67}\UTFT{2251B}\UTFT{2DF3C}\UTFT{28E39}\UTFT{20F3B}\UTFT{25F1A}\UTFT{27486}\UTFT{267CC}\UTFT{24011}\UTFT{2F922}%
+\UTFT{20547}\UTFT{205DF}\UTFT{23FC5}\UTFT{24942}\UTFT{289E4}\UTFT{219DB}\UTFT{23CC8}\UTFT{24933}\UTFT{289AA}\UTFT{202A0}%
+\UTFT{26BB3}\UTFT{21305}\UTFT{224ED}\UTFT{26D29}\UTFT{27A84}\UTFT{23600}\UTFT{24AB1}\UTFT{22513}\UTFT{2037E}\UTFT{20380}%
+\UTFT{20347}\UTFT{2041F}\UTFT{249A4}\UTFT{20487}\UTFT{233B4}\UTFT{20BFF}\UTFT{220FC}\UTFT{202E5}\UTFT{22530}\UTFT{2058E}%
+\UTFT{23233}\UTFT{21983}\UTFT{205B3}\UTFT{23C99}\UTFT{24AA6}\UTFT{2372D}\UTFT{26B13}\UTFT{2F829}\UTFT{28ADE}\UTFT{23F80}%
+\UTFT{20954}\UTFT{23FEC}\UTFT{20BE2}\UTFT{21726}\UTFT{216E8}\UTFT{286AB}\UTFT{2F832}\UTFT{21596}\UTFT{21613}\UTFT{28A9B}%
+\UTFT{25772}\UTFT{20B8F}\UTFT{23FEB}\UTFT{22DA3}\UTFT{20C77}\UTFT{26B53}\UTFT{20D74}\UTFT{2170D}\UTFT{20EDD}\UTFT{20D4D}%
+\UTFT{289BC}\UTFT{22698}\UTFT{218D7}\UTFT{2403A}\UTFT{24435}\UTFT{210B4}\UTFT{2328A}\UTFT{28B66}\UTFT{2124F}\UTFT{241A5}%
+\UTFT{26C7E}\UTFT{21416}\UTFT{21454}\UTFT{24363}\UTFT{24BF5}\UTFT{2123C}\UTFT{2A150}\UTFT{24278}\UTFT{2163E}\UTFT{21692}%
+\UTFT{20D4E}\UTFT{26C81}\UTFT{26D2A}\UTFT{217DC}\UTFT{217FB}\UTFT{217B2}\UTFT{26DA6}\UTFT{21828}\UTFT{216D5}\UTFT{26E45}%
+\UTFT{249A9}\UTFT{26FA1}\UTFT{22554}\UTFT{21911}\UTFT{216B8}\UTFT{27A0E}\UTFT{20204}\UTFT{21A34}\UTFT{259CC}\UTFT{205A5}%
+\UTFT{21B44}\UTFT{21CA5}\UTFT{26B28}\UTFT{21DF9}\UTFT{21E37}\UTFT{21EA4}\UTFT{24901}\UTFT{22049}\UTFT{22173}\UTFT{244BC}%
+\UTFT{20CD3}\UTFT{21771}\UTFT{28482}\UTFT{201C1}\UTFT{2F894}\UTFT{2133A}\UTFT{26888}\UTFT{223D0}\UTFT{22471}\UTFT{26E6E}%
+\UTFT{28A36}\UTFT{25250}\UTFT{21F6A}\UTFT{270F8}\UTFT{22668}\UTFT{2029E}\UTFT{28A29}\UTFT{227B4}\UTFT{24982}\UTFT{2498F}%
+\UTFT{27A53}\UTFT{2F8A6}\UTFT{26ED2}\UTFT{20656}\UTFT{23FB7}\UTFT{2285F}\UTFT{28B9D}\UTFT{2995D}\UTFT{22980}\UTFT{228C1}%
+\UTFT{20118}\UTFT{21770}\UTFT{22E0D}\UTFT{249DF}\UTFT{2138E}\UTFT{217FC}\UTFT{22E36}\UTFT{2571D}\UTFT{24A28}\UTFT{24A23}%
+\UTFT{24940}\UTFT{21829}\UTFT{23400}\UTFT{231F7}\UTFT{231F8}\UTFT{231A4}\UTFT{231A5}\UTFT{20E75}\UTFT{251E6}\UTFT{23231}%
+\UTFT{285F4}\UTFT{231C8}\UTFT{25313}\UTFT{228F7}\UTFT{2439C}\UTFT{24A21}\UTFT{237C2}\UTFT{2F8DB}\UTFT{241CD}\UTFT{290ED}%
+\UTFT{233E6}\UTFT{26DA0}\UTFT{2346F}\UTFT{28ADF}\UTFT{235CD}\UTFT{2363C}\UTFT{28A4A}\UTFT{203C9}\UTFT{23659}\UTFT{2212A}%
+\UTFT{23703}\UTFT{2919C}\UTFT{20923}\UTFT{227CD}\UTFT{23ADB}\UTFT{21958}\UTFT{23B5A}\UTFT{23EFC}\UTFT{2248B}\UTFT{248F1}%
+\UTFT{26B51}\UTFT{23DBC}\UTFT{23DBD}\UTFT{241A4}\UTFT{2490C}\UTFT{24900}\UTFT{23CC9}\UTFT{20D32}\UTFT{231F9}\UTFT{22491}%
+\UTFT{26D25}\UTFT{26DA1}\UTFT{26DEB}\UTFT{2497F}\UTFT{24085}\UTFT{26E72}\UTFT{26F74}\UTFT{28B21}\UTFT{2F908}\UTFT{23E2F}%
+\UTFT{23F82}\UTFT{2304B}\UTFT{23E30}\UTFT{21497}\UTFT{2403D}\UTFT{29170}\UTFT{24144}\UTFT{24091}\UTFT{24155}\UTFT{24039}%
+\UTFT{23FF0}\UTFT{23FB4}\UTFT{2413F}\UTFT{24156}\UTFT{24157}\UTFT{24140}\UTFT{261DD}\UTFT{24277}\UTFT{24365}\UTFT{242C1}%
+\UTFT{2445A}\UTFT{24A27}\UTFT{24A22}\UTFT{28BE8}\UTFT{25605}\UTFT{24974}\UTFT{23044}\UTFT{24823}\UTFT{2882B}\UTFT{28804}%
+\UTFT{20C3A}\UTFT{26A2E}\UTFT{241E2}\UTFT{216E7}\UTFT{24A24}\UTFT{249B7}\UTFT{2498D}\UTFT{249FB}\UTFT{24A26}\UTFT{2F92F}%
+\UTFT{228AD}\UTFT{28EB2}\UTFT{24A8C}\UTFT{2415F}\UTFT{24A79}\UTFT{28B8F}\UTFT{28C03}\UTFT{2189E}\UTFT{21988}\UTFT{28ED9}%
+\UTFT{21A4B}\UTFT{28EAC}\UTFT{24F82}\UTFT{24D13}\UTFT{263F5}\UTFT{26911}\UTFT{2690E}\UTFT{26F9F}\UTFT{2509D}\UTFT{2517D}%
+\UTFT{21E1C}\UTFT{25220}\UTFT{232AC}\UTFT{28964}\UTFT{28968}\UTFT{216C1}\UTFT{255E0}\UTFT{2760C}\UTFT{2261C}\UTFT{25857}%
+\UTFT{27B39}\UTFT{27126}\UTFT{2910D}\UTFT{20C42}\UTFT{20D15}\UTFT{2512B}\UTFT{22CC6}\UTFT{20341}\UTFT{24DB8}\UTFT{294E5}%
+\UTFT{280BE}\UTFT{22C38}\UTFT{2815D}\UTFT{269F2}\UTFT{24DEA}\UTFT{20D7C}\UTFT{20FB4}\UTFT{20CD5}\UTFT{2BAB3}\UTFT{20E96}%
+\UTFT{20F64}\UTFT{22CA9}\UTFT{28256}\UTFT{244D3}\UTFT{20D46}\UTFT{29A4D}\UTFT{280E9}\UTFT{24EA7}\UTFT{22CC2}\UTFT{295F4}%
+\UTFT{252C7}\UTFT{297D4}\UTFT{22D44}\UTFT{2BCD7}\UTFT{22BCA}\UTFT{2B977}\UTFT{266DA}\UTFT{26716}\UTFT{279A0}\UTFT{25052}%
+\UTFT{20C43}\UTFT{28B4C}\UTFT{20731}\UTFT{201A9}\UTFT{22D8D}\UTFT{245C8}\UTFT{204FC}\UTFT{26097}\UTFT{20F4C}\UTFT{22A66}%
+\UTFT{2109D}\UTFT{20D9C}\UTFT{22775}\UTFT{2A601}\UTFT{20E09}\UTFT{22ACF}\UTFT{2C5F8}\UTFT{210C8}\UTFT{239C2}\UTFT{2829B}%
+\UTFT{25E49}\UTFT{220C7}\UTFT{22CB2}\UTFT{29720}\UTFT{24E3B}\UTFT{2C9A0}\UTFT{27574}\UTFT{22E8B}\UTFT{22208}\UTFT{2A65B}%
+\UTFT{28CCD}\UTFT{20E7A}\UTFT{20C34}\UTFT{27639}\UTFT{22BCE}\UTFT{22C51}\UTFT{210C7}\UTFT{2A632}\UTFT{28CD2}\UTFT{28D99}%
+\UTFT{28CCA}\UTFT{2775E}\UTFT{2F828}\UTFT{2107B}\UTFT{210D3}\UTFT{212FE}\UTFT{247EF}\UTFT{24EA5}\UTFT{24F5C}\UTFT{28189}%
+\UTFT{2B42C}
+
+Adobe-CNS1-3\\
+\UTFT{2010C}\UTFT{200D1}\UTFT{200CD}\UTFT{200CB}\UTFT{21FE8}\UTFT{200CA}\UTFT{2010E}\UTFT{21BC1}\UTFT{2F878}\UTFT{20086}%
+\UTFT{248E9}\UTFT{2626A}\UTFT{2634B}\UTFT{26612}\UTFT{26951}\UTFT{278B2}\UTFT{28E0F}\UTFT{29810}\UTFT{20087}\UTFT{2A3A9}%
+\UTFT{21145}\UTFT{27735}\UTFT{209E7}\UTFT{29DF6}\UTFT{2700E}\UTFT{2A133}\UTFT{2846C}\UTFT{21DCA}\UTFT{205D0}\UTFT{22AE6}%
+\UTFT{27D84}\UTFT{210F4}\UTFT{20C0B}\UTFT{278C8}\UTFT{260A5}\UTFT{22D4C}\UTFT{21077}\UTFT{2106F}\UTFT{221A1}\UTFT{20D96}%
+\UTFT{22CC9}\UTFT{20F31}\UTFT{2681C}\UTFT{210CF}\UTFT{22803}\UTFT{22939}\UTFT{251E3}\UTFT{20E8C}\UTFT{20F8D}\UTFT{20EAA}%
+\UTFT{20F30}\UTFT{20D47}\UTFT{2114F}\UTFT{20E4C}\UTFT{20EAB}\UTFT{20BA9}\UTFT{20D48}\UTFT{210C0}\UTFT{2113D}\UTFT{22696}%
+\UTFT{20FAD}\UTFT{233F4}\UTFT{20D7E}\UTFT{20D7F}\UTFT{22C55}\UTFT{20E98}\UTFT{20F2E}\UTFT{26B50}\UTFT{29EC3}\UTFT{22DEE}%
+\UTFT{26572}\UTFT{280BD}\UTFT{20EFA}\UTFT{20E0F}\UTFT{20E77}\UTFT{20EFB}\UTFT{24DEB}\UTFT{20CD6}\UTFT{227B5}\UTFT{210C9}%
+\UTFT{20E10}\UTFT{20E78}\UTFT{21078}\UTFT{21148}\UTFT{28207}\UTFT{21455}\UTFT{20E79}\UTFT{24E50}\UTFT{22DA4}\UTFT{2101D}%
+\UTFT{2101E}\UTFT{210F5}\UTFT{210F6}\UTFT{20E11}\UTFT{27694}\UTFT{282CD}\UTFT{20FB5}\UTFT{20E7B}\UTFT{2517E}\UTFT{20FB6}%
+\UTFT{21180}\UTFT{252D8}\UTFT{2A2BD}\UTFT{249DA}\UTFT{2183A}\UTFT{24177}\UTFT{2827C}\UTFT{2573D}\UTFT{25B74}\UTFT{2313D}%
+\UTFT{289C0}\UTFT{23F41}\UTFT{20325}\UTFT{20ED8}\UTFT{25C65}\UTFT{24FB8}\UTFT{20B0D}\UTFT{26B0A}\UTFT{22EEF}\UTFT{23CB5}%
+\UTFT{26E99}\UTFT{23F8F}\UTFT{24CC9}\UTFT{2A014}\UTFT{286BC}\UTFT{28501}\UTFT{2267A}\UTFT{269A8}\UTFT{2424B}\UTFT{2215B}%
+\UTFT{2037F}\UTFT{2A45B}\UTFT{249EC}\UTFT{24962}\UTFT{27109}\UTFT{24A4F}\UTFT{24A5D}\UTFT{217DF}\UTFT{23AFA}\UTFT{20214}%
+\UTFT{208D5}\UTFT{20619}\UTFT{21F9E}\UTFT{2A2B6}\UTFT{2915B}\UTFT{28A59}\UTFT{29420}\UTFT{248F2}\UTFT{25535}\UTFT{20CCF}%
+\UTFT{27967}\UTFT{21BC2}\UTFT{20094}\UTFT{202B7}\UTFT{203A0}\UTFT{204D7}\UTFT{205D5}\UTFT{20615}\UTFT{20676}\UTFT{216BA}%
+\UTFT{20AC2}\UTFT{20ACD}\UTFT{20BBF}\UTFT{2F83B}\UTFT{20BCB}\UTFT{20BFB}\UTFT{20C3B}\UTFT{20C53}\UTFT{20C65}\UTFT{20C7C}%
+\UTFT{20C8D}\UTFT{20CB5}\UTFT{20CDD}\UTFT{20CED}\UTFT{20D6F}\UTFT{20DB2}\UTFT{20DC8}\UTFT{20E04}\UTFT{20E0E}\UTFT{20ED7}%
+\UTFT{20F90}\UTFT{20F2D}\UTFT{20E73}\UTFT{20FBC}\UTFT{2105C}\UTFT{2104F}\UTFT{21076}\UTFT{21088}\UTFT{21096}\UTFT{210BF}%
+\UTFT{2112F}\UTFT{2113B}\UTFT{212E3}\UTFT{21375}\UTFT{21336}\UTFT{21577}\UTFT{21619}\UTFT{217C3}\UTFT{217C7}\UTFT{2182D}%
+\UTFT{2196A}\UTFT{21A2D}\UTFT{21A45}\UTFT{21C2A}\UTFT{21C70}\UTFT{21CAC}\UTFT{21EC8}\UTFT{21ED5}\UTFT{21F15}\UTFT{22045}%
+\UTFT{2227C}\UTFT{223D7}\UTFT{223FA}\UTFT{2272A}\UTFT{22871}\UTFT{2294F}\UTFT{22967}\UTFT{22993}\UTFT{22AD5}\UTFT{22AE8}%
+\UTFT{22B0E}\UTFT{22B3F}\UTFT{22C4C}\UTFT{22C88}\UTFT{22CB7}\UTFT{25BE8}\UTFT{22D08}\UTFT{22D12}\UTFT{22DB7}\UTFT{22D95}%
+\UTFT{22E42}\UTFT{22F74}\UTFT{22FCC}\UTFT{23033}\UTFT{23066}\UTFT{2331F}\UTFT{233DE}\UTFT{23567}\UTFT{235F3}\UTFT{2361A}%
+\UTFT{23716}\UTFT{23AA7}\UTFT{23E11}\UTFT{23EB9}\UTFT{24119}\UTFT{242EE}\UTFT{2430D}\UTFT{24334}\UTFT{24396}\UTFT{24404}%
+\UTFT{244D6}\UTFT{24674}\UTFT{2472F}\UTFT{24812}\UTFT{248FB}\UTFT{24A15}\UTFT{24AC0}\UTFT{24F86}\UTFT{2502C}\UTFT{25299}%
+\UTFT{25419}\UTFT{25446}\UTFT{2546E}\UTFT{2553F}\UTFT{2555E}\UTFT{25562}\UTFT{25566}\UTFT{257C7}\UTFT{2585D}\UTFT{25903}%
+\UTFT{25AAE}\UTFT{25B89}\UTFT{25C06}\UTFT{26102}\UTFT{261B2}\UTFT{26402}\UTFT{2644A}\UTFT{26484}\UTFT{26488}\UTFT{26512}%
+\UTFT{265BF}\UTFT{266B5}\UTFT{266FC}\UTFT{26799}\UTFT{2686E}\UTFT{2685E}\UTFT{268C7}\UTFT{26926}\UTFT{26939}\UTFT{269FA}%
+\UTFT{26A2D}\UTFT{26A34}\UTFT{26B5B}\UTFT{26B9D}\UTFT{26CA4}\UTFT{26DAE}\UTFT{2704B}\UTFT{271CD}\UTFT{27280}\UTFT{27285}%
+\UTFT{2728B}\UTFT{272E6}\UTFT{27450}\UTFT{277CC}\UTFT{27858}\UTFT{279DD}\UTFT{279FD}\UTFT{27A0A}\UTFT{27B0B}\UTFT{27D66}%
+\UTFT{28009}\UTFT{28023}\UTFT{28048}\UTFT{28083}\UTFT{28090}\UTFT{280F4}\UTFT{2812E}\UTFT{2814F}\UTFT{281AF}\UTFT{2821A}%
+\UTFT{28306}\UTFT{2832F}\UTFT{2838A}\UTFT{28468}\UTFT{286AA}\UTFT{28956}\UTFT{289B8}\UTFT{289E7}\UTFT{289E8}\UTFT{28B46}%
+\UTFT{28BD4}\UTFT{28C09}\UTFT{28FC5}\UTFT{290EC}\UTFT{29110}\UTFT{2913C}\UTFT{2915E}\UTFT{24ACA}\UTFT{294E7}\UTFT{295B0}%
+\UTFT{295B8}\UTFT{29732}\UTFT{298D1}\UTFT{29949}\UTFT{2996A}\UTFT{299C3}\UTFT{29A28}\UTFT{29B0E}\UTFT{29D5A}\UTFT{29D9B}%
+\UTFT{29EF8}\UTFT{29F23}\UTFT{2A293}\UTFT{2A2FF}\UTFT{2A5CB}\UTFT{20C9C}\UTFT{224B0}\UTFT{24A93}\UTFT{28B2C}\UTFT{217F5}%
+\UTFT{28B6C}\UTFT{28B99}\UTFT{266AF}\UTFT{27655}\UTFT{25635}\UTFT{25956}\UTFT{25E81}\UTFT{20E6D}\UTFT{23E88}\UTFT{24C9E}%
+\UTFT{217F6}\UTFT{2187B}\UTFT{25C4A}\UTFT{25311}\UTFT{25ED8}\UTFT{20FEA}\UTFT{20D49}\UTFT{236BA}\UTFT{25148}\UTFT{210C1}%
+\UTFT{24706}\UTFT{26893}\UTFT{226F4}\UTFT{27D2F}\UTFT{241A3}\UTFT{27D73}\UTFT{26ED0}\UTFT{272B6}\UTFT{211D9}\UTFT{23CFC}%
+\UTFT{2A6A9}\UTFT{20EAC}\UTFT{21CA2}\UTFT{24FC2}\UTFT{20FEB}\UTFT{22DA0}\UTFT{20FEC}\UTFT{20E0A}\UTFT{20FED}\UTFT{21187}%
+\UTFT{24B6E}\UTFT{25A95}\UTFT{20979}\UTFT{22465}\UTFT{23CFE}\UTFT{29F30}\UTFT{24FA9}\UTFT{2959E}\UTFT{23DB6}\UTFT{267B3}%
+\UTFT{23720}\UTFT{23EF7}\UTFT{23E2C}\UTFT{230DA}\UTFT{212A9}\UTFT{24963}\UTFT{270AE}\UTFT{2176C}\UTFT{27164}\UTFT{26D22}%
+\UTFT{24AE2}\UTFT{2493E}\UTFT{26D23}\UTFT{203FC}\UTFT{23CFD}\UTFT{24919}\UTFT{24A77}\UTFT{28A5A}\UTFT{2F840}\UTFT{2183B}%
+\UTFT{26159}\UTFT{233F5}\UTFT{28BC2}\UTFT{21D46}\UTFT{26ED1}\UTFT{28B2D}\UTFT{23CC7}\UTFT{25ED7}\UTFT{27656}\UTFT{25531}%
+\UTFT{21944}\UTFT{29903}\UTFT{26DDC}\UTFT{270AD}\UTFT{261AD}\UTFT{28A0F}\UTFT{23677}\UTFT{200EE}\UTFT{26846}\UTFT{24F0E}%
+\UTFT{2634C}\UTFT{2626B}\UTFT{21877}\UTFT{2408C}\UTFT{2307E}\UTFT{21E3D}\UTFT{203B5}\UTFT{205C3}\UTFT{21376}\UTFT{24A12}%
+\UTFT{28B2B}\UTFT{26083}
+
+Adobe-CNS1-4\\
+\UTFT{29C73}\UTFT{2414E}\UTFT{251CD}\UTFT{25D30}\UTFT{28A32}\UTFT{23281}\UTFT{2A107}\UTFT{21980}\UTFT{2870F}\UTFT{2A2BA}%
+\UTFT{29947}\UTFT{28AEA}\UTFT{2207E}\UTFT{289E3}\UTFT{21DB6}\UTFT{22712}\UTFT{233F9}\UTFT{23C63}\UTFT{24505}\UTFT{24A13}%
+\UTFT{25CA4}\UTFT{25695}\UTFT{28DB9}\UTFT{2143F}\UTFT{2497B}\UTFT{2710D}\UTFT{26D74}\UTFT{26B15}\UTFT{26FBE}
+
+Adobe-CNS1-5\\
+\UTFT{27267}\UTFT{27CB1}\UTFT{27CC5}\UTFT{242BF}\UTFT{23617}\UTFT{27352}\UTFT{26E8B}\UTFT{270D2}\UTFT{2A351}\UTFT{27C6C}%
+\UTFT{26B23}\UTFT{25A54}\UTFT{21A63}\UTFT{23E06}\UTFT{23F61}\UTFT{28BB9}\UTFT{27BEF}\UTFT{21D5E}\UTFT{29EB0}\UTFT{29945}%
+\UTFT{20A6F}\UTFT{23256}\UTFT{22796}\UTFT{23B1A}\UTFT{23551}\UTFT{240EC}\UTFT{21E23}\UTFT{201A4}\UTFT{26C41}\UTFT{20239}%
+\UTFT{298FA}\UTFT{20B9F}\UTFT{221C1}\UTFT{2896D}\UTFT{29079}\UTFT{2A1B5}\UTFT{26C46}\UTFT{286B2}\UTFT{273FF}\UTFT{2549A}%
+\UTFT{24B0F}
+
+Adobe-CNS1-6\\
+\UTFT{21D53}\UTFT{2369E}\UTFT{26021}\UTFT{258DE}\UTFT{24161}\UTFT{2890D}\UTFT{231EA}\UTFT{20A8A}\UTFT{2325E}\UTFT{25DB9}%
+\UTFT{2368E}\UTFT{27B65}\UTFT{26E88}\UTFT{25D99}\UTFT{224BC}\UTFT{224C1}\UTFT{224C9}\UTFT{224CC}\UTFT{235BB}\UTFT{2ADFF}%
+
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex
new file mode 100644
index 0000000000..f03fc4c969
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex
@@ -0,0 +1,17 @@
+%
+% This file is generated from the data of UniGB-UTF32
+% in cid2code.txt (Version 12/05/2017)
+% for Adobe-GB1-5
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-GB1-5/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-GB1-2\\
+\UTFC{20087}\UTFC{20089}\UTFC{200CC}\UTFC{215D7}\UTFC{2298F}\UTFC{20509}\UTFC{2099D}\UTFC{241FE}
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex
new file mode 100644
index 0000000000..e77167987b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex
@@ -0,0 +1,75 @@
+%
+% This file is generated from the data of UniJIS-UTF32
+% in cid2code.txt (Version 02/05/2019)
+% for Adobe-Japan1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Japan1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-Japan1-0\\
+𨳝櫛𥡴𨻶杓巽屠兔冕冤
+𡨚𤏐爨🄀
+
+Adobe-Japan1-4\\
+🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙
+🄚🄛🄜🄝🄞🄟🄠🄡🄢🄣
+🄤🄥🄦🄧🄨🄩🅐🅑🅒🅓
+🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝
+🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧
+🅨🅩🄰🄱🄲🄳🄴🄵🄶🄷
+🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁
+🅂🅃🅄🅅🅆🅇🅈🅉🈂🈷
+🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹
+🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃
+🆄🆅🆆🆇🆈🆉眞𠤎𦥑𫟘
+沿芽槪割𦈢𠮷𩵋卿𫞎憲
+𠩤浩𫝆𫝷滋𠮟勺爵周将
+𭕄𠀋城𩙿真𠆢𮕩𫝑成𧾷
+𣳾炭𥫗彫潮𡈽冬𤴔姬𫞉
+諭輸𥙿𦚰𠘨𠂊𠦄卉寃拔
+𦦙𣏌杞𪧦𫞽絣𮉸𠔿𦉪𠂰
+𮛪𨦇𨸗𫠚𤋮桒𣲾𠘑嶲你
+𣘺𣏾𢘉
+
+Adobe-Japan1-5\\
+𡌛𡑮𡢽𡚴𡸴𣇄𣗄𣜿𣝣𤟱
+𥒎𥔎𥝱𥧄𥶡𦫿𦹀𧃴𧚄𨉷
+𨏍𪆐𠂉𠂢𠂤𠈓𠌫𠎁𠍱𠏹
+𠑊𠔉𠗖𠝏𠠇𠠺𠢹𠥼𠦝𠫓
+𠬝𠵅𠷡𠺕𠹭𠹤𠽟𡈁𡉕𡉻
+𡉴𡋤𡋗𡋽𡌶𡍄𡏄𡑭𡗗𦰩
+𡙇𡜆𡝂𡧃𡱖𡴭𡵅𡵸𡵢𡶡
+𡶜𡶒𡶷𡷠𡸳𡼞𡽶𡿺𢅻𢌞
+𢎭𢛳𢡛𢢫𢦏𢪸𢭏𢭐𢭆𢰝
+𢮦𢰤𢷡𣇃𣇵𣆶𣍲𣏓𣏒𣏐
+𣏤𣏕𣏚𣏟𣑊𣑑𣑋𣑥𣓤𣕚
+𣖔𣘹𣙇𣘸𣜜𣜌𣝤𣟿𣟧𣠤
+𣠽𣪘𣱿𣴀𣵀𣷺𣷹𣷓𣽾𤂖
+𤄃𤇆𤇾𤎼𤘩𤚥𤢖𤩍𤭖𤭯
+𤰖𤸎𤸷𤹪𤺋𥁊𥁕𥄢𥆩𥇥
+𥇍𥈞𥉌𥐮𥓙𥖧𥞩𥞴𥧔𥫤
+𥫣𥫱𥮲𥱋𥱤𥸮𥹖𥹥𥹢𥻘
+𥻂𥻨𥼣𥽜𥿠𥿔𦀌𥿻𦀗𦁠
+𦃭𦉰𦊆𣴎𦐂𦙾𦜝𦣝𦣪𦥯
+𦧝𦨞𦩘𦪌𦪷𦱳𦳝𦹥𦾔𦿸
+𦿶𦿷𧄍𧄹𧏛𧏚𧏾𧐐𧑉𧘕
+𧘔𧘱𧚓𧜎𧜣𧝒𧦅𧪄𧮳𧮾
+𧯇𧲸𧶠𧸐𨂊𨂻𨊂𨋳𨐌𨑕
+𨕫𨗈𨗉𨛗𨛺𨥉𨥆𨥫𨦈𨦺
+𨦻𨨞𨨩𨩱𨩃𨪙𨫍𨫤𨫝𨯁
+𨯯𨴐𨵱𨷻𨸟𨸶𨺉𨻫𨼲𨿸
+𩊠𩊱𩒐𩗏𩛰𩜙𩝐𩣆𩩲𩷛
+𩸕𩺊𩹉𩻄𩻩𩻛𩿎𩿗𪀯𪀚
+𪃹𪂂𢈘𪎌𪐷𪗱𪘂𪚲𠃵𤸄
+𤿲𧵳再善形慈栟軔𪊲𠅘
+𠖱𠛬𫝓𠵘𫝚𫝜𥧌𫝶𢹂𫝼
+𠟈𢿫𧦴𫞂𫞋𣟱𫞔𤁋𫞬𫞯
+𫟉𫟏𫟒𦲞𧰼𫟰𫝥𫠍𫠗𦍌
+𩸽𪘚
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex
new file mode 100644
index 0000000000..b1d08c6c89
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex
@@ -0,0 +1,75 @@
+%
+% This file is generated from the data of UniJIS-UTF32
+% in cid2code.txt (Version 02/05/2019)
+% for Adobe-Japan1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Japan1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-Japan1-0\\
+\UTF{28CDD}\UTF{2F8ED}\UTF{25874}\UTF{28EF6}\UTF{2F8DC}\UTF{2F884}\UTF{2F877}\UTF{2F80F}\UTF{2F8D3}\UTF{2F818}%
+\UTF{21A1A}\UTF{243D0}\UTF{2F920}\UTF{1F100}
+
+Adobe-Japan1-4\\
+\UTF{1F110}\UTF{1F111}\UTF{1F112}\UTF{1F113}\UTF{1F114}\UTF{1F115}\UTF{1F116}\UTF{1F117}\UTF{1F118}\UTF{1F119}%
+\UTF{1F11A}\UTF{1F11B}\UTF{1F11C}\UTF{1F11D}\UTF{1F11E}\UTF{1F11F}\UTF{1F120}\UTF{1F121}\UTF{1F122}\UTF{1F123}%
+\UTF{1F124}\UTF{1F125}\UTF{1F126}\UTF{1F127}\UTF{1F128}\UTF{1F129}\UTF{1F150}\UTF{1F151}\UTF{1F152}\UTF{1F153}%
+\UTF{1F154}\UTF{1F155}\UTF{1F156}\UTF{1F157}\UTF{1F158}\UTF{1F159}\UTF{1F15A}\UTF{1F15B}\UTF{1F15C}\UTF{1F15D}%
+\UTF{1F15E}\UTF{1F15F}\UTF{1F160}\UTF{1F161}\UTF{1F162}\UTF{1F163}\UTF{1F164}\UTF{1F165}\UTF{1F166}\UTF{1F167}%
+\UTF{1F168}\UTF{1F169}\UTF{1F130}\UTF{1F131}\UTF{1F132}\UTF{1F133}\UTF{1F134}\UTF{1F135}\UTF{1F136}\UTF{1F137}%
+\UTF{1F138}\UTF{1F139}\UTF{1F13A}\UTF{1F13B}\UTF{1F13C}\UTF{1F13D}\UTF{1F13E}\UTF{1F13F}\UTF{1F140}\UTF{1F141}%
+\UTF{1F142}\UTF{1F143}\UTF{1F144}\UTF{1F145}\UTF{1F146}\UTF{1F147}\UTF{1F148}\UTF{1F149}\UTF{1F202}\UTF{1F237}%
+\UTF{1F170}\UTF{1F171}\UTF{1F172}\UTF{1F173}\UTF{1F174}\UTF{1F175}\UTF{1F176}\UTF{1F177}\UTF{1F178}\UTF{1F179}%
+\UTF{1F17A}\UTF{1F17B}\UTF{1F17C}\UTF{1F17D}\UTF{1F17E}\UTF{1F17F}\UTF{1F180}\UTF{1F181}\UTF{1F182}\UTF{1F183}%
+\UTF{1F184}\UTF{1F185}\UTF{1F186}\UTF{1F187}\UTF{1F188}\UTF{1F189}\UTF{2F945}\UTF{2090E}\UTF{26951}\UTF{2B7D8}%
+\UTF{2F8FC}\UTF{2F995}\UTF{2F8EA}\UTF{2F822}\UTF{26222}\UTF{20BB7}\UTF{29D4B}\UTF{2F833}\UTF{2B78E}\UTF{2F8AC}%
+\UTF{20A64}\UTF{2F903}\UTF{2B746}\UTF{2B777}\UTF{2F90B}\UTF{20B9F}\UTF{2F828}\UTF{2F921}\UTF{2F83F}\UTF{2F873}%
+\UTF{2D544}\UTF{2000B}\UTF{2F852}\UTF{2967F}\UTF{2F947}\UTF{201A2}\UTF{2E569}\UTF{2B751}\UTF{2F8B2}\UTF{27FB7}%
+\UTF{23CFE}\UTF{2F91A}\UTF{25AD7}\UTF{2F89A}\UTF{2F90F}\UTF{2123D}\UTF{2F81A}\UTF{24D14}\UTF{2F862}\UTF{2B789}%
+\UTF{2F9D0}\UTF{2F9DF}\UTF{2567F}\UTF{266B0}\UTF{20628}\UTF{2008A}\UTF{20984}\UTF{2F82C}\UTF{2F86D}\UTF{2F8B6}%
+\UTF{26999}\UTF{233CC}\UTF{2F8DB}\UTF{2A9E6}\UTF{2B7BD}\UTF{2F96C}\UTF{2E278}\UTF{2053F}\UTF{2626A}\UTF{200B0}%
+\UTF{2E6EA}\UTF{28987}\UTF{28E17}\UTF{2B81A}\UTF{242EE}\UTF{2F8E1}\UTF{23CBE}\UTF{20611}\UTF{2F9F4}\UTF{2F804}%
+\UTF{2363A}\UTF{233FE}\UTF{22609}
+
+Adobe-Japan1-5\\
+\UTF{2131B}\UTF{2146E}\UTF{218BD}\UTF{216B4}\UTF{21E34}\UTF{231C4}\UTF{235C4}\UTF{2373F}\UTF{23763}\UTF{247F1}%
+\UTF{2548E}\UTF{2550E}\UTF{25771}\UTF{259C4}\UTF{25DA1}\UTF{26AFF}\UTF{26E40}\UTF{270F4}\UTF{27684}\UTF{28277}%
+\UTF{283CD}\UTF{2A190}\UTF{20089}\UTF{200A2}\UTF{200A4}\UTF{20213}\UTF{2032B}\UTF{20381}\UTF{20371}\UTF{203F9}%
+\UTF{2044A}\UTF{20509}\UTF{205D6}\UTF{2074F}\UTF{20807}\UTF{2083A}\UTF{208B9}\UTF{2097C}\UTF{2099D}\UTF{20AD3}%
+\UTF{20B1D}\UTF{20D45}\UTF{20DE1}\UTF{20E95}\UTF{20E6D}\UTF{20E64}\UTF{20F5F}\UTF{21201}\UTF{21255}\UTF{2127B}%
+\UTF{21274}\UTF{212E4}\UTF{212D7}\UTF{212FD}\UTF{21336}\UTF{21344}\UTF{213C4}\UTF{2146D}\UTF{215D7}\UTF{26C29}%
+\UTF{21647}\UTF{21706}\UTF{21742}\UTF{219C3}\UTF{21C56}\UTF{21D2D}\UTF{21D45}\UTF{21D78}\UTF{21D62}\UTF{21DA1}%
+\UTF{21D9C}\UTF{21D92}\UTF{21DB7}\UTF{21DE0}\UTF{21E33}\UTF{21F1E}\UTF{21F76}\UTF{21FFA}\UTF{2217B}\UTF{2231E}%
+\UTF{223AD}\UTF{226F3}\UTF{2285B}\UTF{228AB}\UTF{2298F}\UTF{22AB8}\UTF{22B4F}\UTF{22B50}\UTF{22B46}\UTF{22C1D}%
+\UTF{22BA6}\UTF{22C24}\UTF{22DE1}\UTF{231C3}\UTF{231F5}\UTF{231B6}\UTF{23372}\UTF{233D3}\UTF{233D2}\UTF{233D0}%
+\UTF{233E4}\UTF{233D5}\UTF{233DA}\UTF{233DF}\UTF{2344A}\UTF{23451}\UTF{2344B}\UTF{23465}\UTF{234E4}\UTF{2355A}%
+\UTF{23594}\UTF{23639}\UTF{23647}\UTF{23638}\UTF{2371C}\UTF{2370C}\UTF{23764}\UTF{237FF}\UTF{237E7}\UTF{23824}%
+\UTF{2383D}\UTF{23A98}\UTF{23C7F}\UTF{23D00}\UTF{23D40}\UTF{23DFA}\UTF{23DF9}\UTF{23DD3}\UTF{23F7E}\UTF{24096}%
+\UTF{24103}\UTF{241C6}\UTF{241FE}\UTF{243BC}\UTF{24629}\UTF{246A5}\UTF{24896}\UTF{24A4D}\UTF{24B56}\UTF{24B6F}%
+\UTF{24C16}\UTF{24E0E}\UTF{24E37}\UTF{24E6A}\UTF{24E8B}\UTF{2504A}\UTF{25055}\UTF{25122}\UTF{251A9}\UTF{251E5}%
+\UTF{251CD}\UTF{2521E}\UTF{2524C}\UTF{2542E}\UTF{254D9}\UTF{255A7}\UTF{257A9}\UTF{257B4}\UTF{259D4}\UTF{25AE4}%
+\UTF{25AE3}\UTF{25AF1}\UTF{25BB2}\UTF{25C4B}\UTF{25C64}\UTF{25E2E}\UTF{25E56}\UTF{25E65}\UTF{25E62}\UTF{25ED8}%
+\UTF{25EC2}\UTF{25EE8}\UTF{25F23}\UTF{25F5C}\UTF{25FE0}\UTF{25FD4}\UTF{2600C}\UTF{25FFB}\UTF{26017}\UTF{26060}%
+\UTF{260ED}\UTF{26270}\UTF{26286}\UTF{23D0E}\UTF{26402}\UTF{2667E}\UTF{2671D}\UTF{268DD}\UTF{268EA}\UTF{2696F}%
+\UTF{269DD}\UTF{26A1E}\UTF{26A58}\UTF{26A8C}\UTF{26AB7}\UTF{26C73}\UTF{26CDD}\UTF{26E65}\UTF{26F94}\UTF{26FF8}%
+\UTF{26FF6}\UTF{26FF7}\UTF{2710D}\UTF{27139}\UTF{273DB}\UTF{273DA}\UTF{273FE}\UTF{27410}\UTF{27449}\UTF{27615}%
+\UTF{27614}\UTF{27631}\UTF{27693}\UTF{2770E}\UTF{27723}\UTF{27752}\UTF{27985}\UTF{27A84}\UTF{27BB3}\UTF{27BBE}%
+\UTF{27BC7}\UTF{27CB8}\UTF{27DA0}\UTF{27E10}\UTF{2808A}\UTF{280BB}\UTF{28282}\UTF{282F3}\UTF{2840C}\UTF{28455}%
+\UTF{2856B}\UTF{285C8}\UTF{285C9}\UTF{286D7}\UTF{286FA}\UTF{28949}\UTF{28946}\UTF{2896B}\UTF{28988}\UTF{289BA}%
+\UTF{289BB}\UTF{28A1E}\UTF{28A29}\UTF{28A71}\UTF{28A43}\UTF{28A99}\UTF{28ACD}\UTF{28AE4}\UTF{28ADD}\UTF{28BC1}%
+\UTF{28BEF}\UTF{28D10}\UTF{28D71}\UTF{28DFB}\UTF{28E1F}\UTF{28E36}\UTF{28E89}\UTF{28EEB}\UTF{28F32}\UTF{28FF8}%
+\UTF{292A0}\UTF{292B1}\UTF{29490}\UTF{295CF}\UTF{296F0}\UTF{29719}\UTF{29750}\UTF{298C6}\UTF{29A72}\UTF{29DDB}%
+\UTF{29E15}\UTF{29E8A}\UTF{29E49}\UTF{29EC4}\UTF{29EE9}\UTF{29EDB}\UTF{29FCE}\UTF{29FD7}\UTF{2A02F}\UTF{2A01A}%
+\UTF{2A0F9}\UTF{2A082}\UTF{22218}\UTF{2A38C}\UTF{2A437}\UTF{2A5F1}\UTF{2A602}\UTF{2A6B2}\UTF{200F5}\UTF{24E04}%
+\UTF{24FF2}\UTF{27D73}\UTF{2F815}\UTF{2F846}\UTF{2F899}\UTF{2F8A6}\UTF{2F8E5}\UTF{2F9DE}\UTF{2A2B2}\UTF{20158}%
+\UTF{205B1}\UTF{206EC}\UTF{2B753}\UTF{20D58}\UTF{2B75A}\UTF{2B75C}\UTF{259CC}\UTF{2B776}\UTF{22E42}\UTF{2B77C}%
+\UTF{207C8}\UTF{22FEB}\UTF{279B4}\UTF{2B782}\UTF{2B78B}\UTF{237F1}\UTF{2B794}\UTF{2404B}\UTF{2B7AC}\UTF{2B7AF}%
+\UTF{2B7C9}\UTF{2B7CF}\UTF{2B7D2}\UTF{26C9E}\UTF{27C3C}\UTF{2B7F0}\UTF{2B765}\UTF{2B80D}\UTF{2B817}\UTF{2634C}%
+\UTF{29E3D}\UTF{2A61A}
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex
new file mode 100644
index 0000000000..6af3e290ff
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex
@@ -0,0 +1,14 @@
+%
+% This file is generated from the data of UniKS-UTF32
+% in cid2code.txt (Version 01/31/2012)
+% for Adobe-Korea1-2
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Korea1-2/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex b/language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex
new file mode 100644
index 0000000000..89b4ef4784
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex
@@ -0,0 +1,313 @@
+% -*- coding: utf-8 -*-
+%%%%%%%%
+% To control hyperref on command line,
+% you can select one of (1),(2a),(2b),(3).
+% (1) do not treat hyperref
+% $ uplatex uotf-sp-utf8.tex
+% (2a) hyperref + dvipdfmx (with CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\input" uotf-sp-utf8.tex
+% (2b) hyperref + dvipdfmx + out2uni (without CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\nocmap{true}\input" uotf-sp-utf8.tex
+% (3) hyperref + dvips + convbkmk.rb + distiller/ps2pdf
+% $ uplatex "\def\withhyperref{dvips}\input" uotf-sp-utf8.tex
+%%%%%%
+
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000
+ \uptexmodetrue
+ \def\tounicode{pdf:tounicode UTF8-UTF16}
+\else
+ \ifnum\jis"2121="A1A1
+ \def\tounicode{pdf:tounicode EUC-UCS2}
+ \fi
+ \ifnum\jis"2121="8140
+ \def\tounicode{pdf:tounicode 90ms-RKSJ-UCS2}
+ \fi
+\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@ujarticle{ujarticle}
+\def\@noreplace{noreplace}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@noreplace
+ \ifuptexmode
+ \ifx\class\@ujarticle
+ \def\@enc@{JY2}\def\@dir@{h}
+ \else
+ \def\@enc@{JT2}\def\@dir@{v}
+ \fi
+ \DeclareFontFamily{\@enc@}{mcw}{}
+ \DeclareFontFamily{\@enc@}{gtw}{}
+ \DeclareFontShape{\@enc@}{mcw}{m}{n}{<->s*[0.962216]upjpnrm-\@dir@}{}
+ \DeclareFontShape{\@enc@}{gtw}{m}{n}{<->s*[0.962216]upjpngt-\@dir@}{}
+ \DeclareFontShape{\@enc@}{gt}{m}{n}{<->s*[0.962216]upjpngt-\@dir@}{}
+ \DeclareFontShape{\@enc@}{mcw}{bx}{n}{<->ssub*gt/m/n}{}
+ \DeclareFontShape{\@enc@}{gtw}{bx}{n}{<->ssub*gt/m/n}{}
+ \DeclareFontShape{\@enc@}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+ \DeclareRobustCommand\mcw{\kanjifamily{mcw}\selectfont}
+ \DeclareRobustCommand\gtw{\kanjifamily{gtw}\selectfont}
+ \renewcommand\mcdefault{mcw}
+ \renewcommand\gtdefault{gtw}
+ \fi
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\ifx\class\@jarticle
+ \documentclass[a4paper,titlepage]{\class}
+\else
+ \ifx\class\@ujarticle
+ \documentclass[a4paper,titlepage]{\class}
+ \else
+ \documentclass[a4paper,titlepage,landscape]{\class}
+ \fi
+\fi
+
+\usepackage[\@opt@]{otf}
+
+\def\@dvipdfmx{dvipdfmx}
+\def\@dvips{dvips}
+
+\ifx\withhyperref\@undefined
+ \def\withhyperref{undefined}
+ \edef\texorpdfstring#1#2{#1}
+\else
+ \ifx\withhyperref\@dvipdfmx
+ \def\@hyperrefkeyval{dvipdfm}
+ \usepackage{atbegshi}
+ \ifx\nocmap\@undefined
+ \AtBeginShipoutFirst{\special{\tounicode}}
+ \fi
+ \fi
+ \ifx\withhyperref\@dvips
+ \def\@hyperrefkeyval{dvips}
+ \fi
+
+\usepackage[\@hyperrefkeyval,%
+bookmarks=true,%
+bookmarksnumbered=true,%
+bookmarkstype=toc,%
+%pdfstartview={FitBH -32768},%
+pdftitle={japanese-otfのテスト},%
+pdfsubject={Unicode supplementary plane編},%
+pdfauthor={upTeXプロジェクト},%
+pdfkeywords={TeX; dvips; dvipdfmx; bookmark; hyperref; しおり; pdf}%
+]{hyperref}
+
+\fi
+
+\makeatother
+
+\usepackage{redeffont}
+
+\ajUTFVarDef{叱}{20B9F}
+\ajUTFVarDef{亭}{20158}
+\ajUTFVarDef{吉}{20bb7}
+\ajUTFVarDef{座}{2B776}
+
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+
+\edef\bs{$\backslash$\kern0em}
+\setlength\parindent{0em}
+
+\begin{document}
+\section{見出し}
+
+コンパイラー:\ifuptexmode upLaTeX\else pLaTeX\fi\\
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}
+
+\vspace{\baselineskip}
+\ifuptexmode
+\begin{tabular}{l||ccccccc}
+フォント & 仮名 & 漢字 & UTF-8 & \bs kchar & \bs UTF & \bs CID\\
+\hline
+mc/m & ひらかな & 漢字 & 𠮟𠅘 & \kchar"20B9F\kchar"20158 & \UTF{20B9F}\UTF{20158} & \CID{13803}\CID{20075} \\
+mc/bx & {\bfseries ひらかな} & {\bfseries 漢字} & {\bfseries 𠮟𠅘} & {\bfseries\kchar"20B9F\kchar"20158} & {\bfseries\UTF{20B9F}\UTF{20158}} & {\bfseries\CID{13803}\CID{20075}} \\
+gt/m & {\gtfamily ひらかな} & {\gtfamily 漢字} & {\gtfamily 𠮟𠅘} & {\gtfamily\kchar"20B9F\kchar"20158} & {\gtfamily\UTF{20B9F}\UTF{20158}} & {\gtfamily\CID{13803}\CID{20075}} \\
+gt/bx & {\gtfamily\bfseries ひらかな} & {\gtfamily\bfseries 漢字} & {\gtfamily\bfseries 𠮟𠅘} & {\gtfamily\bfseries\kchar"20B9F\kchar"20158} & {\gtfamily\bfseries\UTF{20B9F}\UTF{20158}} & {\gtfamily\bfseries\CID{13803}\CID{20075}} \\
+mg/m & {\mgfamily ひらかな} & {\mgfamily 漢字} & {\mgfamily 𠮟𠅘} & {\mgfamily\kchar"20B9F\kchar"20158} & {\mgfamily\UTF{20B9F}\UTF{20158}} & {\mgfamily\CID{13803}\CID{20075}} \\
+\end{tabular}
+\else
+\begin{tabular}{l||ccccc}
+フォント & 仮名 & 漢字 & \bs UTF & \bs CID\\
+\hline
+mc/m & ひらかな & 漢字 & \UTF{20B9F}\UTF{20158} & \CID{13803}\CID{20075} \\
+mc/bx & {\bfseries ひらかな} & {\bfseries 漢字} & {\bfseries\UTF{20B9F}\UTF{20158}} & {\bfseries\CID{13803}\CID{20075}} \\
+gt/m & {\gtfamily ひらかな} & {\gtfamily 漢字} & {\gtfamily\UTF{20B9F}\UTF{20158}} & {\gtfamily\CID{13803}\CID{20075}} \\
+gt/bx & {\gtfamily\bfseries ひらかな} & {\gtfamily\bfseries 漢字} & {\gtfamily\bfseries\UTF{20B9F}\UTF{20158}} & {\gtfamily\bfseries\CID{13803}\CID{20075}} \\
+mg/m & {\mgfamily ひらかな} & {\mgfamily 漢字} & {\mgfamily\UTF{20B9F}\UTF{20158}} & {\mgfamily\CID{13803}\CID{20075}} \\
+\end{tabular}
+\fi
+\vspace{\baselineskip}
+
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}
+
+簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}
+
+\vspace{\baselineskip}
+
+\ifuptexmode
+ \kchar"20B9Fる。
+ 𠮟る。
+\fi
+\ajVar{叱}る。
+叱る。
+
+\ifuptexmode
+ らいおん\kchar"20158。
+ らいおん𠅘。
+\fi
+らいおん\ajVar{亭}。
+らいおん亭。
+
+\ifuptexmode
+ \kchar"20BB7野家。
+ 𠮷野家。
+\fi
+\ajVar{吉}野家。
+吉野家。
+
+\ifuptexmode
+ 銀\kchar"2B776アスター。
+ 銀𫝶アスター。
+\fi
+銀\ajVar{座}アスター。
+銀座アスター。
+
+\makeatletter
+\ifx\withhyperref\@undefined
+\else
+
+\section{見出しに\texorpdfstring{\bs}{\134}UTF, \texorpdfstring{\bs}{\134}UTFC, \texorpdfstring{\bs}{\134}UTFMなど}
+\subsection{日本:\UTF{9aa8}\UTF{6D77} 簡体字:\UTFC{9aa8}\UTFC{6D77} 繁體字:\UTFT{9AA8}\UTFT{6d77} 朝鮮:\UTFK{9AA8}\UTFK{6d77}}
+日本:\UTF{9aa8}\UTF{6D77} 簡体字:\UTFC{9aa8}\UTFC{6D77} 繁體字:\UTFT{9AA8}\UTFT{6d77} 朝鮮:\UTFK{9AA8}\UTFK{6d77}
+
+\subsection{ハングル:\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}}
+ハングル:\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}
+
+\subsection{日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}}
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+\subsection{日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}}
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+\subsection{日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}}
+日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}
+
+\subsection{簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}}
+簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}
+\fi
+\makeatother
+
+\clearpage
+[mc/m]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+{\bfseries%
+[mc/bx]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+}
+
+{\gtfamily
+[gt/m]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+{\bfseries%
+[gt/bx]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+}}
+
+{\mgfamily
+[mg/m]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+}
+
+\clearpage
+[mc/m]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+%\end{document}
+
+{\bfseries%
+[mc/bx]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+}
+
+\end{document}
+
+
+{\gtfamily
+[gt/m]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+{\bfseries%
+[gt/bx]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+}}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex
new file mode 100644
index 0000000000..b7c8a5f5f5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex
@@ -0,0 +1,291 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@utarticle{utarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\def\baseshift{-.12zh}
+\ifx\class\@tarticle\def\baseshift{-.5zh}\fi
+\ifx\class\@utarticle\def\baseshift{-.5zh}\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\documentclass[a4paper,titlepage, draft]{\class}
+%\documentclass[a4paper,titlepage, draft,landscape]{\class}
+
+\usepackage[\@opt@]{otf}
+
+%
+% furikana.sty があれば読み込む
+\newread\@istheresuchafile
+\openin\@istheresuchafile furikana.sty
+\ifeof\@istheresuchafile\relax
+\else\closein\@istheresuchafile\relax
+\usepackage{furikana}% found
+\fi
+
+\makeatother
+
+\usepackage{redeffont}
+
+
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\ajCIDVarDef{り}{12746}
+\ajCIDVarDef{高}{8705}
+\ajUTFVarDef{鴎}{9DD7}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+\begin{document}
+\section{見出し}
+
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}
+
+\vspace{\baselineskip}
+\begin{tabular}{l||ccccc}
+フォント & 仮名 & 漢字 & UTF & CID & ルビ\\
+\hline
+mc/m & ひらかな & 漢字 & \UTF{9DD7} & \CID{8705} & {\rubyfamily 振りかな}\\
+mc/bx & {\bfseries ひらかな} & {\bfseries 漢字} & {\bfseries\UTF{9DD7}} & {\bfseries\CID{8705}} & {\bfseries\rubyfamily 振りかな}\\
+gt/m & {\gtfamily ひらかな} & {\gtfamily 漢字} & {\gtfamily\UTF{9DD7}} & {\gtfamily\CID{8705}} & {\gtfamily\rubyfamily 振りかな}\\
+gt/bx & {\gtfamily\bfseries ひらかな} & {\gtfamily\bfseries 漢字} & {\gtfamily\bfseries\UTF{9DD7}} & {\gtfamily\bfseries\CID{8705}} & {\gtfamily\bfseries\rubyfamily 振りかな}\\
+mg/m & {\mgfamily ひらかな} & {\mgfamily 漢字} & {\mgfamily\UTF{9DD7}} & {\mgfamily\CID{8705}} & {\mgfamily\rubyfamily 振りかな}\\
+\end{tabular}
+\vspace{\baselineskip}
+
+日本:\UTF{9aa8} 簡体字:\UTFC{9aa8} 繁體字:\UTFT{9aa8} 朝鮮:\UTFK{9aa8}
+
+日本:\UTF{6d77} 簡体字:\UTFC{6d77} 繁體字:\UTFT{6d77} 朝鮮:\UTFK{6d77}
+
+% with furikana.sty
+\makeatletter
+\ifx\kana\@undefined
+\else
+\kana{漢字}{振りかな}{\bfseries \kana{漢字}{振りかな}}%
+{\gtfamily\kana{漢字}{振りかな}\bfseries \kana{漢字}{振りかな}}
+{\mgfamily\kana{漢字}{振りかな}}
+
+\kana{\UTF{9DD7}}{かな}\kana{鴎}{かな}
+
+\Kana[3]{\UTFK{c548},\UTFK{b155},\UTFK{d558},\UTFK{c138},\UTFK{c694}}{アン,ニョン,ハ,セ,ヨ}
+\fi
+\makeatother
+
+\vspace{\baselineskip}
+
+アイウエオ\raisebox\baseshift{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+アイウエオ\raisebox\baseshift{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+
+\clearpage
+[mc/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\bfseries%
+[mc/bx]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}
+
+{\gtfamily
+[gt/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\bfseries%
+[gt/bx]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}}
+
+{\mgfamily
+[mg/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}
+
+{\rubyfamily%
+[ruby/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+
+\fbox{\hbox{\tate\Huge ㇰ}}
+
+\fbox{\hbox{\yoko\Huge ㇰ}}
+
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\bfseries%
+[ruby/bx]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\fbox{\hbox{\tate\Huge ぁ}}
+
+\fbox{\hbox{\yoko\Huge ぁ}}
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex
new file mode 100644
index 0000000000..afe549dd0e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex
@@ -0,0 +1,191 @@
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \def\class{jarticle}
+\fi
+\ifx\class\@jarticle
+\else
+ \ifx\class\@tarticle
+ \else
+ \edef\@opt@{uplatex,\@opt@}
+ \fi
+\fi
+
+\documentclass[a4paper,titlepage, draft]{\class}
+%\documentclass[a4paper,titlepage, draft,landscape]{\class}
+
+\usepackage[\@opt@]{otf}
+
+%
+% furikana.sty $B$,$"$l$PFI$_9~$`(B
+\newread\@istheresuchafile
+\openin\@istheresuchafile furikana.sty
+\ifeof\@istheresuchafile\relax
+\else\closein\@istheresuchafile\relax
+\usepackage{furikana}% found
+\fi
+
+\makeatother
+
+\usepackage{redeffont}
+
+
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\ajCIDVarDef{$B$j(B}{12746}
+\ajCIDVarDef{$B9b(B}{8705}
+\ajUTFVarDef{$B2*(B}{9DD7}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+\begin{document}
+\section{$B8+=P$7(B}
+
+$B%/%i%9!'(B\texttt{\class}\\
+$B%*%W%7%g%s!'(B\texttt{\option}
+
+\vspace{\baselineskip}
+\begin{tabular}{l||ccccc}
+$B%U%)%s%H(B & $B2>L>(B & $B4A;z(B & UTF & CID & $B%k%S(B\\
+\hline
+mc/m & $B$R$i$+$J(B & $B4A;z(B & \UTF{9DD7} & \CID{8705} & {\rubyfamily $B?6$j$+$J(B}\\
+mc/bx & {\bfseries $B$R$i$+$J(B} & {\bfseries $B4A;z(B} & {\bfseries\UTF{9DD7}} & {\bfseries\CID{8705}} & {\bfseries\rubyfamily $B?6$j$+$J(B}\\
+gt/m & {\gtfamily $B$R$i$+$J(B} & {\gtfamily $B4A;z(B} & {\gtfamily\UTF{9DD7}} & {\gtfamily\CID{8705}} & {\gtfamily\rubyfamily $B?6$j$+$J(B}\\
+gt/bx & {\gtfamily\bfseries $B$R$i$+$J(B} & {\gtfamily\bfseries $B4A;z(B} & {\gtfamily\bfseries\UTF{9DD7}} & {\gtfamily\bfseries\CID{8705}} & {\gtfamily\bfseries\rubyfamily $B?6$j$+$J(B}\\
+mg/m & {\mgfamily $B$R$i$+$J(B} & {\mgfamily $B4A;z(B} & {\mgfamily\UTF{9DD7}} & {\mgfamily\CID{8705}} & {\mgfamily\rubyfamily $B?6$j$+$J(B}\\
+\end{tabular}
+\vspace{\baselineskip}
+
+$BF|K\!'(B\UTF{9aa8}$B!!4JBN;z!'(B\UTFC{9aa8}$B!!HKqs;z!'(B\UTFT{9aa8}$B!!D+A/!'(B\UTFK{9aa8}
+
+$BF|K\!'(B\UTF{6d77}$B!!4JBN;z!'(B\UTFC{6d77}$B!!HKqs;z!'(B\UTFT{6d77}$B!!D+A/!'(B\UTFK{6d77}
+
+% with furikana.sty
+\makeatletter
+\ifx\kana\@undefined
+\else
+\kana{$B4A;z(B}{$B?6$j$+$J(B}{\bfseries \kana{$B4A;z(B}{$B?6$j$+$J(B}}%
+{\gtfamily\kana{$B4A;z(B}{$B?6$j$+$J(B}\bfseries \kana{$B4A;z(B}{$B?6$j$+$J(B}}
+{\mgfamily\kana{$B4A;z(B}{$B?6$j$+$J(B}}
+
+\kana{\UTF{9DD7}}{$B$+$J(B}\kana{$B2*(B}{$B$+$J(B}
+
+\Kana[3]{\UTFK{c548},\UTFK{b155},\UTFK{d558},\UTFK{c138},\UTFK{c694}}{$B%"%s(B,$B%K%g%s(B,$B%O(B,$B%;(B,$B%h(B}
+\fi
+\makeatother
+
+
+\clearpage
+[mc/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[mc/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\gtfamily
+[gt/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[gt/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\mgfamily
+[mg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\rubyfamily%
+[ruby/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[ruby/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\fbox{\hbox{\tate\Huge $B$!(B}}
+
+\fbox{\hbox{\yoko\Huge $B$!(B}}
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex
new file mode 100644
index 0000000000..e901822def
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex
@@ -0,0 +1,293 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\def\@default{default}
+\def\@br@{br}
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\burasage\@br@
+ \edef\@opt@{\@opt@,burasage}
+ \def\burasage{yes}
+\else
+ \def\burasage{no}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{utbook}
+ \else
+ \def\class{tbook}
+ \fi
+\fi
+
+\documentclass[twocolumn]{\class}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\textwidth 13zw
+\columnsep 3zw
+\columnseprule 1pt
+\linewidth 5zw
+\parindent 0zw
+\pagestyle{empty}
+%\parskip \baselineskip
+\begin{document}
+class: \texttt{\class}\\
+option: \texttt{\option}\\
+burasage: \texttt{\burasage}
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+
+\newpage
+
+\textgt{タイプ別の、組み合わせ。}
+
+□ああ□
+
+□あ(□
+
+□あ)□
+
+□あ・□
+
+□あ。□
+
+□あ―□
+
+□あ?□
+
+□あ、□
+
+□(あ□
+
+□((□
+
+□()□
+
+□(・□
+
+□(。□
+
+□(―□
+
+□(?□
+
+□(、□
+
+□)あ□
+
+□)(□
+
+□))□
+
+□)・□
+
+□)。□
+
+□)―□
+
+□)?□
+
+□)、□
+
+□・あ□
+
+□・(□
+
+□・)□
+
+□・・□
+
+□・。□
+
+□・―□
+
+□・?□
+
+□・、□
+
+□。あ□
+
+□。(□
+
+□。)□
+
+□。・□
+
+□。。□
+
+□。―□
+
+□。?□
+
+□。、□
+
+□―あ□
+
+□―(□
+
+□―)□
+
+□―・□
+
+□―。□
+
+□――□
+
+□―?□
+
+□―、□
+
+□?あ□
+
+□?(□
+
+□?)□
+
+□?・□
+
+□?。□
+
+□?―□
+
+□??□
+
+□?、□
+
+□、あ□
+
+□、(□
+
+□、)□
+
+□、・□
+
+□、。□
+
+□、―□
+
+□、?□
+
+□、、□
+
+\newpage
+{\bfseries%
+[mc/bx]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+
+\if0
+{\ltseries%
+[mc/l]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+\fi
+
+{\gtfamily
+[gt/m]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+
+{\bfseries%
+[gt/bx]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+
+\if0
+{\ebseries%
+[gt/eb]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+\fi
+}
+
+{\mgfamily
+[mg/m]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex
new file mode 100644
index 0000000000..65a235f946
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex
@@ -0,0 +1,158 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\def\@default{default}
+\def\@br@{br}
+\def\@newjis@{04}
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\burasage\@br@
+ \edef\@opt@{\@opt@,burasage}
+ \def\burasage{yes}
+\else
+ \def\burasage{no}
+\fi
+
+\ifx\jisvar\@newjis@
+ \edef\@opt@{\@opt@,jis2004}
+ \def\jisvar{2004}
+\else
+ \def\jisvar{conventional}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\documentclass[a4paper,titlepage,draft]{\class}
+%\documentclass[a4paper,titlepage,draft,landscape]{\class}
+
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\usepackage{redeffont}
+\parindent 0zw
+\pagestyle{empty}
+%\parskip \baselineskip
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+
+\def\testglyph{%
+逢芦飴溢茨鰯淫迂厩噂餌襖迦牙廻恢晦蟹葛鞄
+釜翰翫徽祇汲灸笈卿饗僅喰櫛屑粂祁隙倦捲牽
+鍵諺巷梗膏鵠甑叉榊薩鯖錆鮫餐杓灼酋楯薯藷
+哨鞘杖蝕訊逗摺撰煎煽穿箭詮噌遡揃遜腿蛸辿
+樽歎註瀦捗槌鎚辻挺鄭擢溺兎堵屠賭瀞遁謎灘
+楢禰牌這秤駁箸叛挽誹樋稗逼謬豹廟瀕斧蔽瞥
+蔑篇娩鞭庖蓬鱒迄儲餅籾爺鑓愈猷漣煉簾榔冤
+叟咬嘲囀徘扁棘橙狡甕甦疼祟竈筵篝腱艘芒虔
+蜃蠅訝靄靱騙鴉
+\ifuptexmode
+ 俱剝吞噓姸屛幷瘦繫摯懲蘒譿悞煒驊夆暵屢
+\fi
+}
+\def\testutf{%
+\UTF{9022}\UTF{82A6}\UTF{98F4}\UTF{6EA2}\UTF{8328}\UTF{9C2F}\UTF{6DEB}\UTF{8FC2}\UTF{53A9}\UTF{5642}%
+\UTF{990C}\UTF{8956}\UTF{8FE6}\UTF{7259}\UTF{5EFB}\UTF{6062}\UTF{6666}\UTF{87F9}\UTF{845B}\UTF{9784}%
+\UTF{91DC}\UTF{7FF0}\UTF{7FEB}\UTF{5FBD}\UTF{7947}\UTF{6C72}\UTF{7078}\UTF{7B08}\UTF{537F}\UTF{9957}%
+\UTF{50C5}\UTF{55B0}\UTF{6ADB}\UTF{5C51}\UTF{7C82}\UTF{7941}\UTF{9699}\UTF{5026}\UTF{6372}\UTF{727D}%
+\UTF{9375}\UTF{8AFA}\UTF{5DF7}\UTF{6897}\UTF{818F}\UTF{9D60}\UTF{7511}\UTF{53C9}\UTF{698A}\UTF{85A9}%
+\UTF{9BD6}\UTF{9306}\UTF{9BAB}\UTF{9910}\UTF{6753}\UTF{707C}\UTF{914B}\UTF{696F}\UTF{85AF}\UTF{85F7}%
+\UTF{54E8}\UTF{9798}\UTF{6756}\UTF{8755}\UTF{8A0A}\UTF{9017}\UTF{647A}\UTF{64B0}\UTF{714E}\UTF{717D}%
+\UTF{7A7F}\UTF{7BAD}\UTF{8A6E}\UTF{564C}\UTF{9061}\UTF{63C3}\UTF{905C}\UTF{817F}\UTF{86F8}\UTF{8FBF}%
+\UTF{6A3D}\UTF{6B4E}\UTF{8A3B}\UTF{7026}\UTF{6357}\UTF{69CC}\UTF{939A}\UTF{8FBB}\UTF{633A}\UTF{912D}%
+\UTF{64E2}\UTF{6EBA}\UTF{514E}\UTF{5835}\UTF{5C60}\UTF{8CED}\UTF{701E}\UTF{9041}\UTF{8B0E}\UTF{7058}%
+\UTF{6962}\UTF{79B0}\UTF{724C}\UTF{9019}\UTF{79E4}\UTF{99C1}\UTF{7BB8}\UTF{53DB}\UTF{633D}\UTF{8AB9}%
+\UTF{6A0B}\UTF{7A17}\UTF{903C}\UTF{8B2C}\UTF{8C79}\UTF{5EDF}\UTF{7015}\UTF{65A7}\UTF{853D}\UTF{77A5}%
+\UTF{8511}\UTF{7BC7}\UTF{5A29}\UTF{97AD}\UTF{5E96}\UTF{84EC}\UTF{9C52}\UTF{8FC4}\UTF{5132}\UTF{9905}%
+\UTF{7C7E}\UTF{723A}\UTF{9453}\UTF{6108}\UTF{7337}\UTF{6F23}\UTF{7149}\UTF{7C3E}\UTF{6994}\UTF{51A4}%
+\UTF{53DF}\UTF{54AC}\UTF{5632}\UTF{56C0}\UTF{5F98}\UTF{6241}\UTF{68D8}\UTF{6A59}\UTF{72E1}\UTF{7515}%
+\UTF{7526}\UTF{75BC}\UTF{795F}\UTF{7AC8}\UTF{7B75}\UTF{7BDD}\UTF{8171}\UTF{8258}\UTF{8292}\UTF{8654}%
+\UTF{8703}\UTF{8805}\UTF{8A1D}\UTF{9744}\UTF{9771}\UTF{9A19}\UTF{9D09}%
+\UTF{4FF1}\UTF{525D}\UTF{541E}\UTF{5653}\UTF{59F8}\UTF{5C5B}\UTF{5E77}\UTF{7626}\UTF{7E6B}\UTF{646F}%
+\UTF{FA40}\UTF{FA20}\UTF{8B7F}\UTF{609E}\UTF{7152}\UTF{9A4A}\UTF{5906}\UTF{66B5}\UTF{5C62}}
+
+\begin{document}
+class: \texttt{\class}\\
+option: \texttt{\option}\\
+burasage: \texttt{\burasage}\\
+jis version: \texttt{\jisvar}\\
+
+[mc/m]
+
+\testglyph
+
+\testutf
+
+{\bfseries%
+[mc/bx]
+
+\testglyph
+
+\testutf
+}
+
+{\gtfamily
+[gt/m]
+
+\testglyph
+
+\testutf
+
+{\bfseries%
+[gt/bx]
+
+\testglyph
+
+\testutf
+}}
+
+{\mgfamily
+[mg/m]
+
+\testglyph
+
+\testutf
+}
+
+%%% extra font
+{\ltseries%
+[mc/lt]
+
+\testglyph
+
+\testutf
+}
+
+{\gtfamily
+{\ebseries%
+[gt/eb]
+
+\testglyph
+
+\testutf
+}}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex
new file mode 100644
index 0000000000..087bcbcece
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex
@@ -0,0 +1,103 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\documentclass[a4paper,titlepage, draft]{\class}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\pagestyle{empty}
+%\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\textwidth=115mm
+\textheight=210mm
+\begin{document}
+
+クラス:\texttt{\class}
+
+\vspace{\baselineskip}
+\huge
+\kanjiskip 0pt plus 1sp minus 1sp
+\xkanjiskip 0.25zw plus 1sp minus 1sp
+{\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+
+\bfseries
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+}
+
+{\gtfamily\mdseries\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+
+\bfseries\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+}
+
+{\mgfamily\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ}
+
+{\gtfamily\ebseries
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+}
+
+\ifuptexmode
+otfbeta-uptex (japanese-otf-uptex) Ver.0.18でProportional仮名を、
+Ver.0.21で半角片仮名を拡張しました。
+
+\long\def\testA{〃〆ヿゟゔゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿヷヸヹヺ
+𨳝櫛𥡴𨻶杓巽屠兔冕冤𡨚𤏐爨🄀
+🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡🄢🄣
+🄤🄥🄦🄧🄨🄩🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝
+🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩🄰🄱🄲🄳🄴🄵🄶🄷
+🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉🈂🈷
+🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃
+🆄🆅🆆🆇🆈🆉眞𠤎𦥑𫟘沿芽槪割𦈢𠮷𩵋卿𫞎憲
+𠩤浩𫝆𫝷滋𠮟勺爵周将𠀋城𩙿真𠆢𫝑成𧾷𣳾炭
+𥫗彫潮𡈽冬𤴔姬𫞉諭輸𥙿𦚰𠘨𠂊𠦄卉寃拔𦦙𣏌
+杞𪧦𫞽絣𠔿𦉪𠂰𨦇𨸗𫠚𤋮桒𣲾𠘑嶲你𣘺𣏾𢘉
+。「」、・ヲァィゥェォャュョッ
+ーアイウエオカキクケコサシスセソ
+タチツテトナニヌネノハヒフヘホマ
+ミムメモヤユヨラリルレロワン゙゚
+}
+
+{\propshape
+\noindent\testA
+
+\bfseries
+\noindent\testA
+}
+
+{\gtfamily\mdseries\propshape
+\noindent\testA
+
+\bfseries\propshape
+\noindent\testA
+}
+
+{\mgfamily\propshape
+\noindent\testA
+}
+
+{\gtfamily\ebseries
+\noindent\testA
+}
+\fi
+
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex
new file mode 100644
index 0000000000..a0b9bfcb6e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex
@@ -0,0 +1,75 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\documentclass[a4paper,draft,twocolumn]{\class}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+\pagestyle{empty}
+%\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\parindent=0zw
+\textwidth=25zw
+\textheight=200mm
+\columnsep=1zw
+\makeatletter
+\long\def\test{ひらかな「ひらかな」ひらかな「ひら」「かな」\par
+漢字漢字「漢字漢字」漢字漢字「漢字」「漢字」\par
+ひらかな「ひらかな」漢字漢字「漢字」ひらかな\par
+次は“引用符”の‘テスト’です,ね.\par
+行末の区点は全角ドリに。なります。
+□□□□□□□□□□□□
+□□□□、□□□、□□□。\par
+行末の読点は半角ドリに、なります。\par
+□□□□□□□□□□□□
+□□□□、□□□、□□□、□□□。□□□。\par
+疑問符の後に空白は入るでしょうか?入った!オッケイです.\par
+\hbox to 2.5zw{漢:字}
+\setbox1=\hbox{あ}
+\dimen1=\wd1 \advance\dimen1 by .5zw
+\advance\dimen1 by \wd1
+\hbox to \dimen1{あ:あ}
+\dimen1=\wd1 \advance\dimen1 by 1.75zw
+\hbox to \dimen1{漢:あ}
+%\hbox to \dimen1{漢\hfil あ}
+\hbox to 7zw{漢字「漢字」漢字}
+\setbox1=\hbox{ひら}
+\dimen1=\wd1 \multiply\dimen1 by 3
+\advance\dimen1 by 1zw
+\hbox to \dimen1{ひら「ひら」ひら}
+}
+\makeatother
+\begin{document}
+
+クラス:\texttt{\class}
+
+\vspace{\baselineskip}
+%\kanjiskip 0pt plus 1sp minus 1sp
+\begingroup
+\propshape
+{\bfseries プロポーショナル組の例}
+
+\test
+\endgroup
+\newpage
+\phantom{クラス}
+
+\vspace{\baselineskip}
+{\bfseries べた組みの例}
+
+\test
+\end{document}