OSDN Git Service

patches/lltjp-xunicode.sty: stopped to hardcode `EU2'
[luatex-ja/luatexja.git] / test / test19-ivs.tex
1 %#!lualatex
2 \documentclass{ltjsarticle}
3 \usepackage{luatexja-fontspec,luatexja-otf, luacode, booktabs,array,xcolor}
4 \usepackage[scale=0.80]{geometry}
5 \usepackage{listings}
6 \setsansjfont{KozGoPr6N-Regular}
7
8 % \IVS[?] 用
9 \begin{luacode}
10    local fallback_color = 'red'  -- IVS がないときは,この色で既定文字を出力
11    local list_color = 'blue!50!black'     -- リスト表示の色
12
13    local attr_curjfnt = luatexbase.attributes['ltj@curjfnt']
14    local ubyte = unicode.utf8.byte
15    local uchar = unicode.utf8.char
16    local sort = table.sort
17    function list_ivs(s)
18       local c = ubyte(s)
19       local pt = luatexja.otf.font_ivs_table[tex.attribute[attr_curjfnt]][c]
20       if pt then
21          local t = {}
22          for i,_ in pairs(pt) do t[1+#t]=i end
23          sort(t); tex.sprint('\\textcolor{' .. list_color .. '}{')
24          for _,i in ipairs(t) do 
25             if i<0xF0 then -- only IVS
26                tex.sprint('\\oalign{' .. s .. uchar(i+0xE0100)
27                           .. '\\crcr\\hss\\tiny' .. tostring(i) .. '\\hss\\crcr}') 
28             end
29          end
30          tex.sprint('}')
31       else
32          tex.sprint('\\textcolor{' .. fallback_color .. '}{' .. s .. '}')
33       end
34    end
35 \end{luacode}
36
37 \makeatletter
38
39 %%%%%    \IVS[<selector number>]{<character>}
40 %%%%% or \IVS<selector number>{<character>}
41 %%%%% (<selector number>: 0--239, or `?')
42 \def\ltj@ivs@out#1#2{#2\char\numexpr "E0100+#1\relax} % IVS"
43 \def\ltj@ivs@list?#1{\directlua{list_ivs('#1')}}
44 \def\ltj@ivs@grab@num{\expandafter\expandafter\expandafter\ltj@ivs@out\ltj@grab@num}
45 \def\ltj@ivs@nobracket{\@ifnextchar?{\ltj@ivs@list}{\ltj@ivs@grab@num}}
46 \def\ltj@ivs@bracket[#1]{\ltj@ivs@nobracket#1}
47 \def\IVS{\@ifnextchar[{\ltj@ivs@bracket}{\ltj@ivs@nobracket}}
48
49 \let\MJI=\IVS
50
51 \begin{document}
52 \jfontspec{ipamjm} % IPAmj明朝
53
54 例文はZRさんのブログ記事「ipamjmパッケージでアレしてみた」\footnote{%
55 \verb+http://d.hatena.ne.jp/zrbabbler/20131214/1387029624+}より引用.
56
57 \paragraph{標準状態では……} 見事に異体字セレクタの部分が全角空きになっている.
58 \begin{quote}
59 \LARGE
60 渡邉󠄏さんとか%    { } の中は U+9089 U+E010F
61 渡𫟪󠄂さんとか。% { } の中は U+2B7EA U+E0102
62 \end{quote}
63
64 \paragraph{IVS処理コードをここで有効化した.}\ 
65 \directlua{luatexja.otf.enable_ivs()}
66
67 \begin{quote}
68 \LARGE
69 \MJI15{邉}\MJI25{邉}\MJI27{邉}\MJI26{邉}\MJI26{邉}\MJI16{邊}
70 \MJI18{邊}\textcolor{blue}{\MJI2{𫟪}}\MJI17{邊}〓\\
71 \MJI28{邉}\MJI29{邉}\MJI23{邉}\MJI15{邊}\MJI8{邊}\MJI20{邉}
72 \MJI24{邉}\MJI19{邉}\MJI18{邉}\MJI16{邉}\\
73 \MJI14{邊}\MJI10{邊}\MJI12{邊}\MJI11{邊}\MJI13{邊}\MJI9{邊}
74 \textcolor{blue}{\MJI0{𫟪}}\textcolor{blue}{\MJI1{𫟪}}〓\MJI21{邉}
75 \end{quote}
76 MJ番号を直接指定していたところは,このソース中では無視して下駄「〓」にした.
77 なぜか青色で示した「𫟪」(U+2B7EA)のIVSが機能していないようだが,フォント側にその記述がない,ということ?
78
79 \directlua{luatexja.otf.enable_ivs()}
80 \begin{quote}
81 \LARGE
82 渡邉󠄏さんとか%    { } の中は U+9089 U+E010F
83 渡𫟪󠄂さんとか。% { } の中は U+2B7EA U+E0102
84 \end{quote}
85
86
87 \def\TEST{%
88   奈良県葛󠄀城市と東京都葛󠄁飾区.%
89   江戸川区葛西はどっち?
90 }
91
92 \paragraph{IVSとopentype featureの干渉テスト}
93
94 \begin{quote}
95  \Large
96  {\jfontspec{KozMinPr6N-Regular}\TEST}\\
97  {\jfontspec[CJKShape=JIS1978]{KozMinPr6N-Regular}\TEST}\\
98  {\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular}\TEST}
99 \end{quote}
100
101 \newpage
102 \def\TABLE#1#2{%
103    \begin{center}
104    #1\par\medskip
105    \jfontspec{#2}
106    \Large
107    \begin{tabular}{c>{\tt}ll}
108       \toprule
109       文字&Unicode&異体字\\
110       \midrule
111       邉&U+9089&\IVS?{邉}\\
112       邊&U+908A&\IVS?{邊}\\
113       𫟪&U+2B7EA&\IVS?{𫟪}\\
114       葛&U+845B&\IVS?{葛}\\
115       \bottomrule
116    \end{tabular}
117    \end{center}
118 }
119
120 \TABLE{IPAmj明朝}{ipamjm}
121 \TABLE{小塚明朝 Pr6N R}{kozminpr6n-regular}
122 %\TABLE{花園明朝A}{hanamina}
123 \TABLE{花園明朝 OpenType}{hanaminotpr6n-regular}
124
125 \begin{lstlisting}[basicstyle=\tt, columns=fixed, basewidth=.5em]
126 奈良県葛󠄀城市と東京都葛󠄁飾区.%
127 江戸川区葛西はどっち?
128 \end{lstlisting}
129
130
131 \def\test{あいうえお
132   {\ltjsetparameter{yjabaselineshift=-2pt,tjabaselineshift=2pt}%
133   \vrule 葛葛󠄀城市と葛󠄁飾区\CID{200}}あ}
134 \catcode`\@=11
135 \ltjsetparameter{kanjiskip=4pt}
136
137 \hbox{\jfont\F=KozMinPr6N-Regular:jfm=ujis at 12pt \F\CID{200}\test}
138
139 \hrule
140
141 \hbox{\tate\tfont\F=KozMinPr6N-Regular:jfm=ujisv at 12pt \F\CID{200}\test}
142
143
144 \end{document}