diff options
author | Takuji Tanaka <KXD02663@nifty.ne.jp> | 2014-08-09 01:32:45 +0000 |
---|---|---|
committer | Takuji Tanaka <KXD02663@nifty.ne.jp> | 2014-08-09 01:32:45 +0000 |
commit | c576300c15a26509a2018e5af14365e13b795b5b (patch) | |
tree | 3b10628bff1a45378b3a3d206d9aaa4bcdf98cc4 /Master/texmf-dist/source/fonts | |
parent | e407c7b3fe62fc6dc28bb82280025b0c502aa64b (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.pm | 256 | ||||
-rw-r--r-- | Master/texmf-dist/source/fonts/japanese-otf-uptex/script/MakeSPList.pm | 5 | ||||
-rwxr-xr-x | Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkpkana.pl | 552 | ||||
-rwxr-xr-x | Master/texmf-dist/source/fonts/japanese-otf-uptex/script/umkvpkana.pl | 554 | ||||
-rwxr-xr-x | Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf | 4 | ||||
-rwxr-xr-x | Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_brsg | 4 | ||||
-rwxr-xr-x | Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_jis04 | 6 | ||||
-rwxr-xr-x | Master/texmf-dist/source/fonts/japanese-otf-uptex/umakeotf_prop | 36 | ||||
-rwxr-xr-x | Master/texmf-dist/source/fonts/japanese-otf-uptex/umkjvf | 251 |
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 始め二重バーレーン |