summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/fonts
diff options
context:
space:
mode:
authorTakuji Tanaka <KXD02663@nifty.ne.jp>2014-08-09 01:32:45 +0000
committerTakuji Tanaka <KXD02663@nifty.ne.jp>2014-08-09 01:32:45 +0000
commitc576300c15a26509a2018e5af14365e13b795b5b (patch)
tree3b10628bff1a45378b3a3d206d9aaa4bcdf98cc4 /Master/texmf-dist/source/fonts
parente407c7b3fe62fc6dc28bb82280025b0c502aa64b (diff)
japanese-otf-uptex 0.16
git-svn-id: svn://tug.org/texlive/trunk@34881 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/fonts')
-rw-r--r--Master/texmf-dist/source/fonts/japanese-otf-uptex/patch/otfbeta_uptex-0.16.patch (renamed from Master/texmf-dist/source/fonts/japanese-otf-uptex/patch/otfbeta_uptex-0.13.patch)59
-rw-r--r--Master/texmf-dist/source/fonts/japanese-otf-uptex/script/CheckDVICode.pm256
-rw-r--r--Master/texmf-dist/source/fonts/japanese-otf-uptex/script/MakeSPList.pm5
-rwxr-xr-xMaster/texmf-dist/source/fonts/japanese-otf-uptex/script/umkpkana.pl552
-rwxr-xr-xMaster/texmf-dist/source/fonts/japanese-otf-uptex/script/umkvpkana.pl554
-rwxr-xr-xMaster/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf4
-rwxr-xr-xMaster/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_brsg4
-rwxr-xr-xMaster/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_jis046
-rwxr-xr-xMaster/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_prop36
-rwxr-xr-xMaster/texmf-dist/source/fonts/japanese-otf-uptex/umkjvf251
10 files changed, 1469 insertions, 258 deletions
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/patch/otfbeta_uptex-0.13.patch b/Master/texmf-dist/source/fonts/japanese-otf-uptex/patch/otfbeta_uptex-0.16.patch
index ea34da1d6fb..2810a1e8f31 100644
--- a/Master/texmf-dist/source/fonts/japanese-otf-uptex/patch/otfbeta_uptex-0.13.patch
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/patch/otfbeta_uptex-0.16.patch
@@ -440,11 +440,11 @@ diff -urN otfbeta-1.7b6/fontmap/vfontmap.txt otfbeta/fontmap/vfontmap.txt
otf-ukmr-v /usr/local/share/texmf/dvipdfm/CIDFont/HYSMyeongJoStd-Medium-Acro.otf unicode
diff -urN otfbeta-1.7b6/sty/mlutf.sty otfbeta/sty/mlutf.sty
--- otfbeta-1.7b6/sty/mlutf.sty 2010-03-22 14:50:54.000000000 +0900
-+++ otfbeta/sty/mlutf.sty 2013-11-23 22:32:27.000000000 +0900
++++ otfbeta/sty/mlutf.sty 2014-07-26 19:00:00.000000000 +0900
@@ -1,5 +1,5 @@
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{mlutf}[2004/04/17 v1.1.2 psitau]
-+\ProvidesPackage{mlutf}[2004/04/17 v1.1.2 psitau, u0.13 ttk]
++\ProvidesPackage{mlutf}[2004/04/17 v1.1.2 psitau, u0.16 ttk]
%force catcode of \" be 12
\count@\catcode`\"
\catcode`\"=12
@@ -486,11 +486,11 @@ diff -urN otfbeta-1.7b6/sty/mlutf.sty otfbeta/sty/mlutf.sty
\endinput
diff -urN otfbeta-1.7b6/sty/otf.sty otfbeta/sty/otf.sty
--- otfbeta-1.7b6/sty/otf.sty 2013-11-17 09:30:36.000000000 +0900
-+++ otfbeta/sty/otf.sty 2013-11-23 12:27:24.000000000 +0900
++++ otfbeta/sty/otf.sty 2014-07-26 19:00:00.000000000 +0900
@@ -1,5 +1,5 @@
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{otf}[2013/11/17 v1.7b6 psitau]
-+\ProvidesPackage{otf}[2013/11/17 v1.7b6 psitau, u0.13 ttk]
++\ProvidesPackage{otf}[2013/11/17 v1.7b6 psitau, u0.16 ttk]
\RequirePackage{keyval}
%for processing options
\newif\if@kana \@kanafalse
@@ -649,7 +649,48 @@ diff -urN otfbeta-1.7b6/sty/otf.sty otfbeta/sty/otf.sty
\selectfont%
\multiply\@tempcntb by "1000
\advance\@tempcnta by -\@tempcntb
-@@ -264,6 +399,8 @@
+@@ -110,6 +245,11 @@
+ \if@jsclasses\def\utf@sc@le{0.92469}\else\def\utf@sc@le{0.962216}\fi
+ \fi
+ %definitions of alt-normal font family
++\@ifundefined{if@enablejfam}{%
++ \let\if@jfam@used\iffalse
++}{%
++ \let\if@jfam@used\if@enablejfam
++}
+ \if@replace
+ \DeclareErrorKanjiFont{\otf@JYn}{hmc}{m}{n}{10}
+ \DeclareKanjiSubstitution{\otf@JYn}{hmc}{m}{n}
+@@ -134,19 +274,16 @@
+ \DeclareRelationFont{\otf@JTn}{hgt}{bx}{}{OT1}{cmr}{bx}{}
+ \fi
+ \@ifpackageloaded{jisx0213}{\relax}{\def\mcdefault{hmc}\def\gtdefault{hgt}}
+- \@ifundefined{if@enablejfam}{%if disablejfam option is not available, do nothing.
+- }{%
+- \if@enablejfam
+- \if@compatibility\else
+- \DeclareSymbolFont{mincho}{\otf@JYn}{hmc}{m}{n}
+- \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+- \SetSymbolFont{mincho}{bold}{\otf@JYn}{hmc}{bx}{n}
+- \DeclareMathAlphabet{\mathgt}{\otf@JYn}{hgt}{m}{n}
+- \SetMathAlphabet{\mathgt}{bold}{\otf@JYn}{hgt}{bx}{n}
+- \jfam\symmincho
+- \fi
++ \if@jfam@used
++ \if@compatibility\else
++ \DeclareSymbolFont{mincho}{\otf@JYn}{hmc}{m}{n}
++ \DeclareSymbolFontAlphabet{\mathmc}{mincho}
++ \SetSymbolFont{mincho}{bold}{\otf@JYn}{hmc}{bx}{n}
++ \DeclareMathAlphabet{\mathgt}{\otf@JYn}{hgt}{m}{n}
++ \SetMathAlphabet{\mathgt}{bold}{\otf@JYn}{hgt}{bx}{n}
++ \jfam\symmincho
+ \fi
+- }
++ \fi
+ \fi
+ \if@kana
+ \DeclareKanjiFamily{\otf@JYn}{ruby}{}
+@@ -264,6 +401,8 @@
\DeclareFontShape{\otf@JTn}{rubymg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubymgothr-v}{}
\DeclareFontShape{\otf@JYn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminl\nlck@sfx@-h}{}
\DeclareFontShape{\otf@JTn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminl\nlck@sfx@-v}{}
@@ -658,7 +699,7 @@ diff -urN otfbeta-1.7b6/sty/otf.sty otfbeta/sty/otf.sty
\DeclareFontShape{\otf@JYn}{ruby}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminl-h}{}
\DeclareFontShape{\otf@JTn}{ruby}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminl-v}{}
\else
-@@ -272,8 +409,8 @@
+@@ -272,8 +411,8 @@
\DeclareFontShape{\otf@JYn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ nmlminl\nlck@sfx@-h}{}
\DeclareFontShape{\otf@JTn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ nmlminl\nlck@sfx@-v}{}
\fi
@@ -669,7 +710,7 @@ diff -urN otfbeta-1.7b6/sty/otf.sty otfbeta/sty/otf.sty
\DeclareFontShape{\otf@JYn}{hmc}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw3-h}{}
\DeclareFontShape{\otf@JYn}{hmc}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw6-h}{}
\DeclareFontShape{\otf@JYn}{hgt}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw3-h}{}
-@@ -290,34 +427,36 @@
+@@ -290,34 +429,36 @@
\DeclareKanjiFamily{\otf@JTn}{utfj}{}
\DeclareKanjiFamily{\otf@JYn}{cidj}{}
\DeclareKanjiFamily{\otf@JTn}{cidj}{}
@@ -691,8 +732,8 @@ diff -urN otfbeta-1.7b6/sty/otf.sty otfbeta/sty/otf.sty
- \Declare@FontShape{utfjg}{bx}{0123456789abcdef}{utfjgb\nlck@sfx@}
+ \Declare@FontShape{utfjg}{bx}{0123456789abcdefjklmnopqrstuvz}{utfjgb\nlck@sfx@}
\Declare@FontShape{cidjg}{bx}{012345}{cidjgb}
-+ \Declare@FontShape{utfjg}{eb}{0123456789abcdefjklmnopqrstuvz}{utfjgb\nlck@sfx@}
-+ \Declare@FontShape{cidjg}{eb}{012345}{cidjgb}
++ \Declare@FontShape{utfjg}{eb}{0123456789abcdefjklmnopqrstuvz}{utfjge\nlck@sfx@}
++ \Declare@FontShape{cidjg}{eb}{012345}{cidjge}
\DeclareKanjiFamily{\otf@JYn}{utfjmg}{}
\DeclareKanjiFamily{\otf@JTn}{utfjmg}{}
\DeclareKanjiFamily{\otf@JYn}{cidjmg}{}
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/CheckDVICode.pm b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/CheckDVICode.pm
new file mode 100644
index 00000000000..7215786d262
--- /dev/null
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/CheckDVICode.pm
@@ -0,0 +1,256 @@
+package CheckDVICode;
+
+use strict;
+use Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(is_dvicode is_ucs_open is_ucs_kigo is_ucs_hira
+ is_ucs_kata is_ucs_hankana is_ucs_jpn_range);
+
+=head1 NAME
+
+CheckDVICode.pm
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+our ($dvicode, $is_ucs);
+
+sub is_dvicode($){
+ my ($key)=@_;
+ my ($code)=($dvicode);
+
+ if (!$is_ucs) {
+ if ($key eq 'hira-a') { return ($code == 0x2421);}
+ if ($key eq 'hira-i') { return ($code == 0x2423);}
+ if ($key eq 'hira-u') { return ($code == 0x2425);}
+ if ($key eq 'hira-e') { return ($code == 0x2427);}
+ if ($key eq 'hira-o') { return ($code == 0x2429);}
+ if ($key eq 'hira-tsu') { return ($code == 0x2443);}
+ if ($key eq 'hira-ya') { return ($code == 0x2463);}
+ if ($key eq 'hira-yu') { return ($code == 0x2465);}
+ if ($key eq 'hira-yo') { return ($code == 0x2467);}
+ if ($key eq 'hira-wa') { return ($code == 0x246E);}
+ if ($key eq 'hira-Vu') { return 0; } # large JIS X 0213
+ if ($key eq 'hira-ka') { return 0; } # small JIS X 0213
+ if ($key eq 'hira-ke') { return 0; } # small JIS X 0213
+ if ($key eq 'kata-a') { return ($code == 0x2521);}
+ if ($key eq 'kata-i') { return ($code == 0x2523);}
+ if ($key eq 'kata-u') { return ($code == 0x2525);}
+ if ($key eq 'kata-e') { return ($code == 0x2527);}
+ if ($key eq 'kata-o') { return ($code == 0x2529);}
+ if ($key eq 'kata-tsu') { return ($code == 0x2543);}
+ if ($key eq 'kata-ya') { return ($code == 0x2563);}
+ if ($key eq 'kata-yu') { return ($code == 0x2565);}
+ if ($key eq 'kata-yo') { return ($code == 0x2567);}
+ if ($key eq 'kata-wa') { return ($code == 0x256E);}
+ if ($key eq 'kata-ka') { return ($code == 0x2575);}
+ if ($key eq 'kata-ke') { return ($code == 0x2576);}
+ if ($key eq 'kata-Va') { return 0; } # large JIS X 0213
+ if ($key eq 'kata-Vi') { return 0; } # : JIS X 0213
+ if ($key eq 'kata-Ve') { return 0; } # : JIS X 0213
+ if ($key eq 'kata-Vo') { return 0; } # large JIS X 0213
+ if ($key eq 'kata-ku') { return 0; } # small JIS X 0213
+ if ($key eq 'kata-mu') { return 0; } # small JIS X 0213
+ if ($key eq 'kata-ku..ro') { return 0; } # small JIS X 0213
+ if ($key eq 'comma') { return ($code == 0x2124);}
+ if ($key eq 'period') { return ($code == 0x2125);}
+ if ($key eq 'odoriji') { return
+ ((0x2133 <= $code && $code <= 0x2136) || $code == 0x213C);}
+ if ($key eq 'hira-odoriji') { return
+ ($code == 0x2135 || $code == 0x2136);}
+ if ($key eq 'kutouten') { return
+ ($code>=0x2122 && $code<=0x2128);}
+ if ($key eq 'burasage') { return
+ ($code>=0x2122 && $code<=0x2125);}
+ if ($key eq 'nakaten' ) { return ($code == 0x2126);}
+ if ($key eq 'colon' ) { return ($code == 0x2127);}
+ if ($key eq 'semicolon') { return ($code == 0x2128);}
+ if ($key eq 'quote') { return
+ ($code >= 0x2146 && $code <= 0x2149);}
+ if ($key eq 's-quote') { return
+ ($code == 0x2146 || $code == 0x2147);}
+ if ($key eq 'd-quote') { return
+ ($code == 0x2148 || $code == 0x2149);}
+ if ($key eq 'kakko') { return
+ (0x214A <= $code && $code <= 0x215B);}
+ if ($key eq 'open') { return ($code%2==0);}
+ if ($key eq 'close') { return ($code%2==1);}
+
+ die "illegal keyname ($key)\n";
+ } else { # ucs
+ if ($key eq 'hira-a') { return ($code == 0x3041);} # small
+ if ($key eq 'hira-i') { return ($code == 0x3043);} # :
+ if ($key eq 'hira-u') { return ($code == 0x3045);} # :
+ if ($key eq 'hira-e') { return ($code == 0x3047);} # :
+ if ($key eq 'hira-o') { return ($code == 0x3049);} # :
+ if ($key eq 'hira-tsu') { return ($code == 0x3063);} # :
+ if ($key eq 'hira-ya') { return ($code == 0x3083);} # :
+ if ($key eq 'hira-yu') { return ($code == 0x3085);} # :
+ if ($key eq 'hira-yo') { return ($code == 0x3087);} # :
+ if ($key eq 'hira-wa') { return ($code == 0x308E);} # small
+ if ($key eq 'hira-Vu') { return ($code == 0x3094);} # large JIS X 0213
+ if ($key eq 'hira-ka') { return ($code == 0x3095);} # small JIS X 0213
+ if ($key eq 'hira-ke') { return ($code == 0x3096);} # small JIS X 0213
+ if ($key eq 'kata-a') { return ($code == 0x30A1);} # small
+ if ($key eq 'kata-i') { return ($code == 0x30A3);} # :
+ if ($key eq 'kata-u') { return ($code == 0x30A5);} # :
+ if ($key eq 'kata-e') { return ($code == 0x30A7);} # :
+ if ($key eq 'kata-o') { return ($code == 0x30A9);} # :
+ if ($key eq 'kata-tsu') { return ($code == 0x30C3);} # :
+ if ($key eq 'kata-ya') { return ($code == 0x30E3);} # :
+ if ($key eq 'kata-yu') { return ($code == 0x30E5);} # :
+ if ($key eq 'kata-yo') { return ($code == 0x30E7);} # :
+ if ($key eq 'kata-wa') { return ($code == 0x30EE);} # :
+ if ($key eq 'kata-ka') { return ($code == 0x30F5);} # :
+ if ($key eq 'kata-ke') { return ($code == 0x30F6);} # small
+ if ($key eq 'kata-Va') { return ($code == 0x30F7);} # large JIS X 0213
+ if ($key eq 'kata-Vi') { return ($code == 0x30F8);} # : JIS X 0213
+ if ($key eq 'kata-Ve') { return ($code == 0x30F9);} # : JIS X 0213
+ if ($key eq 'kata-Vo') { return ($code == 0x30FA);} # large JIS X 0213
+ if ($key eq 'kata-ku') { return ($code == 0x31F0);} # small JIS X 0213
+ if ($key eq 'kata-mu') { return ($code == 0x31FA);} # small JIS X 0213
+ if ($key eq 'kata-ku..ro') { return
+ ($code >= 0x31F0 && $code <= 0x31FF);} # small JIS X 0213
+ if ($key eq 'comma') { return ($code == 0xFF0C);}
+ if ($key eq 'period') { return ($code == 0xFF0E);}
+ if ($key eq 'odoriji') { return
+ ($code == 0x30FD || $code == 0x30FE ||
+ $code == 0x309D || $code == 0x309E ||
+ $code == 0x30FC);}
+ if ($key eq 'hira-odoriji') { return
+ ($code == 0x309D || $code == 0x309E);}
+ if ($key eq 'kutouten') { return
+ ($code == 0x3001 || $code == 0x3002 ||
+ $code == 0xFF0C || $code == 0xFF0E ||
+ $code == 0x30FB ||
+ $code == 0xFF1A || $code == 0xFF1B);}
+ if ($key eq 'burasage') { return
+ ($code == 0x3001 || $code == 0x3002 ||
+ $code == 0xFF0C || $code == 0xFF0E);}
+ if ($key eq 'nakaten' ) { return ($code == 0x30FB);}
+ if ($key eq 'colon' ) { return ($code == 0xFF1A);}
+ if ($key eq 'semicolon') { return ($code == 0xFF1B);}
+ if ($key eq 'quote') { return
+ ($code == 0x2018 || $code == 0x2019 ||
+ $code == 0x201C || $code == 0x201D);}
+ if ($key eq 's-quote') { return
+ ($code == 0x2018 || $code == 0x2019);}
+ if ($key eq 'd-quote') { return
+ ($code == 0x201C || $code == 0x201D);}
+ if ($key eq 'kakko') { return
+ ((0x3008 <= $code && $code <= 0x3011) ||
+ $code == 0x3014 || $code == 0x3015 ||
+ $code == 0xFF08 || $code == 0xFF09 ||
+ $code == 0xFF3B || $code == 0xFF3D ||
+ $code == 0xFF5B || $code == 0xFF5D ||
+ $code == 0xFF5F || $code == 0xFF60 || # X0213 1-02-54,55
+ $code == 0x3018 || $code == 0x3019 || # X0213 1-02-56,57
+ $code == 0x3016 || $code == 0x3017 || # X0213 1-02-58,59
+ $code == 0x301D || $code == 0x301F # X0213 1-13-64,65
+ );}
+ if ($key eq 'open') { return &is_ucs_open; }
+ if ($key eq 'close') { return (!&is_ucs_open); }
+
+ die "illegal keyname ($key)\n";
+ }
+}
+
+sub is_ucs_open{
+ if ($dvicode == 0x301D) { return 1;}
+ if ($dvicode <= 0xFF09) { return ($dvicode%2==0);}
+ if ($dvicode == 0xFF3B || $dvicode == 0xFF5B) { return 1;}
+ if ($dvicode == 0xFF5F) { return 1;}
+ return 0;
+}
+
+sub is_ucs_kigo{
+ return 1 if ($dvicode>=0x2018 && $dvicode<=0x2019);
+ return 1 if ($dvicode>=0x201C && $dvicode<=0x201D);
+ return 1 if ($dvicode>=0x3001 && $dvicode<=0x301F);
+ return 1 if ($dvicode>=0x3090 && $dvicode<=0x3093);
+ return 1 if ($dvicode>=0x3097 && $dvicode<=0x309F);
+ return 1 if ($dvicode>=0x30FB && $dvicode<=0x30FE);
+ return 1 if ($dvicode>=0xFF08 && $dvicode<=0xFF60);
+
+ return 0;
+}
+
+sub is_ucs_hira{
+ return 1 if ($dvicode>=0x3041 && $dvicode<=0x308F);
+ return 1 if ($dvicode>=0x3094 && $dvicode<=0x3096); # Vu, small Ka, small Ke
+ return 0;
+}
+
+sub is_ucs_kata{
+ return 1 if ($dvicode>=0x30A1 && $dvicode<=0x30F6);
+ return 1 if ($dvicode>=0x30F7 && $dvicode<=0x30FA); # Va, Vi, Ve, Vo
+ return 1 if ($dvicode>=0x31F0 && $dvicode<=0x31FF); # small Ku, small Shi, ... , Small Re, Small Ro
+ return 0;
+}
+
+sub is_ucs_hankana{
+ return 1 if ($dvicode>=0xFF61 && $dvicode<=0xFF9F);
+ return 0;
+}
+
+sub is_ucs_jpn_range{
+ return 1 if ($dvicode<=0x04FF); # Cyrillic
+
+ return 0 if ($dvicode< 0x1E00);
+ return 1 if ($dvicode<=0x243F); # Control Pictures
+
+ return 0 if ($dvicode< 0x2460);
+ return 1 if ($dvicode<=0x27BF); # Dingbats
+
+ return 0 if ($dvicode< 0x2900);
+ return 1 if ($dvicode<=0x29FF); # Miscellaneous Mathematical Symbols-B
+
+ return 0 if ($dvicode< 0x2B00);
+ return 1 if ($dvicode<=0x2BFF); # Miscellaneous Symbols and Arrows
+
+ return 0 if ($dvicode< 0x2E80);
+ return 1 if ($dvicode<=0x2FDF); # Kangxi Radicals
+
+ return 0 if ($dvicode< 0x3000);
+ return 1 if ($dvicode<=0x30FF); # Katakana
+
+ return 0 if ($dvicode< 0x3190);
+ return 1 if ($dvicode<=0x319F); # Kanbun
+
+ return 0 if ($dvicode< 0x31F0);
+ return 1 if ($dvicode<=0x4DBF); # CJK Unified Ideographs Extension A
+
+ return 0 if ($dvicode< 0x4E00);
+ return 1 if ($dvicode<=0x9FFF); # CJK Unified Ideographs
+
+ return 0 if ($dvicode< 0xE000);
+ return 1 if ($dvicode<=0xFB4F); # Alphabetic Presentation Forms
+
+ return 0 if ($dvicode< 0xFE10);
+ return 1 if ($dvicode<=0xFE1F); # Vertical Forms
+
+ return 0 if ($dvicode< 0xFE30);
+ return 1 if ($dvicode<=0xFE4F); # CJK Compatibility Forms
+
+ return 0 if ($dvicode< 0xFF00);
+ return 1 if ($dvicode<=0xFFEF); # Halfwidth and Fullwidth Forms
+
+ return 0 if ($dvicode< 0x1F100);
+ return 1 if ($dvicode<=0x1F1FF); # Enclosed Alphanumeric Supplement
+ return 1 if ($dvicode<=0x1F2FF); # Enclosed Ideographic Supplement
+
+ return 0 if ($dvicode< 0x20000);
+ return 1 if ($dvicode<=0x2A6DF); # CJK Unified Ideographs Extension B
+ return 1 if ($dvicode<=0x2B73F); # CJK Unified Ideographs Extension C
+ return 1 if ($dvicode<=0x2B81F); # CJK Unified Ideographs Extension D
+
+ return 0 if ($dvicode< 0x2F800);
+ return 1 if ($dvicode<=0x2FA1F); # CJK Compatibility Ideographs Supplement
+
+ return 0;
+}
+
+1;
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/MakeSPList.pm b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/MakeSPList.pm
index 0fc803ad6e7..8dc9ce0e3a8 100644
--- a/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/MakeSPList.pm
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/MakeSPList.pm
@@ -2,6 +2,7 @@ package MakeSPList;
use strict;
use Exporter;
+use File::Basename qw/dirname/;
our @ISA = qw(Exporter);
our @EXPORT = qw(make_sp_char_list);
@@ -24,8 +25,10 @@ sub make_sp_char_list(@) {
my (@exist_head_mul, %exist_char_mul)=();
my ($lang, $first_hex);
+ my $moduledir=dirname(__FILE__);
+
foreach $lang (@lang) {
- open(LIST, "script/sp_list_$lang.txt") || die "$!";
+ open(LIST, "$moduledir/sp_list_$lang.txt") || die "$!";
my (@exist_head_each, %exist_char_each)=();
while (<LIST>) {
chomp;
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkpkana.pl b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkpkana.pl
new file mode 100755
index 00000000000..5e0deeb6af0
--- /dev/null
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkpkana.pl
@@ -0,0 +1,552 @@
+#!/usr/bin/perl -s
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+use Encode;
+use FindBin;
+use lib "$FindBin::Bin";
+use CheckDVICode;
+
+if ($sp==1) { # supplemental plane
+ use MakeSPList;
+ &make_sp_char_list('j');
+ %exist_char=%{$MakeSPList::r_exist_char->{'j'}};
+}
+
+$_=<DATA>;
+while(<DATA>) {
+ chomp($_);
+ my (@data)=split(' ', $_);
+ my ($char);
+ last if (@data<6);
+ $char = shift @data;
+ push @character, $char;
+ $cid {$char}=shift @data;
+ $min_w3 {$char}=shift @data;
+ $min_w6 {$char}=shift @data;
+ $goth_w3{$char}=shift @data;
+ $goth_w6{$char}=shift @data;
+ $maru_w4{$char}=shift @data;
+}
+
+@charwidth=({%min_w3}, {%min_w6}, {%goth_w3}, {%goth_w6}, {%maru_w4});
+@font_name=("phiraminw3-h", "phiraminw6-h", "phirakakuw3-h", "phirakakuw6-h", "phiramaruw4-h");
+@kanji_font_name=("hminr-h", "hminb-h", "hgothr-h", "hgothb-h", "hmgothr-h");
+@kana_font_name=("hiramin-w3-h", "hiramin-w6-h", "hirakaku-w3-h", "hirakaku-w6-h", "hiramaru-w4-h");
+$font_at=1.0;
+$half_width= ($font_at / 2);
+$quater_width= ($font_at / 4);
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+opendir(JPL, "pl") || mkdir("pl",0755) || die "cannot mkdir pl";
+opendir(JFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+closedir(OVP);
+closedir(VF);
+closedir(JPL);
+closedir(JFM);
+
+$ucs=1; # 1: upphiraXXX or 0: phiraXXX
+if ($ucs) {
+ $CheckDVICode::is_ucs=1;
+ foreach(@font_name, @kanji_font_name) {
+ $_="up$_";
+ }
+}
+
+#main
+for ($i=0; $i<=4; $i++){
+ open (JPL, ">pl/$font_name[$i].pl");
+ &tfm_head_h;
+ &chars_in_type_jis;
+ &chars_in_type_prop;
+ &print_type_jis;
+ &print_type_prop;
+ &glue_kern;
+ close(JPL);
+}
+for ($i=0; $i<=4; $i++){
+ @cpm_h=(0x29E, 0x29F, 0x2A0, 0x2A1);
+ open (OVP, ">ovp/$font_name[$i].ovp");
+ &fonthead;
+ &write_char;
+ close(OVP);
+}
+#
+#sub rtn
+#
+sub tfm_head_h {
+ print JPL "(FAMILY PROP KANA)\n";
+ print JPL "(FACE F MRR)\n";
+ print JPL "(CODINGSCHEME TEX KANJI TEXT)\n";
+ print JPL "(DESIGNSIZE R 10.0)\n";
+ print JPL "(CHECKSUM O 0)\n";
+ print JPL "(SEVENBITSAFEFLAG TRUE)\n";
+ print JPL "(FONTDIMEN\n";
+ print JPL " (SLANT R 0.0)\n";
+ print JPL " (SPACE R 0.0)\n";
+ printf JPL " (STRETCH R %f)\n", $font_at/10;
+ print JPL " (SHRINK R 0.0)\n";
+ printf JPL " (XHEIGHT R %f)\n", $font_at;
+ printf JPL " (QUAD R %f)\n", $font_at;
+ printf JPL " (EXTRASPACE R %f)\n", $font_at/4;
+ printf JPL " (EXTRASTRETCH R %f)\n", $font_at/5;
+ printf JPL " (EXTRASHRINK R %f)\n", $font_at/8;
+ print JPL " )\n";
+}
+sub char_foot_h {
+ printf JPL " (CHARHT R %f)\n", $font_at*0.88;
+ printf JPL " (CHARDP R %f)\n", $font_at*0.12;
+ print JPL " )\n";
+}
+sub glue_kern{
+ print JPL "(GLUEKERN\n";
+ print JPL " (LABEL O 5)\n";
+ print JPL " (KRN O 5 R 0.0)\n";
+ print JPL " (LABEL O 0)\n";
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (LABEL H %X)\n",($char+7);
+ }
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 1)\n";
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 2)\n";
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 6)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $half_width, $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 4)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width+$quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R 0.0)\n", $half_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R 0.0)\n",($char+7), $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 3)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 2 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width, $quater_width;
+ printf JPL " (GLUE O 4 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $quater_width, $quater_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " )\n";
+}
+sub chars_in_type_jis{
+ my ($type5) = $ucs ? "— ― … ‥" : "— … ‥";
+print JPL <<END_OF_DATA;
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ )
+(CHARSINTYPE O 2
+ 、 , ’ ” ) 〕 ] } 〉 》 」 』 】
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ $type5
+ )
+(CHARSINTYPE O 6
+ ? !
+ )
+END_OF_DATA
+}
+sub print_type_jis{
+ @type_width=($font_at, $half_width, $half_width, $half_width, $half_width, $font_at, $font_at);
+ for ($k=0; $k<=6; $k++){
+ printf JPL "(TYPE H %x\n", $k;
+ printf JPL " (CHARWD R %f)\n", $type_width[$k];
+ &char_foot_h;
+ }
+}
+sub fonthead {
+ print OVP "(VTITLE Prop Kana)\n";
+ print OVP "(OFMLEVEL D 0)\n";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+}
+sub write_char {
+ if (!$ucs) {
+ for ($ku=1; $ku<=94; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $dvicode=($ku+32)*256+($ten+32);
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_kana_char;}
+ elsif($ku==5){&print_kana_char;}else{&print_char;}
+ }
+ }
+ } else { # ucs
+ $max_ucs= $sp ? 0x2FA1F : 0xFFFF; # U+2FA1F: max of CJK Compatibility Ideographs Supplement
+ for ($ucscode=0; $ucscode<=$max_ucs; $ucscode++){
+ $CheckDVICode::dvicode=$dvicode=$ucscode;
+ next unless (&is_ucs_jpn_range);
+ if ($sp==1 && $ucscode>0xFFFF) {
+ next unless ($exist_char{sprintf("%X",$ucscode)});
+ }
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira){&print_kana_char;}
+ elsif(&is_ucs_kata){&print_kana_char;}
+ elsif(&is_ucs_hankana && $direction eq "y"){&print_hankana_char;}
+ else{&print_char;}
+ }
+ }
+}
+sub print_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kigo_char{
+ my ($width,$cid);
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ if (&is_dvicode('quote') || &is_dvicode('kakko')){#Kakko
+ $width=$half_width;
+ } elsif (&is_dvicode('kutouten')){#Kutouten
+ $width=$half_width;
+ } elsif (&is_dvicode('odoriji')){#odoriji
+ ($width,$cid)=&get_charwidth($i,$dvicode);
+ $width/=10;
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if (&is_dvicode('odoriji')){#odoriji
+ print OVP " (SELECTFONT D 2)\n";
+ } elsif ($ucs && &is_dvicode('quote')){#Quote
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ if (&is_dvicode('nakaten') || &is_dvicode('colon') || &is_dvicode('semicolon')){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if ((&is_dvicode('quote') || &is_dvicode('kakko')) && &is_dvicode('open')){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if (&is_dvicode('odoriji')){#odoriji
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ } elsif ($ucs && &is_dvicode('quote')){#Quote
+ $cpmcode= shift(@cpm_h);
+ printf OVP " (SETCHAR H %X)\n",$cpmcode;
+ } else {
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kana_char{
+ my ($width,$cid)=&get_charwidth($i,$dvicode);
+ if ($width==0) {
+ return &print_char;
+ }
+ $width/=10;
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub chars_in_type_prop{
+ %char_width_hash=();
+ for ($j=0; $j<@character; $j++){
+ my ($c0, $c1);
+ $c0=$c1=$character[$j];
+ if (!$ucs) {
+ if (!Encode::from_to($c1,'utf-8','euc-jp', Encode::FB_QUIET)
+ || $c0 eq "〃"
+ || $c0 eq "〆") { next; }
+ }
+ $char_width_hash{$c0}=$charwidth[$i]{$c0}/10;
+ }
+ $x = '-';
+ @uniq_char_width_array = grep( $_ ne $x && ($x = $_), sort values(%char_width_hash));
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ printf JPL "(CHARSINTYPE H %X\n",($j+7);
+ print JPL " ";
+ @char_in_this_type = ();
+ while (($name, $value) = each(%char_width_hash)) {
+ if ($value == $uniq_char_width_array[$j]){
+ push(@char_in_this_type, $name);
+ }
+ }
+ @char_in_this_type = sort @char_in_this_type;
+ foreach $char_in_this(@char_in_this_type){
+ print JPL "$char_in_this ";#character
+ }
+ print JPL "\n";
+ print JPL " )\n";
+ }
+}
+sub print_type_prop{
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ $char_width=$uniq_char_width_array[$j];
+ printf JPL "(TYPE H %X\n", ($j+7);
+ printf JPL " (CHARWD R %f)\n", $char_width;
+ &char_foot_h;
+ }
+}
+
+sub get_charwidth{
+ local ($i,$dvicode)=@_;
+ local ($char,$u,$l);
+
+ if (!$ucs) {
+ if ($dvicode>=0x2474 && $dvicode<=0x2476) {
+ return 0;
+ }
+ $u = ($dvicode >> 8) & 0xFF | 0x80;
+ $l = $dvicode & 0xFF | 0x80;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'euc-jp','utf-8');
+ } else {
+ $u = ($dvicode >> 8) & 0xFF;
+ $l = $dvicode & 0xFF;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'utf-16be','utf-8');
+ }
+ if (!exists($charwidth[$i]{$char})) {
+ return 0;
+ }
+ return ($charwidth[$i]{$char}, $cid{$char});
+}
+
+
+__DATA__
+character cid min_w3 min_w6 goth_w3 goth_w6 maru_w4
+ヽ 15449 7.11 7.54 7.19 7.49 7.45
+ヾ 15450 7.68 7.95 7.69 8 8.15
+ゝ 15451 7.17 7.43 7.23 7.53 7.63
+ゞ 15452 7.79 7.97 7.72 8.09 8.08
+ー 15455 9.9 10 10 10 10
+ぁ 15517 8.21 8.44 8.56 8.77 8.72
+あ 15518 8.83 9.17 9.18 9.41 9.32
+ぃ 15519 8.56 8.72 8.67 8.95 8.97
+い 15520 9.14 9.46 9.3 9.52 9.58
+ぅ 15521 7.3 7.65 8.08 8.27 8.32
+う 15522 7.68 8.04 8.51 8.74 8.78
+ぇ 15523 7.97 8.2 8.34 8.56 8.61
+え 15524 8.69 8.95 9.14 9.33 9.36
+ぉ 15525 8.59 8.9 8.77 9.02 8.97
+お 15526 9.15 9.52 9.37 9.62 9.54
+か 15527 9.53 9.81 9.49 9.72 9.58
+が 15528 9.69 9.93 9.68 9.82 9.79
+き 15529 8.34 8.64 8.87 9.09 9.15
+ぎ 15530 9.09 9.42 9.49 9.49 9.66
+く 15531 6.76 7.04 7.64 7.92 8.04
+ぐ 15532 8.31 8.52 8.34 8.5 8.72
+け 15533 9.07 9.35 9.16 9.37 9.39
+げ 15534 9.56 9.75 9.66 9.82 9.78
+こ 15535 8.05 8.3 8.37 8.65 8.88
+ご 15536 8.91 9.08 8.9 9 9.27
+さ 15537 8.26 8.61 8.71 9.02 9.03
+ざ 15538 9.19 9.53 8.97 9.3 9.34
+し 15539 8.07 8.51 8.58 8.84 8.91
+じ 15540 8.17 8.62 8.65 8.94 9
+す 15541 9.16 9.44 9.17 9.33 9.41
+ず 15542 9.52 9.63 9.53 9.66 9.72
+せ 15543 9.52 9.76 9.44 9.65 9.61
+ぜ 15544 9.79 9.92 9.73 9.86 9.87
+そ 15545 8.59 8.93 9.27 9.48 9.43
+ぞ 15546 9.25 9.49 9.4 9.64 9.69
+た 15547 8.94 9.25 9.22 9.45 9.37
+だ 15548 9.23 9.44 9.28 9.51 9.57
+ち 15549 8.5 8.77 8.83 9.05 9.11
+ぢ 15550 8.98 9.25 8.92 9.16 9.28
+っ 15551 8.81 8.97 8.66 8.84 8.83
+つ 15552 9.39 9.71 9.26 9.41 9.44
+づ 15553 9.65 9.8 9.54 9.68 9.71
+て 15554 8.91 9.11 8.93 9.12 9.25
+で 15555 9.3 9.5 9.26 9.42 9.5
+と 15556 7.62 7.89 8.3 8.62 8.66
+ど 15557 8.45 8.72 8.56 8.78 8.88
+な 15558 9.08 9.42 9.45 9.66 9.55
+に 15559 8.94 9.18 9.16 9.42 9.38
+ぬ 15560 9.41 9.67 9.51 9.72 9.62
+ね 15561 9.51 9.73 9.67 9.82 9.83
+の 15562 9.29 9.57 9.35 9.69 9.58
+は 15563 9.13 9.45 9.44 9.69 9.56
+ば 15564 9.69 9.79 9.73 9.85 9.8
+ぱ 15565 9.58 9.77 9.66 9.8 9.75
+ひ 15566 8.98 9.33 9.26 9.52 9.52
+び 15567 9.27 9.49 9.48 9.71 9.62
+ぴ 15568 9.33 9.53 9.39 9.63 9.63
+ふ 15569 9.19 9.44 9.4 9.62 9.52
+ぶ 15570 9.33 9.59 9.61 9.78 9.74
+ぷ 15571 9.36 9.59 9.51 9.73 9.74
+へ 15572 9.71 9.97 9.69 9.76 9.73
+べ 15573 9.54 9.84 9.64 9.76 9.72
+ぺ 15574 9.51 9.82 9.5 9.73 9.69
+ほ 15575 9.14 9.49 9.48 9.73 9.62
+ぼ 15576 9.73 9.9 9.79 9.88 9.93
+ぽ 15577 9.77 9.92 9.72 9.9 9.88
+ま 15578 8.32 8.62 8.98 9.24 9.28
+み 15579 9.07 9.38 9.38 9.62 9.57
+む 15580 9.22 9.57 9.33 9.52 9.48
+め 15581 9.03 9.36 9.27 9.54 9.48
+も 15582 8.08 8.34 8.82 9.1 9.15
+ゃ 15583 8.68 8.93 8.72 8.9 8.9
+や 15584 9.38 9.62 9.25 9.49 9.46
+ゅ 15585 8.74 8.95 8.78 8.98 9
+ゆ 15586 9.33 9.64 9.41 9.63 9.62
+ょ 15587 7.64 7.85 8.09 8.36 8.45
+よ 15588 8.1 8.41 8.63 8.95 9.04
+ら 15589 8.14 8.39 8.59 8.81 8.94
+り 15590 7.69 8.09 8.33 8.59 8.71
+る 15591 8.2 8.55 8.86 9.11 9.12
+れ 15592 9.76 9.96 9.62 9.82 9.81
+ろ 15593 8.38 8.63 8.7 8.94 9.09
+ゎ 15594 8.58 8.83 8.82 9.07 9.02
+わ 15595 9.24 9.58 9.46 9.71 9.66
+ゐ 15596 8.77 9.12 9.02 9.29 9.35
+ゑ 15597 9.14 9.32 9.34 9.53 9.5
+を 15598 8.78 9.14 9.05 9.33 9.45
+ん 15599 9.13 9.39 9.2 9.47 9.39
+ァ 15608 8.01 8.28 8.37 8.61 8.5
+ア 15609 8.69 9.01 9 9.24 9.17
+ィ 15610 7.6 7.78 8.26 8.44 8.33
+イ 15611 8.2 8.43 8.91 9.13 8.96
+ゥ 15612 7.89 8.24 8.4 8.61 8.72
+ウ 15613 8.4 8.67 8.81 9.06 9.18
+ェ 15614 8.44 8.63 8.63 8.83 8.73
+エ 15615 9.23 9.5 9.36 9.52 9.36
+ォ 15616 8.34 8.57 8.66 8.88 8.69
+オ 15617 8.94 9.26 9.18 9.39 9.32
+カ 15618 8.64 8.9 9.04 9.33 9.23
+ガ 15619 9.39 9.53 9.37 9.53 9.55
+キ 15620 8.76 9.19 9.27 9.45 9.34
+ギ 15621 9.05 9.4 9.31 9.54 9.55
+ク 15622 8.25 8.6 8.68 8.96 8.9
+グ 15623 9.06 9.37 9.55 9.57 9.67
+ケ 15624 8.84 9.05 9.28 9.43 9.41
+ゲ 15625 9.28 9.42 9.52 9.66 9.69
+コ 15626 8.49 8.83 8.88 9.15 9.16
+ゴ 15627 9.1 9.3 9.4 9.59 9.55
+サ 15628 9.16 9.44 9.26 9.42 9.46
+ザ 15629 9.46 9.68 9.62 9.72 9.8
+シ 15630 9.02 9.22 8.94 9.22 9.32
+ジ 15631 8.99 9.22 9.42 9.5 9.74
+ス 15632 8.68 8.96 9.06 9.32 9.25
+ズ 15633 9.24 9.48 9.5 9.73 9.67
+セ 15634 9.02 9.4 9.17 9.36 9.33
+ゼ 15635 9.44 9.71 9.54 9.63 9.63
+ソ 15636 8.23 8.49 8.47 8.76 8.8
+ゾ 15637 9.13 9.3 9.04 9.19 9.44
+タ 15638 8.41 8.78 8.75 9 8.95
+ダ 15639 9.32 9.56 9.67 9.65 9.73
+チ 15640 8.91 9.27 9.25 9.48 9.36
+ヂ 15641 9.36 9.64 9.55 9.63 9.61
+ッ 15642 7.86 8.12 8.15 8.4 8.48
+ツ 15643 8.44 8.73 8.86 9.13 9.04
+ヅ 15644 9.24 9.43 9.41 9.53 9.57
+テ 15645 8.85 9.2 9.22 9.38 9.33
+デ 15646 9.37 9.58 9.64 9.67 9.74
+ト 15647 7.25 7.6 8.02 8.3 8.57
+ド 15648 7.95 8.16 8.26 8.48 8.7
+ナ 15649 8.84 9.22 9.13 9.32 9.26
+ニ 15650 9.21 9.52 9.23 9.42 9.22
+ヌ 15651 8.11 8.42 8.46 8.7 8.79
+ネ 15652 9 9.27 9.23 9.46 9.4
+ノ 15653 7.81 8.17 8.4 8.7 8.66
+ハ 15654 9.46 9.77 9.45 9.66 9.41
+バ 15655 9.58 9.76 9.63 9.78 9.56
+パ 15656 9.45 9.71 9.53 9.75 9.55
+ヒ 15657 8.14 8.42 8.6 8.88 8.84
+ビ 15658 8.76 9 9.23 9.41 9.46
+ピ 15659 8.66 8.9 9.15 9.33 9.4
+フ 15660 8.12 8.46 8.57 8.81 8.91
+ブ 15661 9.05 9.3 9.27 9.42 9.73
+プ 15662 9.05 9.27 9.11 9.31 9.73
+ヘ 15663 9.68 9.95 9.62 9.77 9.66
+ベ 15664 9.44 9.77 9.56 9.73 9.62
+ペ 15665 9.42 9.77 9.56 9.71 9.59
+ホ 15666 8.85 9.19 9.46 9.67 9.52
+ボ 15667 9.14 9.39 9.51 9.71 9.69
+ポ 15668 8.81 9.24 9.5 9.72 9.71
+マ 15669 8.86 9.17 8.99 9.19 9.17
+ミ 15670 7.57 7.9 8.39 8.64 8.87
+ム 15671 8.56 8.87 9.2 9.4 9.39
+メ 15672 8.2 8.55 8.64 8.92 8.81
+モ 15673 9.09 9.41 9.42 9.61 9.49
+ャ 15674 8.39 8.69 8.49 8.73 8.73
+ヤ 15675 8.95 9.24 9.16 9.39 9.31
+ュ 15676 8.38 8.61 8.43 8.65 8.61
+ユ 15677 9.18 9.57 9.22 9.37 9.35
+ョ 15678 7.94 8.23 8.44 8.72 8.74
+ヨ 15679 8.37 8.74 8.91 9.19 9.22
+ラ 15680 8.08 8.41 8.71 8.97 8.95
+リ 15681 7.6 7.91 8.16 8.43 8.63
+ル 15682 9.27 9.69 9.46 9.64 9.49
+レ 15683 8.46 8.8 8.61 8.9 9.01
+ロ 15684 8.51 8.95 9.26 9.51 9.54
+ヮ 15685 7.77 8.09 8.32 8.51 8.71
+ワ 15686 8.34 8.67 8.71 8.97 9.02
+ヰ 15687 9.19 9.5 9.47 9.64 9.57
+ヱ 15688 9.19 9.51 9.32 9.52 9.35
+ヲ 15689 8.01 8.39 8.49 8.76 8.93
+ン 15690 8.71 9.03 8.85 9.12 9.04
+ヴ 15691 9.06 9.34 9.33 9.51 9.66
+ヵ 15692 8.11 8.33 8.51 8.8 8.74
+ヶ 15693 8.18 8.39 8.63 8.74 8.73
+end
+〃 15453 7.69 8.15 8.29 8.62 8.36
+〆 15454 8.69 9.03 9.09 9.33 9.15
+ヿ 15462 8.09 8.42 8.6 8.83 8.87
+ゟ 15463 8.03 8.27 8.82 9.19 8.93
+ゔ 15600 8.73 9.06 9.27 9.47 9.44
+ゕ 15601 8.75 9.02 8.82 9.06 8.95
+ゖ 15602 8.36 8.64 8.55 8.78 8.73
+ㇰ 15702 7.68 8.03 8.02 8.34 8.43
+ㇱ 15703 8.39 8.58 8.43 8.67 8.66
+ㇲ 15704 8 8.19 8.3 8.59 8.55
+ㇳ 15705 7.02 7.29 7.66 7.9 8.16
+ㇴ 15706 7.65 7.89 8.04 8.35 8.38
+ㇵ 15707 8.6 8.79 8.61 8.84 8.63
+ㇶ 15708 7.83 8.02 8.15 8.43 8.41
+ㇷ 15709 7.61 7.94 8.09 8.3 8.39
+ㇸ 15710 8.81 9.1 8.78 8.94 8.83
+ㇹ 15711 8.27 8.53 8.86 9.09 8.97
+ㇺ 15713 7.92 8.13 8.39 8.61 8.62
+ㇻ 15714 7.8 8.09 8.32 8.54 8.55
+ㇼ 15715 7.39 7.66 7.9 8.13 8.31
+ㇽ 15716 8.59 8.79 8.72 8.9 8.81
+ㇾ 15717 8.06 8.32 8.18 8.41 8.55
+ㇿ 15718 8.13 8.44 8.67 8.93 8.98
+ヷ 15719 9.2 9.51 9.64 9.6 9.81
+ヸ 15720 9.41 9.75 9.6 9.7 9.75
+ヹ 15721 9.47 9.7 9.65 9.7 9.8
+ヺ 15722 8.91 9.32 9.34 9.39 9.73
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkvpkana.pl b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkvpkana.pl
new file mode 100755
index 00000000000..a46f4fbf04b
--- /dev/null
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkvpkana.pl
@@ -0,0 +1,554 @@
+#!/usr/bin/perl -s
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+use Encode;
+use FindBin;
+use lib "$FindBin::Bin";
+use CheckDVICode;
+
+if ($sp==1) { # supplemental plane
+ use MakeSPList;
+ &make_sp_char_list('j');
+ %exist_char=%{$MakeSPList::r_exist_char->{'j'}};
+}
+
+$_=<DATA>;
+while(<DATA>) {
+ chomp($_);
+ my (@data)=split(' ', $_);
+ my ($char);
+ last if (@data<6);
+ $char = shift @data;
+ push @character, $char;
+ $cid {$char}=shift @data;
+ $min_w3 {$char}=shift @data;
+ $min_w6 {$char}=shift @data;
+ $goth_w3{$char}=shift @data;
+ $goth_w6{$char}=shift @data;
+ $maru_w4{$char}=shift @data;
+}
+
+@charwidth=({%min_w3}, {%min_w6}, {%goth_w3}, {%goth_w6}, {%maru_w4});
+@font_name=("phiraminw3-v", "phiraminw6-v", "phirakakuw3-v", "phirakakuw6-v", "phiramaruw4-v");
+@kanji_font_name=("hminr-v", "hminb-v", "hgothr-v", "hgothb-v", "hmgothr-v");
+@kana_font_name=("hiramin-w3-v", "hiramin-w6-v", "hirakaku-w3-v", "hirakaku-w6-v", "hiramaru-w4-v");
+$font_at=1.0;
+$half_width= ($font_at / 2);
+$quater_width= ($font_at / 4);
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+opendir(JPL, "pl") || mkdir("pl",0755) || die "cannot mkdir pl";
+opendir(JFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+closedir(OVP);
+closedir(VF);
+closedir(JPL);
+closedir(JFM);
+
+$ucs=1; # 1: upphiraXXX or 0: phiraXXX
+if ($ucs) {
+ $CheckDVICode::is_ucs=1;
+ foreach(@font_name, @kanji_font_name) {
+ $_="up$_";
+ }
+}
+
+#main
+for ($i=0; $i<=4; $i++){
+ open (JPL, ">pl/$font_name[$i].pl");
+ &tfm_head_v;
+ &chars_in_type_jis;
+ &chars_in_type_prop;
+ &print_type_jis;
+ &print_type_prop;
+ &glue_kern;
+ close(JPL);
+}
+for ($i=0; $i<=4; $i++){
+ @cpm_v= $ucs ? (0x2F8D, 0x2F8E, 0x1F14, 0x1F15, 0x1ECF, 0x1ED0)
+ : (0x1ECF, 0x1ED0, 0x2F8D, 0x2F8E, 0x1F14, 0x1F15);
+ open (OVP, ">ovp/$font_name[$i].ovp");
+ &fonthead;
+ &write_char;
+ close(OVP);
+}
+#
+#sub rtn
+#
+sub tfm_head_v {
+ print JPL "(DIRECTION TATE)\n";
+ print JPL "(FAMILY PROP KANA)\n";
+ print JPL "(FACE F MRR)\n";
+ print JPL "(CODINGSCHEME TEX KANJI TEXT)\n";
+ print JPL "(DESIGNSIZE R 10.0)\n";
+ print JPL "(CHECKSUM O 0)\n";
+ print JPL "(SEVENBITSAFEFLAG TRUE)\n";
+ print JPL "(FONTDIMEN\n";
+ print JPL " (SLANT R 0.0)\n";
+ print JPL " (SPACE R 0.0)\n";
+ printf JPL " (STRETCH R %f)\n", $font_at/10;
+ print JPL " (SHRINK R 0.0)\n";
+ printf JPL " (XHEIGHT R %f)\n", $font_at;
+ printf JPL " (QUAD R %f)\n", $font_at;
+ printf JPL " (EXTRASPACE R %f)\n", $font_at/4;
+ printf JPL " (EXTRASTRETCH R %f)\n", $font_at/5;
+ printf JPL " (EXTRASHRINK R %f)\n", $font_at/8;
+ print JPL " )\n";
+}
+sub char_foot_h {
+ printf JPL " (CHARHT R %f)\n", $font_at*0.88;
+ printf JPL " (CHARDP R %f)\n", $font_at*0.12;
+ print JPL " )\n";
+}
+sub glue_kern{
+ print JPL "(GLUEKERN\n";
+ print JPL " (LABEL O 5)\n";
+ print JPL " (KRN O 5 R 0.0)\n";
+ print JPL " (LABEL O 0)\n";
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (LABEL H %X)\n",($char+7);
+ }
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 1)\n";
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 2)\n";
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 6)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $half_width, $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 4)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width+$quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R 0.0)\n", $half_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R 0.0)\n",($char+7), $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 3)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 2 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width, $quater_width;
+ printf JPL " (GLUE O 4 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $quater_width, $quater_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " )\n";
+}
+sub chars_in_type_jis{
+ my ($type5) = $ucs ? "— ― … ‥" : "— … ‥";
+print JPL <<END_OF_DATA;
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ )
+(CHARSINTYPE O 2
+ 、 , ’ ” ) 〕 ] } 〉 》 」 』 】
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ $type5
+ )
+(CHARSINTYPE O 6
+ ? !
+ )
+END_OF_DATA
+}
+sub print_type_jis{
+ @type_width=($font_at, $half_width, $half_width, $half_width, $half_width, $font_at, $font_at);
+ for ($k=0; $k<=6; $k++){
+ printf JPL "(TYPE H %x\n", $k;
+ printf JPL " (CHARWD R %f)\n", $type_width[$k];
+ &char_foot_h;
+ }
+}
+sub fonthead {
+ print OVP "(VTITLE Prop Kana)\n";
+ print OVP "(OFMLEVEL D 0)\n";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+}
+sub write_char {
+ if (!$ucs) {
+ for ($ku=1; $ku<=94; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $dvicode=($ku+32)*256+($ten+32);
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_kana_char;}
+ elsif($ku==5){&print_kana_char;}else{&print_char;}
+ }
+ }
+ } else { # ucs
+ $max_ucs= $sp ? 0x2FA1F : 0xFFFF; # U+2FA1F: max of CJK Compatibility Ideographs Supplement
+ for ($ucscode=0; $ucscode<=$max_ucs; $ucscode++){
+ $CheckDVICode::dvicode=$dvicode=$ucscode;
+ next unless (&is_ucs_jpn_range);
+ if ($sp==1 && $ucscode>0xFFFF) {
+ next unless ($exist_char{sprintf("%X",$ucscode)});
+ }
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira){&print_kana_char;}
+ elsif(&is_ucs_kata){&print_kana_char;}
+ elsif(&is_ucs_hankana && $direction eq "y"){&print_hankana_char;}
+ else{&print_char;}
+ }
+ }
+}
+sub print_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kigo_char{
+ my ($width,$cid);
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ if (&is_dvicode('quote') || &is_dvicode('kakko')){#Kakko
+ $width=$half_width;
+ } elsif (&is_dvicode('kutouten')){#Kutouten
+ $width=$half_width;
+ } elsif (&is_dvicode('odoriji')){#odoriji
+ ($width,$cid)=&get_charwidth($i,$dvicode);
+ $width/=10;
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if (&is_dvicode('odoriji')){#odoriji
+ print OVP " (SELECTFONT D 2)\n";
+ } elsif (&is_dvicode('comma') || &is_dvicode('period') || &is_dvicode('quote')){#Comma, Period, Minute
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ if (&is_dvicode('nakaten') || &is_dvicode('colon') || &is_dvicode('semicolon')){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if ((&is_dvicode('quote') || &is_dvicode('kakko')) && &is_dvicode('open')){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if (&is_dvicode('odoriji')){#odoriji
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ } elsif (&is_dvicode('comma') || &is_dvicode('period') || &is_dvicode('quote')){#Comma, Period, Minute
+ $cpmcode= shift(@cpm_v);
+ printf OVP " (SETCHAR H %X)\n",$cpmcode;
+ } else {
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kana_char{
+ my ($width,$cid)=&get_charwidth($i,$dvicode);
+ if ($width==0) {
+ return &print_char;
+ }
+ $width/=10;
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub chars_in_type_prop{
+ %char_width_hash=();
+ for ($j=0; $j<@character; $j++){
+ my ($c0, $c1);
+ $c0=$c1=$character[$j];
+ if (!$ucs) {
+ if (!Encode::from_to($c1,'utf-8','euc-jp', Encode::FB_QUIET)
+ || $c0 eq "〃"
+ || $c0 eq "〆") { next; }
+ }
+ $char_width_hash{$c0}=$charwidth[$i]{$c0}/10;
+ }
+ $x = '-';
+ @uniq_char_width_array = grep( $_ ne $x && ($x = $_), sort values(%char_width_hash));
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ printf JPL "(CHARSINTYPE H %X\n",($j+7);
+ print JPL " ";
+ @char_in_this_type = ();
+ while (($name, $value) = each(%char_width_hash)) {
+ if ($value == $uniq_char_width_array[$j]){
+ push(@char_in_this_type, $name);
+ }
+ }
+ @char_in_this_type = sort @char_in_this_type;
+ foreach $char_in_this(@char_in_this_type){
+ print JPL "$char_in_this ";#character
+ }
+ print JPL "\n";
+ print JPL " )\n";
+ }
+}
+sub print_type_prop{
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ $char_width=$uniq_char_width_array[$j];
+ printf JPL "(TYPE H %X\n", ($j+7);
+ printf JPL " (CHARWD R %f)\n", $char_width;
+ &char_foot_h;
+ }
+}
+
+sub get_charwidth{
+ my ($i,$dvicode)=@_;
+ my ($char,$eucchar,$testchar,$u,$l);
+
+ if (!$ucs) {
+ if ($dvicode>=0x2474 && $dvicode<=0x2476) {
+ return 0;
+ }
+ $u = ($dvicode >> 8) & 0xFF | 0x80;
+ $l = $dvicode & 0xFF | 0x80;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'euc-jp','utf-8');
+ } else {
+ $u = ($dvicode >> 8) & 0xFF;
+ $l = $dvicode & 0xFF;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'utf-16be','utf-8');
+ }
+ if (!exists($charwidth[$i]{$char})) {
+ return 0;
+ }
+ return ($charwidth[$i]{$char}, $cid{$char});
+}
+
+
+__DATA__
+character cid min_w3 min_w6 goth_w3 goth_w6 maru_w4
+ヽ 15976 7.17 7.46 7.92 8.27 8.13
+ヾ 15977 8.34 8.44 8.46 8.62 8.5
+ゝ 15978 7.77 7.98 8.44 8.69 8.62
+ゞ 15979 8.32 8.54 8.8 8.92 8.98
+ー 15982 9.96 9.98 9.99 9.99 9.98
+ぁ 15985 9.03 9.15 9.01 9.18 9.17
+あ 15986 9.6 9.79 9.6 9.77 9.75
+ぃ 15987 7.75 7.92 8.09 8.4 8.59
+い 15988 8.19 8.47 8.46 8.8 8.83
+ぅ 15989 9.42 9.47 8.97 9.2 9.19
+う 15990 9.98 9.99 9.58 9.8 9.79
+ぇ 15991 8.89 9.12 8.84 9.15 9.05
+え 15992 9.47 9.74 9.42 9.7 9.59
+ぉ 15993 8.65 8.89 8.86 9.06 9.08
+お 15994 9.14 9.48 9.39 9.67 9.61
+か 15995 8.99 9.24 9.26 9.47 9.45
+が 15996 9.1 9.39 9.41 9.67 9.6
+き 15997 9.71 9.93 9.73 9.88 9.82
+ぎ 15998 9.71 9.86 9.8 9.96 9.92
+く 15999 9.99 9.99 9.56 9.77 9.47
+ぐ 16000 9.79 9.98 9.49 9.7 9.5
+け 16001 9.52 9.64 9.54 9.79 9.66
+げ 16002 9.76 9.82 9.56 9.76 9.62
+こ 16003 9.26 9.47 9.38 9.67 9.57
+ご 16004 9.44 9.6 9.23 9.6 9.49
+さ 16005 9.67 9.84 9.67 9.85 9.77
+ざ 16006 9.71 9.85 9.86 9.97 9.95
+し 16007 9.42 9.53 9.38 9.53 9.53
+じ 16008 9.63 9.74 9.71 9.86 9.72
+す 16009 9.39 9.61 9.3 9.55 9.43
+ず 16010 9.61 9.83 9.6 9.84 9.68
+せ 16011 9.18 9.45 9.44 9.7 9.54
+ぜ 16012 9.47 9.66 9.53 9.79 9.63
+そ 16013 9.45 9.66 9.4 9.65 9.57
+ぞ 16014 9.56 9.74 9.43 9.65 9.59
+た 16015 9.23 9.47 9.39 9.59 9.59
+だ 16016 9.48 9.68 9.59 9.81 9.72
+ち 16017 9.61 9.78 9.63 9.81 9.68
+ぢ 16018 9.67 9.8 9.85 9.97 9.92
+っ 16019 7.96 8.04 8.23 8.47 8.6
+つ 16020 8.24 8.42 8.62 8.87 8.98
+づ 16021 8.99 9.15 9.26 9.44 9.42
+て 16022 8.69 8.92 8.89 9.19 9.16
+で 16023 8.76 8.95 8.92 9.19 9.23
+と 16024 9.75 9.89 9.59 9.82 9.65
+ど 16025 9.69 9.89 9.81 9.96 9.93
+な 16026 9.48 9.66 9.48 9.65 9.62
+に 16027 8.95 9.17 9.19 9.42 9.4
+ぬ 16028 8.98 9.23 9.34 9.57 9.49
+ね 16029 9.25 9.54 9.52 9.68 9.62
+の 16030 8.82 8.99 9.02 9.28 9.24
+は 16031 9.28 9.55 9.5 9.75 9.66
+ば 16032 9.57 9.76 9.67 9.82 9.76
+ぱ 16033 9.7 9.82 9.84 9.97 9.92
+ひ 16034 9.19 9.36 9.18 9.4 9.41
+び 16035 9.46 9.64 9.4 9.61 9.61
+ぴ 16036 9.72 9.8 9.71 9.79 9.81
+ふ 16037 9.05 9.39 9.25 9.5 9.46
+ぶ 16038 9.16 9.47 9.29 9.54 9.49
+ぷ 16039 9.15 9.43 9.33 9.53 9.52
+へ 16040 7.21 7.43 7.84 8.2 8.32
+べ 16041 8.13 8.33 8.21 8.52 8.58
+ぺ 16042 8.43 8.58 8.56 8.84 8.78
+ほ 16043 9.23 9.46 9.45 9.71 9.67
+ぼ 16044 9.61 9.74 9.65 9.89 9.79
+ぽ 16045 9.65 9.81 9.7 9.9 9.87
+ま 16046 9.76 9.88 9.57 9.74 9.64
+み 16047 9.17 9.36 9.24 9.48 9.38
+む 16048 9.37 9.58 9.49 9.71 9.64
+め 16049 9.18 9.41 9.38 9.58 9.53
+も 16050 9.76 9.91 9.48 9.68 9.6
+ゃ 16051 8.69 8.83 8.89 9.1 8.99
+や 16052 9.38 9.54 9.52 9.7 9.62
+ゅ 16053 8.73 8.82 8.88 9.08 9.03
+ゆ 16054 9.22 9.4 9.4 9.63 9.58
+ょ 16055 8.95 9.17 9.03 9.28 9.09
+よ 16056 9.63 9.83 9.63 9.82 9.61
+ら 16057 9.66 9.82 9.5 9.74 9.79
+り 16058 9.82 9.85 9.75 9.88 9.79
+る 16059 9.59 9.8 9.55 9.77 9.7
+れ 16060 9.21 9.43 9.4 9.59 9.55
+ろ 16061 9.66 9.79 9.55 9.79 9.73
+ゎ 16062 8.58 8.73 8.71 8.93 8.86
+わ 16063 9.28 9.45 9.38 9.54 9.54
+ゐ 16064 9.37 9.59 9.46 9.68 9.57
+ゑ 16065 9.65 9.82 9.64 9.86 9.8
+を 16066 9.64 9.79 9.62 9.83 9.71
+ん 16067 9.2 9.4 9.32 9.54 9.45
+ァ 16076 8.45 8.5 8.55 8.76 8.92
+ア 16077 8.96 9.2 9.19 9.44 9.41
+ィ 16078 8.81 8.92 8.63 8.88 8.75
+イ 16079 9.29 9.46 9.28 9.48 9.35
+ゥ 16080 8.89 8.93 8.82 9.03 8.94
+ウ 16081 9.38 9.56 9.4 9.59 9.46
+ェ 16082 7.81 8.04 8.33 8.65 8.84
+エ 16083 8.12 8.39 8.77 9.06 9.3
+ォ 16084 8.76 8.84 8.76 8.99 8.9
+オ 16085 9.21 9.41 9.29 9.51 9.38
+カ 16086 9.26 9.48 9.46 9.68 9.52
+ガ 16087 9.27 9.5 9.66 9.79 9.71
+キ 16088 9.25 9.41 9.4 9.6 9.39
+ギ 16089 9.56 9.65 9.78 9.87 9.78
+ク 16090 9.25 9.37 9.33 9.53 9.44
+グ 16091 9.49 9.57 9.39 9.69 9.66
+ケ 16092 9.19 9.32 9.14 9.35 9.37
+ゲ 16093 9.6 9.65 9.47 9.59 9.64
+コ 16094 8.32 8.59 9.13 9.4 9.4
+ゴ 16095 8.83 9.13 9.52 9.78 9.7
+サ 16096 9.17 9.37 9.34 9.53 9.49
+ザ 16097 9.53 9.65 9.39 9.58 9.62
+シ 16098 8.39 8.61 8.88 9.11 9.53
+ジ 16099 9.1 9.21 9.31 9.39 9.84
+ス 16100 8.61 8.85 9 9.3 9.22
+ズ 16101 9.24 9.44 9.44 9.68 9.58
+セ 16102 8.67 8.93 9.17 9.43 9.4
+ゼ 16103 9.26 9.4 9.63 9.78 9.78
+ソ 16104 8.89 9.06 8.98 9.21 9.12
+ゾ 16105 9.52 9.64 9.56 9.63 9.61
+タ 16106 9.31 9.42 9.41 9.6 9.56
+ダ 16107 9.56 9.61 9.53 9.74 9.76
+チ 16108 9.2 9.4 9.14 9.39 9.31
+ヂ 16109 9.35 9.51 9.18 9.4 9.34
+ッ 16110 8.33 8.43 8.55 8.77 8.77
+ツ 16111 8.8 8.97 9.01 9.26 9.2
+ヅ 16112 9.48 9.61 9.5 9.64 9.7
+テ 16113 9.13 9.34 9.28 9.5 9.45
+デ 16114 9.38 9.62 9.27 9.51 9.64
+ト 16115 9.58 9.74 9.35 9.51 9.33
+ド 16116 9.63 9.75 9.45 9.68 9.62
+ナ 16117 9.11 9.35 9.08 9.37 9.31
+ニ 16118 8.01 8.31 8.62 8.93 9.17
+ヌ 16119 9.06 9.33 9.17 9.43 9.44
+ネ 16120 9.45 9.64 9.53 9.73 9.49
+ノ 16121 8.8 9.13 8.77 9.02 8.92
+ハ 16122 7.42 7.65 8.71 9 8.97
+バ 16123 8.16 8.44 8.82 9.07 9.34
+パ 16124 8.55 8.74 9.09 9.23 9.44
+ヒ 16125 8.79 9.06 9.33 9.51 9.46
+ビ 16126 9.2 9.35 9.7 9.83 9.74
+ピ 16127 9.39 9.55 9.83 9.92 9.89
+フ 16128 8.91 9.06 9.01 9.29 9.28
+ブ 16129 9.47 9.63 9.58 9.74 9.61
+プ 16130 9.56 9.67 9.31 9.51 9.72
+ヘ 16131 7.09 7.38 7.79 8.15 8.32
+ベ 16132 8.05 8.32 8.3 8.5 8.59
+ペ 16133 8.35 8.58 8.47 8.85 8.86
+ホ 16134 9.07 9.32 9.47 9.71 9.5
+ボ 16135 9.39 9.58 9.74 9.9 9.8
+ポ 16136 9.64 9.73 9.83 9.98 9.92
+マ 16137 8.1 8.38 8.95 9.19 9.16
+ミ 16138 9.25 9.47 9.25 9.51 9.4
+ム 16139 8.79 9.1 9.19 9.42 9.33
+メ 16140 8.88 9.18 8.95 9.18 9.15
+モ 16141 8.74 9 9.25 9.46 9.47
+ャ 16142 8.52 8.68 8.79 8.94 8.88
+ヤ 16143 8.98 9.19 9.37 9.53 9.41
+ュ 16144 7.76 7.99 8.31 8.62 8.79
+ユ 16145 8.09 8.33 8.7 9.01 9.25
+ョ 16146 8.38 8.55 8.83 9.11 9.19
+ヨ 16147 8.8 9.05 9.38 9.62 9.73
+ラ 16148 9.29 9.47 9.35 9.64 9.61
+リ 16149 9.75 9.89 9.64 9.84 9.69
+ル 16150 8.5 8.83 9.33 9.58 9.42
+レ 16151 8.35 8.71 9 9.18 9.17
+ロ 16152 8.42 8.71 9.23 9.47 9.59
+ヮ 16153 8.56 8.65 8.69 8.91 8.97
+ワ 16154 9.03 9.15 9.21 9.43 9.47
+ヰ 16155 9.35 9.58 9.31 9.59 9.42
+ヱ 16156 8.34 8.65 8.95 9.25 9.41
+ヲ 16157 9.17 9.39 9.27 9.49 9.49
+ン 16158 8.11 8.3 8.51 8.78 8.79
+ヴ 16159 9.47 9.62 9.49 9.69 9.63
+ヵ 16160 8.73 8.9 8.93 9.11 9
+ヶ 16161 8.53 8.64 8.41 8.66 8.69
+end
+〃 15980 8.16 8.40 8.74 8.90 8.88
+〆 15981 8.94 9.09 8.99 9.14 9.04
+ヿ 15983 9.36 9.59 9.59 9.75 9.74
+ゟ 15984 9.81 9.96 9.75 9.82 9.79
+ゔ 16068 9.63 9.72 9.28 9.50 9.50
+ゕ 16069 8.41 8.60 8.61 8.80 8.85
+ゖ 16070 8.90 9.03 8.92 9.13 9.11
+ㇰ 16170 8.65 8.67 8.78 8.94 8.92
+ㇱ 16171 7.86 8.08 8.25 8.46 8.51
+ㇲ 16172 8.22 8.40 8.57 8.80 8.77
+ㇳ 16173 9.01 9.06 8.81 9.03 8.74
+ㇴ 16174 8.51 8.65 8.64 8.94 8.93
+ㇵ 16175 7.14 7.31 8.29 8.56 8.58
+ㇶ 16176 8.29 8.52 8.76 9.00 8.90
+ㇷ 16177 8.42 8.50 8.52 8.75 8.81
+ㇸ 16178 6.79 7.01 7.32 7.65 7.81
+ㇹ 16179 8.57 8.77 8.83 9.04 8.96
+ㇺ 16181 8.34 8.62 8.66 8.90 8.81
+ㇻ 16182 8.80 8.86 8.84 9.09 9.09
+ㇼ 16183 9.13 9.22 8.99 9.23 9.14
+ㇽ 16184 8.02 8.30 8.71 8.97 8.89
+ㇾ 16185 7.89 8.08 8.41 8.66 8.59
+ㇿ 16186 8.11 8.24 8.71 8.98 9.04
+ヷ 16187 9.42 9.66 9.44 9.78 9.75
+ヸ 16188 9.61 9.8 9.73 9.84 9.77
+ヹ 16189 8.94 9.28 9.56 9.80 9.88
+ヺ 16190 9.54 9.71 9.67 9.82 9.74
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf
index 452b781e666..941fdd1ec2c 100755
--- a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf
@@ -5,8 +5,8 @@
#
#OVP2OVF='omfonts -ovp2ovf'
-#OVP2OVF='wovp2ovf'
-#export OVP2OVF
+OVP2OVF='wovp2ovf'
+export OVP2OVF
if test ! -d tfm; then
mkdir tfm
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_brsg b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_brsg
index cb0f49a1b00..6bf76009f40 100755
--- a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_brsg
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_brsg
@@ -5,8 +5,8 @@
#
#OVP2OVF='omfonts -ovp2ovf'
-#OVP2OVF='wovp2ovf'
-#export OVP2OVF
+OVP2OVF='wovp2ovf'
+export OVP2OVF
if test ! -d tfm; then
mkdir tfm
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_jis04 b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_jis04
index 75d43601600..d1570913100 100755
--- a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_jis04
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_jis04
@@ -4,9 +4,9 @@
# This script is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
#
-#OVP2OVF="../../../omfonts -ovp2ovf"
-#OVP2OVF='wovp2ovf'
-#export OVP2OVF
+#OVP2OVF='omfonts -ovp2ovf'
+OVP2OVF='wovp2ovf'
+export OVP2OVF
if test ! -d tfm; then
mkdir tfm
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_prop b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_prop
new file mode 100755
index 00000000000..e688603ed55
--- /dev/null
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_prop
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+#
+# This script is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+#
+
+#OVP2OVF='omfonts -ovp2ovf'
+OVP2OVF='wovp2ovf'
+#OVP2OVF=ovp2ovf
+
+if test ! -d tfm; then
+mkdir tfm
+fi
+if test ! -d vf; then
+mkdir vf
+fi
+if test ! -d ovp; then
+mkdir ovp
+fi
+
+echo "making proportional kana tfm/vf ..."
+perl -s script/umkpkana.pl -sp=1
+perl -s script/umkvpkana.pl -sp=1
+
+for face in minw3 minw6 kakuw3 kakuw6 maruw4
+do
+uppltotf -kanji=uptex pl/upphira${face}-h.pl tfm/upphira${face}-h.tfm
+uppltotf -kanji=uptex pl/upphira${face}-v.pl tfm/upphira${face}-v.tfm
+done
+
+for face in minw3 minw6 kakuw3 kakuw6 maruw4
+do
+$OVP2OVF ovp/upphira${face}-h.ovp vf/upphira${face}-h.vf vf/upphira${face}-h.ofm
+$OVP2OVF ovp/upphira${face}-v.ovp vf/upphira${face}-v.vf vf/upphira${face}-v.ofm
+done
+
diff --git a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umkjvf b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umkjvf
index a9ed37a2c81..39973e09990 100755
--- a/Master/texmf-dist/source/fonts/japanese-otf-uptex/umkjvf
+++ b/Master/texmf-dist/source/fonts/japanese-otf-uptex/umkjvf
@@ -2,13 +2,16 @@
###################
### main part ###
###################
+use FindBin;
+use lib "$FindBin::Bin/script";
+use CheckDVICode;
#initialize
&initialize_constant;
#processing arguments
&proc_arg;
if ($sp==1) { # supplemental plane
- use script::MakeSPList;
- &MakeSPList::make_sp_char_list('j');
+ use MakeSPList;
+ &make_sp_char_list('j');
%exist_char=%{$MakeSPList::r_exist_char->{'j'}};
}
#make ovp
@@ -135,7 +138,7 @@ sub proc_arg {
if ($scale == 0){$scale = 1;}
if ($sjis != 0){$max_ku=120;}else{$max_ku=94;}
if ($cid_minute != 0){$minute_option = 1;}
- if ($ucs){&reorder_odoriji;}
+ if ($ucs){&reorder_odoriji; $CheckDVICode::is_ucs=$ucs;}
$tfm_name = shift(@ARGV);
$tfm_name =~ s/\.tfm//;
$kanji_font = shift(@ARGV);
@@ -323,7 +326,7 @@ sub write_char {
for ($ku=1; $ku<=$max_ku; $ku++){
for ($ten=1; $ten<=94; $ten++){
$jiscode=($ku+32)*256+($ten+32);
- $dvicode=$jiscode;
+ $CheckDVICode::dvicode=$dvicode=$jiscode;
if($sjis == 1){
&get_shift_jiscode;
$char_code=$shift_jiscode;
@@ -350,12 +353,12 @@ sub write_char {
} else { # ucs
$max_ucs= $sp ? 0x2FA1F : 0xFFFF; # U+2FA1F: max of CJK Compatibility Ideographs Supplement
for ($ucscode=0; $ucscode<=$max_ucs; $ucscode++){
+ $CheckDVICode::dvicode=$dvicode=$ucscode;
+ $char_code=$ucscode;
next unless (&is_ucs_jpn_range);
if ($sp==1 && $ucscode>0xFFFF) {
next unless ($exist_char{sprintf("%X",$ucscode)});
}
- $dvicode=$ucscode;
- $char_code=$ucscode;
if(&is_ucs_hankana && $direction eq "y"){
&print_hankana_char;
next;
@@ -440,7 +443,7 @@ sub make_tfm {
#### dfn of sub sub rtns ###
##############################
sub print_help {
- print "This is umkjvf version 0.12 (2013/6/02) by ttk\n";
+ print "This is umkjvf version 0.14 (2014/3/22) by ttk\n";
print "Based on mkjvf version 1.0b21 (2010/3/25) by psitau\n";
print "Usage: umkjvf [option] <TFMfile> <PSfontTFM> [<PSfontTFM>]\n";
print " -b <number> baseline shift\n";
@@ -938,240 +941,6 @@ sub scaled_shift{
}
}
-sub is_dvicode{
- local ($key)=@_;
- local ($code)=($dvicode);
-
- if (!$ucs) {
- if ($key eq 'hira-a') { return ($code == 0x2421);}
- if ($key eq 'hira-i') { return ($code == 0x2423);}
- if ($key eq 'hira-u') { return ($code == 0x2425);}
- if ($key eq 'hira-e') { return ($code == 0x2427);}
- if ($key eq 'hira-o') { return ($code == 0x2429);}
- if ($key eq 'hira-tsu') { return ($code == 0x2443);}
- if ($key eq 'hira-ya') { return ($code == 0x2463);}
- if ($key eq 'hira-yu') { return ($code == 0x2465);}
- if ($key eq 'hira-yo') { return ($code == 0x2467);}
- if ($key eq 'hira-wa') { return ($code == 0x246E);}
- if ($key eq 'hira-Vu') { return 0; } # large JIS X 0213
- if ($key eq 'hira-ka') { return 0; } # small JIS X 0213
- if ($key eq 'hira-ke') { return 0; } # small JIS X 0213
- if ($key eq 'kata-a') { return ($code == 0x2521);}
- if ($key eq 'kata-i') { return ($code == 0x2523);}
- if ($key eq 'kata-u') { return ($code == 0x2525);}
- if ($key eq 'kata-e') { return ($code == 0x2527);}
- if ($key eq 'kata-o') { return ($code == 0x2529);}
- if ($key eq 'kata-tsu') { return ($code == 0x2543);}
- if ($key eq 'kata-ya') { return ($code == 0x2563);}
- if ($key eq 'kata-yu') { return ($code == 0x2565);}
- if ($key eq 'kata-yo') { return ($code == 0x2567);}
- if ($key eq 'kata-wa') { return ($code == 0x256E);}
- if ($key eq 'kata-ka') { return ($code == 0x2575);}
- if ($key eq 'kata-ke') { return ($code == 0x2576);}
- if ($key eq 'kata-Va') { return 0; } # large JIS X 0213
- if ($key eq 'kata-Vi') { return 0; } # : JIS X 0213
- if ($key eq 'kata-Ve') { return 0; } # : JIS X 0213
- if ($key eq 'kata-Vo') { return 0; } # large JIS X 0213
- if ($key eq 'kata-ku') { return 0; } # small JIS X 0213
- if ($key eq 'kata-mu') { return 0; } # small JIS X 0213
- if ($key eq 'kata-ku..ro') { return 0; } # small JIS X 0213
- if ($key eq 'comma') { return ($code == 0x2124);}
- if ($key eq 'period') { return ($code == 0x2125);}
- if ($key eq 'odoriji') { return
- ((0x2133 <= $code && $code <= 0x2136) || $code == 0x213C);}
- if ($key eq 'hira-odoriji') { return
- ($code == 0x2135 || $code == 0x2136);}
- if ($key eq 'kutouten') { return
- ($code>=0x2122 && $code<=0x2128);}
- if ($key eq 'burasage') { return
- ($code>=0x2122 && $code<=0x2125);}
- if ($key eq 'nakaten' ) { return ($code == 0x2126);}
- if ($key eq 'colon' ) { return ($code == 0x2127);}
- if ($key eq 'semicolon') { return ($code == 0x2128);}
- if ($key eq 'quote') { return
- ($code >= 0x2146 && $code <= 0x2149);}
- if ($key eq 's-quote') { return
- ($code == 0x2146 || $code == 0x2147);}
- if ($key eq 'd-quote') { return
- ($code == 0x2148 || $code == 0x2149);}
- if ($key eq 'kakko') { return
- (0x214A <= $code && $code <= 0x215B);}
- if ($key eq 'open') { return ($code%2==0);}
- if ($key eq 'close') { return ($code%2==1);}
-
- die "illegal keyname ($key)\n";
- } else { # ucs
- if ($key eq 'hira-a') { return ($code == 0x3041);} # small
- if ($key eq 'hira-i') { return ($code == 0x3043);} # :
- if ($key eq 'hira-u') { return ($code == 0x3045);} # :
- if ($key eq 'hira-e') { return ($code == 0x3047);} # :
- if ($key eq 'hira-o') { return ($code == 0x3049);} # :
- if ($key eq 'hira-tsu') { return ($code == 0x3063);} # :
- if ($key eq 'hira-ya') { return ($code == 0x3083);} # :
- if ($key eq 'hira-yu') { return ($code == 0x3085);} # :
- if ($key eq 'hira-yo') { return ($code == 0x3087);} # :
- if ($key eq 'hira-wa') { return ($code == 0x308E);} # small
- if ($key eq 'hira-Vu') { return ($code == 0x3094);} # large JIS X 0213
- if ($key eq 'hira-ka') { return ($code == 0x3095);} # small JIS X 0213
- if ($key eq 'hira-ke') { return ($code == 0x3096);} # small JIS X 0213
- if ($key eq 'kata-a') { return ($code == 0x30A1);} # small
- if ($key eq 'kata-i') { return ($code == 0x30A3);} # :
- if ($key eq 'kata-u') { return ($code == 0x30A5);} # :
- if ($key eq 'kata-e') { return ($code == 0x30A7);} # :
- if ($key eq 'kata-o') { return ($code == 0x30A9);} # :
- if ($key eq 'kata-tsu') { return ($code == 0x30C3);} # :
- if ($key eq 'kata-ya') { return ($code == 0x30E3);} # :
- if ($key eq 'kata-yu') { return ($code == 0x30E5);} # :
- if ($key eq 'kata-yo') { return ($code == 0x30E7);} # :
- if ($key eq 'kata-wa') { return ($code == 0x30EE);} # :
- if ($key eq 'kata-ka') { return ($code == 0x30F5);} # :
- if ($key eq 'kata-ke') { return ($code == 0x30F6);} # small
- if ($key eq 'kata-Va') { return ($code == 0x30F7);} # large JIS X 0213
- if ($key eq 'kata-Vi') { return ($code == 0x30F8);} # : JIS X 0213
- if ($key eq 'kata-Ve') { return ($code == 0x30F9);} # : JIS X 0213
- if ($key eq 'kata-Vo') { return ($code == 0x30FA);} # large JIS X 0213
- if ($key eq 'kata-ku') { return ($code == 0x31F0);} # small JIS X 0213
- if ($key eq 'kata-mu') { return ($code == 0x31FA);} # small JIS X 0213
- if ($key eq 'kata-ku..ro') { return
- ($code >= 0x31F0 && $code <= 0x31FF);} # small JIS X 0213
- if ($key eq 'comma') { return ($code == 0xFF0C);}
- if ($key eq 'period') { return ($code == 0xFF0E);}
- if ($key eq 'odoriji') { return
- ($code == 0x30FD || $code == 0x30FE ||
- $code == 0x309D || $code == 0x309E ||
- $code == 0x30FC);}
- if ($key eq 'hira-odoriji') { return
- ($code == 0x309D || $code == 0x309E);}
- if ($key eq 'kutouten') { return
- ($code == 0x3001 || $code == 0x3002 ||
- $code == 0xFF0C || $code == 0xFF0E ||
- $code == 0x30FB ||
- $code == 0xFF1A || $code == 0xFF1B);}
- if ($key eq 'burasage') { return
- ($code == 0x3001 || $code == 0x3002 ||
- $code == 0xFF0C || $code == 0xFF0E);}
- if ($key eq 'nakaten' ) { return ($code == 0x30FB);}
- if ($key eq 'colon' ) { return ($code == 0xFF1A);}
- if ($key eq 'semicolon') { return ($code == 0xFF1B);}
- if ($key eq 'quote') { return
- ($code == 0x2018 || $code == 0x2019 ||
- $code == 0x201C || $code == 0x201D);}
- if ($key eq 's-quote') { return
- ($code == 0x2018 || $code == 0x2019);}
- if ($key eq 'd-quote') { return
- ($code == 0x201C || $code == 0x201D);}
- if ($key eq 'kakko') { return
- ((0x3008 <= $code && $code <= 0x3011) ||
- $code == 0x3014 || $code == 0x3015 ||
- $code == 0xFF08 || $code == 0xFF09 ||
- $code == 0xFF3B || $code == 0xFF3D ||
- $code == 0xFF5B || $code == 0xFF5D ||
- $code == 0xFF5F || $code == 0xFF60 || # X0213 1-02-54,55
- $code == 0x3018 || $code == 0x3019 || # X0213 1-02-56,57
- $code == 0x3016 || $code == 0x3017 || # X0213 1-02-58,59
- $code == 0x301D || $code == 0x301F # X0213 1-13-64,65
- );}
- if ($key eq 'open') { return &is_ucs_open($code); }
- if ($key eq 'close') { return (!&is_ucs_open($code)); }
-
- die "illegal keyname ($key)\n";
- }
-}
-
-sub is_ucs_open {
- if ($code == 0x301D) { return 1;}
- if ($code <= 0xFF09) { return ($code%2==0);}
- if ($code == 0xFF3B || $code == 0xFF5B) { return 1;}
- if ($code == 0xFF5F) { return 1;}
- return 0;
-}
-
-sub is_ucs_kigo{
- return 1 if ($ucscode>=0x2018 && $ucscode<=0x2019);
- return 1 if ($ucscode>=0x201C && $ucscode<=0x201D);
- return 1 if ($ucscode>=0x3001 && $ucscode<=0x301F);
- return 1 if ($ucscode>=0x3090 && $ucscode<=0x3093);
- return 1 if ($ucscode>=0x3097 && $ucscode<=0x309F);
- return 1 if ($ucscode>=0x30FB && $ucscode<=0x30FE);
- return 1 if ($ucscode>=0xFF08 && $ucscode<=0xFF60);
-
- return 0;
-}
-
-sub is_ucs_hira{
- return 1 if ($ucscode>=0x3041 && $ucscode<=0x308F);
- return 1 if ($ucscode>=0x3094 && $ucscode<=0x3096); # Vu, small Ka, small Ke
- return 0;
-}
-
-sub is_ucs_kata{
- return 1 if ($ucscode>=0x30A1 && $ucscode<=0x30F6);
- return 1 if ($ucscode>=0x30F7 && $ucscode<=0x30FA); # Va, Vi, Ve, Vo
- return 1 if ($ucscode>=0x31F0 && $ucscode<=0x31FF); # small Ku, small Shi, ... , Small Re, Small Ro
- return 0;
-}
-
-sub is_ucs_hankana{
- return 1 if ($ucscode>=0xFF61 && $ucscode<=0xFF9F);
- return 0;
-}
-
-sub is_ucs_jpn_range{
- return 1 if ($ucscode<=0x04FF); # Cyrillic
-
- return 0 if ($ucscode< 0x1E00);
- return 1 if ($ucscode<=0x243F); # Control Pictures
-
- return 0 if ($ucscode< 0x2460);
- return 1 if ($ucscode<=0x27BF); # Dingbats
-
- return 0 if ($ucscode< 0x2900);
- return 1 if ($ucscode<=0x29FF); # Miscellaneous Mathematical Symbols-B
-
- return 0 if ($ucscode< 0x2B00);
- return 1 if ($ucscode<=0x2BFF); # Miscellaneous Symbols and Arrows
-
- return 0 if ($ucscode< 0x2E80);
- return 1 if ($ucscode<=0x2FDF); # Kangxi Radicals
-
- return 0 if ($ucscode< 0x3000);
- return 1 if ($ucscode<=0x30FF); # Katakana
-
- return 0 if ($ucscode< 0x3190);
- return 1 if ($ucscode<=0x319F); # Kanbun
-
- return 0 if ($ucscode< 0x31F0);
- return 1 if ($ucscode<=0x4DBF); # CJK Unified Ideographs Extension A
-
- return 0 if ($ucscode< 0x4E00);
- return 1 if ($ucscode<=0x9FFF); # CJK Unified Ideographs
-
- return 0 if ($ucscode< 0xE000);
- return 1 if ($ucscode<=0xFB4F); # Alphabetic Presentation Forms
-
- return 0 if ($ucscode< 0xFE10);
- return 1 if ($ucscode<=0xFE1F); # Vertical Forms
-
- return 0 if ($ucscode< 0xFE30);
- return 1 if ($ucscode<=0xFE4F); # CJK Compatibility Forms
-
- return 0 if ($ucscode< 0xFF00);
- return 1 if ($ucscode<=0xFFEF); # Halfwidth and Fullwidth Forms
-
- return 0 if ($ucscode< 0x1F100);
- return 1 if ($ucscode<=0x1F1FF); # Enclosed Alphanumeric Supplement
- return 1 if ($ucscode<=0x1F2FF); # Enclosed Ideographic Supplement
-
- return 0 if ($ucscode< 0x20000);
- return 1 if ($ucscode<=0x2A6DF); # CJK Unified Ideographs Extension B
- return 1 if ($ucscode<=0x2B73F); # CJK Unified Ideographs Extension C
- return 1 if ($ucscode<=0x2B81F); # CJK Unified Ideographs Extension D
-
- return 0 if ($ucscode< 0x2F800);
- return 1 if ($ucscode<=0x2FA1F); # CJK Compatibility Ideographs Supplement
-
- return 0;
-}
__END__
0xFF5F: JIS X 0213 1-02-54 FULLWIDTH LEFT WHITE PARENTHESIS 始め二重バーレーン