リビジョン | dc4bfddd78aca475291a7f1b035494baf77afa8e (tree) |
---|---|
日時 | 2011-04-13 10:07:24 |
作者 | Hironori Kitagawa <h_kitagawa2001@yaho...> |
コミッター | Hironori Kitagawa |
直前のコミットがうまくいっていなかったことへの修正.
@@ -22,39 +22,37 @@ | ||
22 | 22 | |
23 | 23 | % Japanese fonts |
24 | 24 | \input luatexja-core.sty |
25 | -\loadjfontmetric{mt}{ujis} | |
26 | -\loadjfontmetric{zero}{mono} | |
27 | -\def\minfnt{psft:Ryumin-Light:jfm=mt } | |
28 | -\def\gothfnt{psft:GothicBBB-Medium:jfm=mt } | |
29 | -\jfont\eightipam=\minfnt at 10.5\jQ | |
30 | -\jfont\eightipag=\gothfnt at 10.5\jQ | |
31 | -\jfont\tenipam=\minfnt at 13.5\jQ | |
32 | -\jfont\tenjtt={psft:GothicBBB-Medium:jfm=zero} at 13.5\jQ | |
33 | -\jfont\tenipag=\gothfnt at 13.5\jQ | |
34 | -\jfont\twelveipam=\minfnt at 16\jQ | |
35 | -\jfont\twelveipag=\gothfnt at 16\jQ | |
36 | -\jfont\bigipag=\gothfnt at 28\jQ | |
25 | +\def\minfnt{psft:Ryumin-Light:jfm=ujis } | |
26 | +\def\gothfnt{psft:GothicBBB-Medium:jfm=ujis } | |
27 | +\jfont\eightmc=\minfnt at 10.5\jQ | |
28 | +\jfont\eightgt=\gothfnt at 10.5\jQ | |
29 | +\let\tenmc=\tenmin | |
30 | +\jfont\tenjtt={psft:GothicBBB-Medium:jfm=mono} at 13.5\jQ | |
31 | +\let\tengt=\tengt | |
32 | +\jfont\twelvemc=\minfnt at 16\jQ | |
33 | +\jfont\twelvegt=\gothfnt at 16\jQ | |
34 | +\jfont\biggt=\gothfnt at 28\jQ | |
37 | 35 | |
38 | 36 | % Size |
39 | 37 | \def\large{\def\rm{\textfont0=\twelverm\twelverm\fam0}\def\bf{\twelvebf\gt}% |
40 | 38 | \let\it=\twelveit \let\sl=\twelvesl \let\mus=\twelvemus |
41 | 39 | \let\sc=\twelvesc \let\tt=\twelvett |
42 | - \let\mc=\twelveipam \let\gt=\twelveipag | |
40 | + \let\mc=\twelvemc \let\gt=\twelvegt | |
43 | 41 | \baselineskip=18pt\rm\mc\xkanjiskip=0.25\zw plus 0.10\zw minus 0.10\zw} |
44 | 42 | |
45 | -\def\big{\bigbf\bigipag\xkanjiskip=0.25\zw plus 0.10\zw minus 0.10\zw} | |
43 | +\def\big{\bigbf\biggt\xkanjiskip=0.25\zw plus 0.10\zw minus 0.10\zw} | |
46 | 44 | |
47 | 45 | \def\normalsize{\def\rm{\textfont0=\tenrm\tenrm\fam0}\def\bf{\tenbf\gt}% |
48 | 46 | \let\it=\tenit \let\sl=\tensl \let\mus=\tenmus |
49 | 47 | \let\sc=\tensc \def\tt{\tentt\tenjtt}% |
50 | - \let\mc=\tenipam \let\gt=\tenipag | |
51 | - \baselineskip=15pt\rm\mc\xkanjiskip=0.25\zw plus 0.10\zw minus 0.10\zw} | |
48 | + \let\mc=\tenmc \let\gt=\tengt | |
49 | + \baselineskip=15pt\rm\mc\xkanjiskip=0.25\zw plus 1pt minus 1pt} | |
52 | 50 | \def\small{\def\rm{\textfont0=\eightrm\eightrm\fam0}\def\bf{\eightbf\gt}% |
53 | 51 | \let\it=\eightit \let\sl=\eightsl \let\mus=\eightmus |
54 | 52 | \let\sc=\eightsc \def\tt{\eighttt\eightjtt}% |
55 | - \let\mc=\eightipam \let\gt=\eightipag% | |
56 | - \rm\mc\xkanjiskip=0.25\zw plus 0.10\zw minus 0.10\zw% | |
57 | - \ykbaselineshift=-49807\yabaselineshift=-49807 | |
53 | + \let\mc=\eightmc \let\gt=\eightgt% | |
54 | + \rm\mc\xkanjiskip=0.25\zw plus 1pt minus 1pt% | |
55 | + \setjaparameter{ykbaselineshift=-0.76pt, yabaselineshift=-0.76pt} | |
58 | 56 | } |
59 | 57 | |
60 | 58 |
@@ -62,7 +60,7 @@ | ||
62 | 60 | % layout |
63 | 61 | \normalsize\parindent=1\zw\parskip=0pt |
64 | 62 | \pdfpagewidth=210mm\pdfpageheight=297mm |
65 | -\hsize=40\zw\hoffset=\dimexpr(\pdfpagewidth-\hsize)/2-1in\relax | |
63 | +\hsize=43\zw\hoffset=\dimexpr(\pdfpagewidth-\hsize)/2-1in\relax | |
66 | 64 | \vsize=246mm |
67 | 65 | |
68 | 66 | % heading |
@@ -4,7 +4,6 @@ | ||
4 | 4 | \message{BB} |
5 | 5 | \overfullrule=0pt |
6 | 6 | \def\LaTeX{L\kern-.36em\setbox0=\hbox{T}\vbox to\ht0{\hbox{\sevenrm A}\vss}\kern-.15em\TeX} |
7 | -\xkanjiskip=0.25\zw plus .10\zw minus .10\zw | |
8 | 7 | \font\mff=manfnt at 10pt |
9 | 8 | \def\mf{{\mff META{\rm\-}FONT}} |
10 | 9 | \def\textfontii{\the\textfont2 } |
@@ -63,9 +62,9 @@ | ||
63 | 62 | {\bf 現時点で\LaTeX での使用は全く考慮されていない.} |
64 | 63 | \item {\tt luatexja-core.lua}: コア部分に使われるLuaコード. |
65 | 64 | \item {\tt luatexja-jfont.lua}: 和文フォント定義部のLuaコード. |
66 | -\item {\tt luatexja-rmlgbm.lua}: 非埋込和文フォント (Ryumin-Light etc.) 定義部. | |
67 | 65 | \item {\tt luatexja-rmlgbm-data.lua}: 非埋込和文フォント用のデータ(小塚明朝Pr6N R由来). |
68 | 66 | \item {\tt mk-rmlgbm-data.lua}: {\tt luatexja-rmlgbm-data.lua}作成用Luaスクリプト({\tt texlua}で実行;小塚明朝を{\tt luaotfload}で読み込んだ時のキャッシュが必要). |
67 | +\item {\tt mk\_lua.py}: {\tt luatexja-ucs2aj16.lua}作成用Pythonスクリプト. | |
69 | 68 | |
70 | 69 | \item {\tt luatexja-kinsoku.tex}: 禁則用ペナルティ等のパラメータを書いたファイル. |
71 | 70 | 下のファイルによって{\tt ukinsoku.tex} (in up\TeX-0.30) から自動生成されたもの. |
@@ -79,12 +78,10 @@ | ||
79 | 78 | 大雑把に言うと,plain \TeX の状況で,以下のようにすればよい. |
80 | 79 | \begintt |
81 | 80 | \input luatexja-core.sty % ←マクロ本体を読み込み |
82 | -\loadjfontmetric{mt}{ujis} % ←メトリックの読み込み | |
83 | -\jfont\tenipam={file:ipam.ttf:jfm=mt}at13.5\jQ | |
81 | +\jfont\tenipam={file:ipam.ttf:jfm=ujis} at 13.5\jQ | |
84 | 82 | \tenipam\parindent=1\zw |
85 | -\yabaselineshift=32768 % (例)32768 sp = 0.5 pt | |
86 | 83 | |
87 | -\rm abcほげほげ)(あいう本文本文…… | |
84 | +\rm\tenipam abcほげほげ)(あいう本文本文…… | |
88 | 85 | \endtt |
89 | 86 | |
90 | 87 | \beginsection 実装解説 |
@@ -92,7 +89,7 @@ | ||
92 | 89 | \beginparagraph attributes, dimensions,$\,\ldots$ |
93 | 90 | |
94 | 91 | 以下はLua\TeX-jaパッケージ内で使用するattributeやその他の種類のレジスタである. |
95 | -上4つは内部処理用なので利用者が意識することはない.それ以外は,p\TeX に類似の名前の | |
92 | +上6つは内部処理用なので利用者が意識することはない.それ以外は,p\TeX に類似の名前の | |
96 | 93 | primitiveがあることから,意味は容易にわかるだろう: |
97 | 94 | |
98 | 95 | \item attribute |\luatexja@curjfnt|: 現在の和文フォント番号 |
@@ -111,12 +108,12 @@ p\TeX では,|\kern|由来のkernと,イタリック補正由来のkernを | ||
111 | 108 | |
112 | 109 | \item language |\luatexja@japanese|: 「日本語」に対応する|\language|番号 |
113 | 110 | |
114 | -\item attribute |\yabaselineshift|: 欧文文字ベースラインの補正量. | |
111 | +\item attribute |\luatexja@yabaselineshift|: 欧文文字ベースラインの補正量. | |
115 | 112 | \itemitem {\bf sp$\fam\bffam {}=2^{-16}\,{\bf pt}$単位の整数値}で指定. |
116 | 113 | 正の値を指定すると,その分だけ欧文文字は下にずれる. |
117 | 114 | \itemitem 数式中では,boxやruleもこの量だけずれる\hfil\break |
118 | 115 | (よって,行中数式は全体が|\yabaselineshift|だけずれたように見える). |
119 | -\item attribute |\ykbaselineshift|: 和文文字ベースラインの補正量. | |
116 | +\item attribute |\luatexja@ykbaselineshift|: 和文文字ベースラインの補正量. | |
120 | 117 | |
121 | 118 | p\TeX では「和文が主」という考えからか,常に和文文字のベースラインが基準であり, |
122 | 119 | 欧文文字の方をずらすことになっていた.しかし,「欧文の中に和文をちょっと入れる」ような場合では, |
@@ -126,6 +123,7 @@ p\TeX では「和文が主」という考えからか,常に和文文字の | ||
126 | 123 | {\small 異なる文字サイズの文字を「上下中央揃え」で組む}ことも可能. |
127 | 124 | \item skip |\kanjiskip|: 和文文字同士の間に入る空白量. |
128 | 125 | \item skip |\xkanjiskip|: 和文文字と欧文文字の間に入る空白量. |
126 | +\item count |\jcharwidowpenalty|: {\bf 未実装} | |
129 | 127 | \item dimen |\zw|, |\zh|: 現在の和文フォントの「幅」/「高さ」(メトリックから指定) |
130 | 128 | \item dimen |\jQ|, |\jH|${}= 0.25\,{\rm mm}$ |
131 | 129 | \enditem |
@@ -134,66 +132,116 @@ p\TeX では「和文が主」という考えからか,常に和文文字の | ||
134 | 132 | \beginparagraph 和文フォントの定義 |
135 | 133 | |
136 | 134 | Lua\TeX-jaでは,大雑把にいうと |
137 | -和文フォントは「実際の字形」と「和文用のメトリック情報」の組である. | |
138 | -\item メトリック情報は,和文文字の幅や,和文文字間の空白の入り方などを規定する. | |
139 | -p\TeX における{\tt JFM}ファイルのようなものと考えてよい. | |
140 | -\enditem | |
141 | - | |
142 | -このため,和文フォントを使うには,以下のような手順が必要である. | |
143 | - | |
144 | -\enum |\loadjfontmetric{<key>}{<file>}| | |
135 | +和文フォントは「実際の字形」と「和文用のメトリック情報 (JFM)」の組である. | |
136 | +JFM は和文文字の幅や,和文文字間の空白の入り方などを規定するもの% | |
137 | +{\small (p\TeX におけるJFMファイルとほぼ同じ内容)}であり, | |
138 | +|jfm-<name>.lua|という名称のファイルにLuaコードの形で書かれている. | |
145 | 139 | |
146 | -Luaソース|luatj-<file>.lua|に書かれたメトリック情報を読み込む. | |
147 | -内部では<key>というキーで参照されることとなる.同じkeyで2回以上読み込むことはできないが, | |
148 | -同じメトリック情報に異なるキーをつけることは差し支えない. | |
140 | +和文フォントを使うには, | |
141 | +\TeX の|\font| primitiveと同様の書式を持った次の命令を用いて和文フォントを定義する: | |
149 | 142 | |
150 | -\enum |\jfont<font>={<fontname>:jfm=<key>} [at <size>/scaled <scale>]| | |
151 | - | |
152 | -\TeX の|\font| primitiveと同様の書式を持った|\jfont|命令を用いて和文フォントを定義する. | |
153 | -少し正確に言うと,制御綴<font>の意味を,「$\hbox{|\luatexja@curjfnt|}\leftarrow v$」というように | |
154 | -変更する. | |
143 | +\begintt | |
144 | + \jfont<font>={<fontname>:<features>} <size> % local に定義 | |
145 | + \gjfont<font>={<fontname>:<features>} <size> % global に定義 | |
146 | +\endtt | |
155 | 147 | |
156 | -\itemitem 内部でluaotfloadパッケージを読み込んでいる.そのため, | |
157 | -<fontname>の部分は |file:ipam.ttf| 等のように,TrueType/OpenTypeフォントを指定することが可能. | |
158 | 148 | |
159 | -\itemitem 但し,<fontname>が|psft:<ps-font>|であった場合は, | |
160 | -<ps-font>で指定された名前の和文フォント(非埋込)となる. | |
149 | +\item {\bf <fontname> の指定について}\par\noindent | |
150 | +内部でluaotfloadパッケージを読み込んでいる.大きくわけて,以下の4種類がある. | |
151 | +このうち,前の2つはluaotfloadパッケージの機能である. | |
152 | +\itemitem |file:<filename>|\par\noindent | |
153 | +TrueType/OpenTypeフォントをファイル名<filename>で指定. | |
154 | +\itemitem |name:<fontname>|\par\noindent | |
155 | +システム内のフォント名を<fontname>に指定することも可能. | |
156 | +\itemitem |psft:<PSfontname>|\par\noindent | |
157 | +PSフォント名<PSfontname>を直接指定することもでき, | |
158 | +この場合はフォントは名前だけ(非埋込)となる. | |
161 | 159 | 例えば,本文章では, |
162 | 160 | \begintt |
163 | -\jfont\tenipam={psft:Ryumin-Light:jfm=mt} at 13.5\jQ | |
164 | -\jfont\tenipag={psft:GothicBBB-Medium:jfm=mt} at 13.5\jQ | |
161 | +\jfont\tenmc={psft:Ryumin-Light:jfm=ujis} at 13.5\jQ | |
162 | +\jfont\tengt={psft:GothicBBB-Medium:jfm=ujis} at 13.5\jQ | |
165 | 163 | \endtt |
166 | 164 | のような定義をし,標準和文フォントRyumin-Light, GothicBBB-Mediumを用いている. |
167 | -\itemitem luaotfload packageの他の機能,例えば各種のfeature,を用いてもよい.例えば,次のように: | |
165 | +%\itemitem |vf:<vfname>| | |
166 | + | |
167 | +\item {\bf JFMの指定}:<features>欄に次を指定する.\par\noindent | |
168 | +\itemitem |jfm=<jfmfile>|: JFMとして|jfm-<jfmfile>.lua|を用いることを示す.必須. | |
169 | +\itemitem |jfmvar=<varkey>|\par\noindent | |
170 | +和文文字間の空白の挿入処理は,使用するJFMと,この<varkey>の値とのペアによって行われる. | |
171 | + | |
172 | +\item luaotfload packageの他の機能,例えば各種のfeature,を用いてもよい: | |
168 | 173 | \begintt |
169 | 174 | \jfont\tenipam={file:ipaexm.ttf:script=latn;+jp90;jfm=mt} |
170 | 175 | \endtt |
171 | 176 | |
172 | - | |
173 | 177 | \enditem |
174 | 178 | |
175 | -\beginparagraph その他命令類 | |
179 | +\beginparagraph 組版パラメタの調整 | |
176 | 180 | |
177 | -\item |\(set/get)inhibitxspcode{<code>}{<num>}|, \hfil\break | |
178 | -|\(set/get)xspcode{<code>}{<num>}|,\hfil\break | |
179 | -|\(set/get)prebreakpenalty{<code>}{<num>}|,\hfil\break | |
180 | -|\(set/get)postbreakpenalty{<code>}{<num>}| | |
181 | - | |
182 | -これらはp\TeX の(|set|/|get|を抜かした)命令と意味は概ね同じであるが,以下の点が異なる. | |
183 | - | |
184 | -\itemitem 同じ文字コードについて|\prebreakpenalty|, |\postbreakpenalty|を両方指定することが | |
185 | -可能. | |
186 | -\itemitem |\(set/get)xspcode|(欧文文字用)は|\(set/get)inhibitxspcode|(和文文字用)の別名であり, | |
181 | +日本語組版用の各種パラメタの調整には,次の命令を用いる. | |
187 | 182 | \begintt |
188 | -\setxspcode{12289}{1} \setinhibitxspcode{12289}{1} | |
183 | + \setjaparameter{<key>=<value>, ...} % local に変更 | |
184 | + \globalsetjaparameter{<key>=<value>, ...} % global に変更 | |
189 | 185 | \endtt |
190 | -は全く同じ意味である.|\setxspcode|, |\setinhibitxspcode|の第2引数の意味は異なるが, | |
191 | -両者の意味は文字コードにより判断している. | |
192 | 186 | |
193 | -\item |\inhibitglue|: 指定箇所での和文フォントメトリック由来のglue/kernの挿入を禁止する. | |
187 | +<key> に許される値は次の通りである. | |
188 | + | |
189 | +\enum ★がついているものは,段落や水平ボックス構成時の値が全体に影響するものである. | |
190 | + | |
191 | +\enum ◎がついているものは,自動的にglobalな代入となってしまうもの. | |
192 | + | |
193 | +\item |prebreakpenalty={<chrcode>, <penalty>}|★◎\par\noindent | |
194 | +p\TeX の|\prebreakpenalty|に対応した設定項目である. | |
195 | +\itemitem <chrcode>: 文字コードを指定する.一旦補助カウンタに代入されるので, | |
196 | +16進法での数値の指定 (|"abcd|) や,%" | |
197 | +文字トークンによる指定 (|`あ|) も可能である. | |
198 | +\itemitem <penalty>: penalty の値を0から10000までの自然数で指定する | |
199 | +{\small(範囲外でも可能だが)\inhibitglue}. | |
200 | + | |
201 | +\item |postbreakpenalty={<chrcode>, <penalty>}|★◎\par\noindent | |
202 | +同様に,p\TeX の|\postbreakpenalty|に対応した設定項目である. | |
203 | +p\TeX では,同一文字に対して|\prebreakpenalty|, |\postbreakpenalty|の両方を定義する | |
204 | +ことはできなかったが,Lua\TeX-jaでは可能である. | |
205 | + | |
206 | +\item |cjkxspmode={<chrcode>, <mode>}|★◎\par\noindent | |
207 | +p\TeX の|\inhibitxspcode|に対応した設定項目である.<mode>で許される値は, | |
208 | +\itemitem 0, 1, 2, 3: p\TeX の対応するprimitiveと同じ意味. | |
209 | +\itemitem |inhibit|: 前後の欧文文字との間の|\xkanjiskip|自動挿入を禁止. | |
210 | +\itemitem |preonly|: 前の欧文文字との間の|\xkanjiskip|自動挿入のみを許可. | |
211 | +\itemitem |postonly|: 後の欧文文字との間の|\xkanjiskip|自動挿入のみを許可. | |
212 | +\itemitem |allow|: 前後の欧文文字との間の|\xkanjiskip|自動挿入を許可. | |
213 | +\item |asciixspmode={<chrcode>, <mode>}|★◎\par\noindent | |
214 | +同様に,p\TeX の|\xspcode|に対応した設定項目である. | |
215 | +\item |yabaselineshift=<dimen>|: | |
216 | +欧文文字のベースライン補正量をdimensionで指定する. | |
217 | +\item |ykbaselineshift=<dimen>|: | |
218 | +和文文字のベースライン補正量をdimensionで指定する. | |
219 | +\item |kanjiskip=<skip>|★\inhibitglue: |\kanjiskip=<skip>|と同じ意味. | |
220 | +\item |xkanjiskip=<skip>|★\inhibitglue: |\xkanjiskip=<skip>|と同じ意味. | |
221 | +\item |jcharwidowpenalty=<penalty>|★\inhibitglue: |\jcharwidowpenalty=<penalty>|と同じ意味. | |
222 | +\item |autospacing[=<bool>]|★◎\par\noindent | |
223 | +和文文字間のglue(|\kanjiskip|)の自動挿入をするかしないかを制御. | |
224 | +\item |autoxspacing[=<bool>]|★◎\par\noindent | |
225 | +和欧文間のglue(|\xkanjiskip|)の自動挿入をするかしないかを制御. | |
226 | + | |
227 | +\item |differentjfm=(large/small/average/both)|★◎\par\noindent | |
228 | +異なる$(\hbox{<jfm>}, \hbox{<varkey>})$である2つの和文文字の間の | |
229 | +glue/kernの計算方法を設定する. | |
230 | +左側文字由来,右側文字由来のものが両方存在した場合にのみ効力をもつ. | |
231 | +\itemitem {\tt large}: glue/kernの幅が両者のうち大きい方になるように定める. | |
232 | +\itemitem {\tt small}: 両者のうち小さい方. | |
233 | +\itemitem {\tt average}: 両者の相加平均. | |
234 | +\itemitem {\tt both}: 両者の合計値の幅をもつglue/kernを挿入する. | |
235 | + | |
236 | + | |
237 | +\enditem | |
238 | + | |
239 | +\beginparagraph inhibitglue | |
240 | + | |
241 | +|\inhibitglue| | |
242 | +: 指定箇所での和文フォントメトリック由来のglue/kernの挿入を禁止する. | |
194 | 243 | 内部的には,|user_id|が30111のwhatsit nodeを作成している{\small(メトリック由来の |
195 | 244 | glue/kern挿入処理で役目を終え,削除される)\inhibitglue}. |
196 | -\enditem | |
197 | 245 | |
198 | 246 | |
199 | 247 | \beginparagraph 大まかな処理の流れ |
@@ -240,18 +288,14 @@ $p$は「現在の和文フォント」の番号もattribute |\luatexja@curjfnt| | ||
240 | 288 | 両者のフォントのmetric keyとsizeが一致した場合は, |
241 | 289 | 挿入処理においては「同じフォント」であるかのように扱う. |
242 | 290 | \itemitem そうでない場合は,両者の間に「文字コード|'diffmet'|の文字」があると見做して, |
243 | -両和文文字からそれぞれglue/kern |gb|, |ga|を計算し,そこから実際に入るglue/kernを, | |
244 | -関数|ltj.calc_between_two_jchar_aux|で計算している: | |
245 | -\itemT |gb|, |ga|の片方がglue,もう片方がkernの場合は,glue側のみ挿入. | |
246 | -\itemT そうでないときは,両者の平均値の空白を挿入する. | |
291 | +両和文文字からそれぞれglue/kern |gb|, |ga|を計算し,そこから実際に入るglue/kernを | |
292 | +計算している(|\setjaparameter|中の|differentjfm|キーを参照). | |
247 | 293 | |
248 | 294 | \item |\kanjiskip|, |\xkanjiskip|の挿入: |pre_linebreak_filter|, |hpack_filter| |
249 | 295 | |
250 | 296 | p\TeX の|adjust_hlist| procedureとほぼ同様の処理を用いて, |
251 | 297 | 和文間glue |\kanjiskip|や和欧文間glue |\xkanjiskip|を |
252 | 298 | 挿入する. |
253 | -\itemitem p\TeX と同様に,これらの自動挿入は(box/段落ごとに) | |
254 | -|\[no]auto[x]spacing|を用いて制御できる. | |
255 | 299 | \itemitem 数式境界 (|math_node|) との間に|\xkanjiskip|を自動挿入するかの決定は, |
256 | 300 | p\TeX では数字{\tt 0}との間に挿入するかどうかで判定していたが,Lua\TeX-jaでは |
257 | 301 | 「文字コード|'math'|の文字」で判定している. |
@@ -18,7 +18,69 @@ end | ||
18 | 18 | -- ga: 後側の和文文字 a 由来の glue/kern (maybe nil) |
19 | 19 | -- 両者から,b と a の間に入る glue/kern を計算する |
20 | 20 | |
21 | -function ltj.calc_between_two_jchar_aux(gb,ga) | |
21 | +function ltj.calc_between_two_jchar_aux_large(gb,ga) | |
22 | + if not gb then | |
23 | + return ga | |
24 | + else | |
25 | + if not ga then return gb end | |
26 | + local k = node.type(gb.id) .. node.type(ga.id) | |
27 | + if k == 'glueglue' then | |
28 | + -- 両方とも glue.大きい方をとる | |
29 | + gb.spec.width = math.max(gb.spec.width,ga.spec.width) | |
30 | + gb.spec.stretch = math.max(gb.spec.stretch,ga.spec.shrink) | |
31 | + gb.spec.shrink = math.min(gb.spec.shrink,ga.spec.shrink) | |
32 | + return gb | |
33 | + elseif k == 'kernkern' then | |
34 | + -- 両方とも kern. | |
35 | + gb.kern = math.max(gb.kern,ga.kern) | |
36 | + return gb | |
37 | + elseif k == 'kernglue' then | |
38 | + -- gb: kern, ga: glue | |
39 | + ga.spec.width = math.max(gb.kern,ga.spec.width) | |
40 | + ga.spec.stretch = math.max(ga.spec.stretch,0) | |
41 | + ga.spec.shrink = math.min(ga.spec.shrink,0) | |
42 | + return ga | |
43 | + else | |
44 | + -- gb: glue, ga: kern | |
45 | + gb.spec.width = math.max(ga.kern,gb.spec.width) | |
46 | + gb.spec.stretch = math.max(gb.spec.stretch,0) | |
47 | + gb.spec.shrink = math.min(gb.spec.shrink,0) | |
48 | + return gb | |
49 | + end | |
50 | + end | |
51 | +end | |
52 | +function ltj.calc_between_two_jchar_aux_small(gb,ga) | |
53 | + if not gb then | |
54 | + return ga | |
55 | + else | |
56 | + if not ga then return gb end | |
57 | + local k = node.type(gb.id) .. node.type(ga.id) | |
58 | + if k == 'glueglue' then | |
59 | + -- 両方とも glue.大きい方をとる | |
60 | + gb.spec.width = math.min(gb.spec.width,ga.spec.width) | |
61 | + gb.spec.stretch = math.min(gb.spec.stretch,ga.spec.shrink) | |
62 | + gb.spec.shrink = math.max(gb.spec.shrink,ga.spec.shrink) | |
63 | + return gb | |
64 | + elseif k == 'kernkern' then | |
65 | + -- 両方とも kern. | |
66 | + gb.kern = math.min(gb.kern,ga.kern) | |
67 | + return gb | |
68 | + elseif k == 'kernglue' then | |
69 | + -- gb: kern, ga: glue | |
70 | + ga.spec.width = math.min(gb.kern,ga.spec.width) | |
71 | + ga.spec.stretch = math.min(ga.spec.stretch,0) | |
72 | + ga.spec.shrink = math.max(ga.spec.shrink,0) | |
73 | + return ga | |
74 | + else | |
75 | + -- gb: glue, ga: kern | |
76 | + gb.spec.width = math.min(ga.kern,gb.spec.width) | |
77 | + gb.spec.stretch = math.min(gb.spec.stretch,0) | |
78 | + gb.spec.shrink = math.max(gb.spec.shrink,0) | |
79 | + return gb | |
80 | + end | |
81 | + end | |
82 | +end | |
83 | +function ltj.calc_between_two_jchar_aux_average(gb,ga) | |
22 | 84 | if not gb then |
23 | 85 | return ga |
24 | 86 | else |
@@ -29,15 +91,50 @@ function ltj.calc_between_two_jchar_aux(gb,ga) | ||
29 | 91 | gb.spec.width = tex.round((gb.spec.width+ga.spec.width)/2) |
30 | 92 | gb.spec.stretch = tex.round((gb.spec.stretch+ga.spec.shrink)/2) |
31 | 93 | gb.spec.shrink = tex.round((gb.spec.shrink+ga.spec.shrink)/2) |
94 | + return gb | |
32 | 95 | elseif k == 'kernkern' then |
33 | 96 | -- 両方とも kern.平均をとる |
34 | 97 | gb.kern = tex.round((gb.kern+ga.kern)/2) |
98 | + return gb | |
99 | + elseif k == 'kernglue' then | |
100 | + -- gb: kern, ga: glue | |
101 | + ga.spec.width = tex.round((gb.kern+ga.spec.width)/2) | |
102 | + ga.spec.stretch = tex.round(ga.spec.stretch/2) | |
103 | + ga.spec.shrink = tex.round(ga.spec.shrink/2) | |
104 | + return ga | |
105 | + else | |
106 | + -- gb: glue, ga: kern | |
107 | + gb.spec.width = tex.round((ga.kern+gb.spec.width)/2) | |
108 | + gb.spec.stretch = tex.round(gb.spec.stretch/2) | |
109 | + gb.spec.shrink = tex.round(gb.spec.shrink/2) | |
110 | + return gb | |
111 | + end | |
112 | + end | |
113 | +end | |
114 | +function ltj.calc_between_two_jchar_aux_both(gb,ga) | |
115 | + if not gb then | |
116 | + return ga | |
117 | + else | |
118 | + if not ga then return gb end | |
119 | + local k = node.type(gb.id) .. node.type(ga.id) | |
120 | + if k == 'glueglue' then | |
121 | + gb.spec.width = tex.round((gb.spec.width+ga.spec.width)) | |
122 | + gb.spec.stretch = tex.round((gb.spec.stretch+ga.spec.shrink)) | |
123 | + gb.spec.shrink = tex.round((gb.spec.shrink+ga.spec.shrink)) | |
124 | + return gb | |
125 | + elseif k == 'kernkern' then | |
126 | + gb.kern = tex.round((gb.kern+ga.kern)) | |
127 | + return gb | |
35 | 128 | elseif k == 'kernglue' then |
36 | 129 | -- gb: kern, ga: glue |
130 | + ga.spec.width = tex.round((gb.kern+ga.spec.width)) | |
37 | 131 | return ga |
38 | 132 | else |
39 | 133 | -- gb: glue, ga: kern |
134 | + gb.spec.width = tex.round((ga.kern+gb.spec.width)) | |
40 | 135 | return gb |
41 | 136 | end |
42 | 137 | end |
43 | 138 | end |
139 | + | |
140 | +ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_average |
@@ -1,6 +1,6 @@ | ||
1 | 1 | -- error messages |
2 | -function ltj.error(s) | |
3 | - tex.error("LuaTeX-ja error: " .. s ); | |
2 | +function ltj.error(s,t) | |
3 | + tex.error('LuaTeX-ja error: ' .. s ,t) | |
4 | 4 | end |
5 | 5 | |
6 | 6 | -- return true if and only if p is a Japanese character node |
@@ -26,20 +26,77 @@ function ltj.get_penalty_table(m,c) | ||
26 | 26 | i=(ltj.penalty_table[c])[m] |
27 | 27 | end |
28 | 28 | if not i then i=0 end |
29 | - tex.swrite(i) | |
29 | + tex.write(i) | |
30 | 30 | end |
31 | 31 | |
32 | 32 | ltj.inhibit_xsp_table = {} |
33 | 33 | function ltj.set_inhibit_xsp_table(c,p) |
34 | 34 | ltj.inhibit_xsp_table[c]=p |
35 | 35 | end |
36 | -function ltj.get_inhibit_xsp_table(c,p) | |
37 | - local i=ltj.inhibit_xsp_table[c] | |
38 | - if not i then i=3 end | |
39 | - tex.swrite(i) | |
36 | +function ltj.get_inhibit_xsp_table(c) | |
37 | + return ltj.inhibit_xsp_table[c] or 3 | |
38 | +end | |
39 | + | |
40 | +-------- | |
41 | +function ltj.out_ja_parameter_one(k) | |
42 | + if k == 'yabaselineshift' then | |
43 | + tex.write(tex.getattribute('luatexja@yablshift')/65536 .. 'pt') | |
44 | + elseif k == 'ykbaselineshift' then | |
45 | + tex.write(tex.getattribute('luatexja@ykblshift')/65536 .. 'pt') | |
46 | + elseif k == 'kanjiskip' then | |
47 | + tex.sprint('\\the\\kanjiskip') | |
48 | + elseif k == 'xkanjiskip' then | |
49 | + tex.sprint('\\the\\xkanjiskip') | |
50 | + elseif k == 'jcharwidowpenalty' then | |
51 | + tex.write(tex.getattribute('jcharwidowpenalty')) | |
52 | + elseif k == 'autospacing' then | |
53 | + tex.write(tostring(ltj.auto_spacing)) | |
54 | + elseif k == 'autoxspacing' then | |
55 | + tex.write(tostring(ltj.auto_xspacing)) | |
56 | + elseif k == 'differentjfm' then | |
57 | + if ltj.calc_between_two_jchar_aux==ltj.calc_between_two_jchar_aux_large then | |
58 | + tex.write('large') | |
59 | + elseif ltj.calc_between_two_jchar_aux==ltj.calc_between_two_jchar_aux_small then | |
60 | + tex.write('small') | |
61 | + elseif ltj.calc_between_two_jchar_aux==ltj.calc_between_two_jchar_aux_average then | |
62 | + tex.write('average') | |
63 | + elseif ltj.calc_between_two_jchar_aux==ltj.calc_between_two_jchar_aux_both then | |
64 | + tex.write('both') | |
65 | + else | |
66 | + tex.write('???') | |
67 | + end | |
68 | + end | |
69 | +end | |
70 | + | |
71 | +function ltj.out_ja_parameter_two(k,c) | |
72 | + print(k,c) | |
73 | + if k == 'prebreakpenalty' then | |
74 | + tex.write(ltj.get_penalty_table('pre',c)) | |
75 | + elseif k == 'postbreakpenalty' then | |
76 | + tex.write(ltj.get_penalty_table('post',c)) | |
77 | + elseif k == 'cjkxspmode' then | |
78 | + local i = ltj.get_inhibit_xsp_table(c) | |
79 | + if i==0 then tex.write('inhibit') | |
80 | + elseif i==1 then tex.write('postonly') | |
81 | + elseif i==2 then tex.write('preonly') | |
82 | + else tex.write('allow') | |
83 | + end | |
84 | + elseif k == 'asciixspmode' then | |
85 | + local i = ltj.get_inhibit_xsp_table(c) | |
86 | + if i==0 then tex.write('inhibit') | |
87 | + elseif i==2 then tex.write('postonly') | |
88 | + elseif i==1 then tex.write('preonly') | |
89 | + else tex.write('allow') | |
90 | + end | |
91 | + end | |
92 | +end | |
93 | + | |
94 | + | |
95 | +--------- | |
96 | +function ltj.print_global() | |
97 | + if ltj.isglobal=='global' then tex.sprint('\\global') end | |
40 | 98 | end |
41 | 99 | |
42 | ----------- | |
43 | 100 | function ltj.create_ihb_node() |
44 | 101 | local g=node.new(node.id('whatsit'), node.subtype('user_defined')) |
45 | 102 | g.user_id=30111; g.type=number; g.value=1 |
@@ -226,13 +283,13 @@ ltj.cx = nil | ||
226 | 283 | -- 0: ``no_skip'', 1: ``after_schar'', 2: ``after_wchar'' |
227 | 284 | -- These variables are ``global'', because we want to avoid to write one large function. |
228 | 285 | function ltj.insert_kanji_skip(head) |
229 | - if tex.count['luatexja@autospc']==0 then | |
286 | + if ltj.auto_spacing then | |
230 | 287 | ltj.kanji_skip=tex.skip['kanjiskip'] |
231 | 288 | else |
232 | 289 | ltj.kanji_skip=node.new(node.id('glue_spec')) |
233 | 290 | ltj.kanji_skip.width=0; ltj.kanji_skip.stretch=0; ltj.kanji_skip.shrink=0 |
234 | 291 | end |
235 | - if tex.count['luatexja@autoxspc']==0 then | |
292 | + if ltj.auto_xspacing then | |
236 | 293 | ltj.xkanji_skip=tex.skip['xkanjiskip'] |
237 | 294 | else |
238 | 295 | ltj.xkanji_skip=node.new(node.id('glue_spec')) |
@@ -274,7 +331,7 @@ end | ||
274 | 331 | -- Insert \xkanjiskip before p, a glyph node |
275 | 332 | -- TODO; ligature |
276 | 333 | function ltj.insks_around_char(head,q,p) |
277 | - local a=ltj.inhibit_xsp_table[p.char] | |
334 | + local a=ltj.get_inhibit_xsp_table(p.char) | |
278 | 335 | if ltj.is_japanese_glyph_node(p) then |
279 | 336 | ltj.cx=p.char |
280 | 337 | if ltj.is_japanese_glyph_node(q) then |
@@ -286,7 +343,6 @@ function ltj.insks_around_char(head,q,p) | ||
286 | 343 | end |
287 | 344 | ltj.insert_skip=2 |
288 | 345 | else |
289 | - if not a then a=3 end | |
290 | 346 | if ltj.insert_skip==2 then |
291 | 347 | ltj.insert_kaxsp(head,q,a) |
292 | 348 | end |
@@ -299,11 +355,9 @@ function ltj.insks_around_char(head,q,p) | ||
299 | 355 | end |
300 | 356 | |
301 | 357 | function ltj.insert_akxsp(head,q) |
302 | - local f = ltj.inhibit_xsp_table[ltj.cx] | |
358 | + local f = ltj.get_inhibit_xsp_table(ltj.cx) | |
303 | 359 | local g |
304 | - if f then | |
305 | - if f<=1 then return end | |
306 | - end | |
360 | + if f<=1 then return end | |
307 | 361 | g = node.new(node.id('glue')) |
308 | 362 | g.subtype=0; g.spec=node.copy(ltj.xkanji_skip) |
309 | 363 | node.insert_after(head,q,g) |
@@ -311,11 +365,9 @@ end | ||
311 | 365 | |
312 | 366 | function ltj.insert_kaxsp(head,q,a) |
313 | 367 | local g=true |
314 | - local f=ltj.inhibit_xsp_table[ltj.cx] | |
368 | + local f=ltj.get_inhibit_xsp_table(ltj.cx) | |
315 | 369 | if a%2 == 1 then |
316 | - if f then | |
317 | - if f%2==0 then g=false end | |
318 | - end | |
370 | + if f%2==0 then g=false end | |
319 | 371 | else |
320 | 372 | g=false |
321 | 373 | end |
@@ -387,8 +439,7 @@ function ltj.insks_around_hbox(head,q,p) | ||
387 | 439 | end |
388 | 440 | ltj.insert_skip=2 |
389 | 441 | elseif ltj.first_char then |
390 | - local a=ltj.inhibit_xsp_table[ltj.first_char.char] | |
391 | - if not a then a=3 end | |
442 | + local a=ltj.get_inhibit_xsp_table(ltj.first_char.char) | |
392 | 443 | if ltj.insert_skip==2 then |
393 | 444 | local g = node.new(node.id('glue')) |
394 | 445 | g.subtype=0; g.spec=node.copy(ltj.kanji_skip) |
@@ -409,8 +460,7 @@ function ltj.insks_around_hbox(head,q,p) | ||
409 | 460 | end |
410 | 461 | ltj.insert_skip=2 |
411 | 462 | elseif ltj.last_char then |
412 | - local a=ltj.inhibit_xsp_table[ltj.last_char.char] | |
413 | - if not a then a=3 end | |
463 | + local a=ltj.get_inhibit_xsp_table(ltj.last_char.char) | |
414 | 464 | if a>=2 then |
415 | 465 | ltj.insert_skip=1 |
416 | 466 | else |
@@ -428,7 +478,7 @@ end | ||
428 | 478 | function ltj.insks_around_penalty(head,q,p) |
429 | 479 | local r=node.next(p) |
430 | 480 | if r and node.type(r.id)=='glyph' then |
431 | - local a=ltj.inhibit_xsp_table[r.char] | |
481 | + local a=ltj.get_inhibit_xsp_table(r.char) | |
432 | 482 | if ltj.is_japanese_glyph_node(r) then |
433 | 483 | ltj.cx=r.char |
434 | 484 | if ltj.is_japanese_glyph_node(p) then |
@@ -441,7 +491,6 @@ function ltj.insks_around_penalty(head,q,p) | ||
441 | 491 | q=p; p=node.next(p) |
442 | 492 | ltj.insert_skip=2 |
443 | 493 | else |
444 | - if not a then a=3 end | |
445 | 494 | if ltj.insert_skip==2 then |
446 | 495 | ltj.insert_kaxsp(head,p,a) |
447 | 496 | end |
@@ -472,8 +521,7 @@ end | ||
472 | 521 | |
473 | 522 | -- Insert \xkanjiskip around p, a math_node |
474 | 523 | function ltj.insks_around_math(head,q,p) |
475 | - local a=ltj.inhibit_xsp_table['math'] | |
476 | - if not a then a=3 end | |
524 | + local a=ltj.get_inhibit_xsp_table('math') | |
477 | 525 | if (p.subtype==0) and (ltj.insert_skip==2) then |
478 | 526 | ltj.insert_kaxsp(head,q,a) |
479 | 527 | ltj.insert_skip=0 |
@@ -594,7 +642,6 @@ end | ||
594 | 642 | |
595 | 643 | --- the following function is modified from jafontspec.lua (by K. Maeda). |
596 | 644 | --- Instead of "%", we use U+FFFFF for suppressing spaces. |
597 | -utf = unicode.utf8 | |
598 | 645 | function ltj.process_input_buffer(buffer) |
599 | 646 | if utf.len(buffer) > 0 |
600 | 647 | and ltj.is_ucs_in_japanese_char(utf.byte(buffer, utf.len(buffer))) then |
@@ -1,28 +1,36 @@ | ||
1 | +% LuaTeX-ja core TeX source | |
2 | + | |
1 | 3 | \catcode`\@=11 |
2 | 4 | \catcode"FFFFF=14 %" |
3 | 5 | |
4 | 6 | \input luaotfload.sty |
7 | +\input xkeyval.tex | |
8 | +\input infwarerr.sty | |
5 | 9 | \ifdefined\luatexja@loaded\endinput\fi |
6 | 10 | \def\luatexja@loaded{hoge} |
7 | 11 | |
8 | 12 | \newcount\luatexja@tempcnta |
13 | +\newcount\luatexja@tempcntb | |
9 | 14 | \newdimen\luatexja@tempdima |
10 | -%\newcount\jcharwidowpenalty | |
11 | -\newskip\kanjiskip\kanjiskip=0pt minus.4pt | |
15 | + | |
16 | +\newcount\luatexja@autospc | |
17 | +\newcount\luatexja@autoxspc | |
18 | + | |
19 | +\newcount\jcharwidowpenalty | |
20 | +\newskip\kanjiskip | |
12 | 21 | \newskip\xkanjiskip |
13 | 22 | \newdimen\zw |
14 | 23 | \newdimen\zh |
15 | 24 | \newdimen\jQ \jQ=0.25mm |
16 | 25 | \newdimen\jH \jH=0.25mm |
17 | -\newcount\luatexja@autospc | |
18 | -\newcount\luatexja@autoxspc | |
19 | 26 | |
27 | +%%%%%%%% Loading lua files | |
20 | 28 | \directlua{% |
21 | 29 | utf = unicode.utf8 |
22 | 30 | ltj = {} |
23 | 31 | function ltj.loadlua(file) |
24 | 32 | local path = assert(kpse.find_file(file, 'tex'), |
25 | - "File '"..file.."' no found") | |
33 | + "File '"..file.."' not found") | |
26 | 34 | texio.write_nl("("..path..")") |
27 | 35 | dofile(path) |
28 | 36 | end |
@@ -33,58 +41,158 @@ | ||
33 | 41 | ltj.loadlua('luatexja-core-aux.lua') |
34 | 42 | } |
35 | 43 | |
36 | -% Attributes for Japanese typesetting. | |
44 | +%%%%%%%% Attributes for Japanese typesetting. | |
37 | 45 | \newluatexattribute\luatexja@curjfnt % index for ``current Japanese font'' |
38 | 46 | \newluatexattribute\luatexja@charclass % |
39 | 47 | \newluatexattribute\luatexja@yablshift % attribute for \yabaselineshift |
40 | 48 | \newluatexattribute\luatexja@ykblshift % attribute for \ykbaselineshift |
49 | +\newluatexattribute\luatexja@icflag % attribute for italic correction | |
50 | +\newlanguage\luatexja@japanese\directlua{ltj.ja_lang_number=\the\luatexja@japanese} | |
41 | 51 | |
42 | -% for italic correction | |
43 | -\newluatexattribute\luatexja@icflag | |
44 | -\let\luatexja@ic=\/ | |
45 | -\protected\def\/{{\luatexja@icflag=1\luatexja@ic}} | |
46 | - | |
47 | -% for hyphenation | |
48 | -\newlanguage\luatexja@japanese | |
49 | -\directlua{ltj.ja_lang_number=\the\luatexja@japanese} | |
52 | +%%%%%%%% \asluastring | |
53 | +\def\asluastring#1{'\luaescapestring{\detokenize{#1}}'} | |
50 | 54 | |
55 | +%%%%%%%% Redefine \/ | |
56 | +\let\luatexja@ic=\/ \protected\def\/{{\luatexja@icflag=1\luatexja@ic}} | |
51 | 57 | |
52 | -% \jfont\CS={...:...;jfm=metric;...} | |
53 | -\def\jfont{\afterassignment\@jfont\directlua{ltj.jfontdefX(true)}} | |
58 | +%%%%%%%% \jfont\CS={...:...;jfm=metric;...}, \gjfont | |
59 | +\def\jfont{\afterassignment\@jfont\directlua{ltj.jfontdefX('false')}} | |
60 | +\def\gjfont{\afterassignment\@jfont\directlua{ltj.jfontdefX('true')}} | |
54 | 61 | \def\@jfont{\directlua{ltj.jfontdefY()}} |
55 | 62 | |
56 | -% \loadjfontmetric<metric name><filename> : | |
57 | -% load <filename> which contains a font metric for a Japanese font. | |
58 | -\def\loadjfontmetric#1#2{% #1: key, #2: file name | |
59 | -\directlua{ | |
60 | - jfm.name='#1'; jfm.char_type={}; jfm.glue={}; jfm.kern={} | |
61 | - ltj.loadlua('luatj-#2.lua'); ltj.loadjfontmetric()} | |
63 | +%%%%%%%% \inhibitglue | |
64 | +\def\inhibitglue{\directlua{ltj.create_ihb_node()}} | |
65 | + | |
66 | +%%%%%%%% \setjaparameter | |
67 | + | |
68 | +% prebreakpenalty = {<char_code>, <penalty>} | |
69 | +\define@key[ltj]{japaram}{prebreakpenalty}{% | |
70 | + \expandafter\luatexja@setbp#1:{pre}} | |
71 | +\define@key[ltj]{japaram}{postbreakpenalty}{% | |
72 | + \expandafter\luatexja@setbp#1:{post}} | |
73 | +\def\luatexja@setbp#1,#2:#3{ | |
74 | + \luatexja@tempcnta=#1\relax | |
75 | + \luatexja@tempcntb=#2\relax | |
76 | + \directlua{ltj.set_penalty_table(\asluastring{#3}, | |
77 | + tex.getcount('luatexja@tempcnta'),tex.getcount('luatexja@tempcntb'))}} | |
78 | + | |
79 | +% yabaselineshift = <dimen> | |
80 | +\define@key[ltj]{japaram}{yabaselineshift}{% | |
81 | + \luatexja@tempdima=#1\relax% | |
82 | + \directlua{tex.setattribute(ltj.isglobal, | |
83 | + luatexbase.attributes['luatexja@yablshift'], | |
84 | + tex.getdimen('luatexja@tempdima'))}} | |
85 | +\define@key[ltj]{japaram}{ykbaselineshift}{% | |
86 | + \luatexja@tempdima=#1\relax% | |
87 | + \directlua{tex.setattribute(ltj.isglobal, | |
88 | + luatexbase.attributes['luatexja@ykblshift'], | |
89 | + tex.getdimen('luatexja@tempdima'))}} | |
90 | + | |
91 | +% cjkxspmode = {<char_code>, <mode>} | |
92 | +% mode: inhibit, preonly, postonly, allow | |
93 | +% or 0 2 1 3 | |
94 | +\define@key[ltj]{japaram}{cjkxspmode}{% \inhibitxspcode | |
95 | + \expandafter\luatexja@setjxspmode#1:\relax} | |
96 | +\def\luatexja@setjxspmode#1,#2:{% | |
97 | + \lowercase{\edef\ltj@temp{#2}}% | |
98 | + \def\ltj@tempa{inhibit}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{0}\fi | |
99 | + \def\ltj@tempa{preonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{2}\fi | |
100 | + \def\ltj@tempa{postonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{1}\fi | |
101 | + \def\ltj@tempa{allow}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{3}\fi | |
102 | + \luatexja@tempcnta=#1\relax\luatexja@tempcntb=\ltj@temp\relax | |
103 | + \directlua{ltj.set_inhibit_xsp_table(tex.getcount('luatexja@tempcnta'), | |
104 | + tex.getcount('luatexja@tempcntb'))}} | |
105 | + | |
106 | +% asciixspmode = {<char_code>, <mode>} | |
107 | +% mode: inhibit, preonly, postonly, allow | |
108 | +% or 0 1 2 3 | |
109 | +\define@key[ltj]{japaram}{asciixspmode}{% \inhibitxspcode | |
110 | + \expandafter\luatexja@setaxspmode#1:\relax} | |
111 | +\def\luatexja@setaxspmode#1,#2:{% | |
112 | + \lowercase{\edef\ltj@temp{#2}}% | |
113 | + \def\ltj@tempa{inhibit}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{0}\fi | |
114 | + \def\ltj@tempa{preonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{1}\fi | |
115 | + \def\ltj@tempa{postonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{2}\fi | |
116 | + \def\ltj@tempa{allow}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{3}\fi | |
117 | + \luatexja@tempcnta=#1\relax\luatexja@tempcntb=\ltj@temp\relax | |
118 | + \directlua{ltj.set_inhibit_xsp_table(tex.getcount('luatexja@tempcnta'), | |
119 | + tex.getcount('luatexja@tempcntb'))}} | |
120 | + | |
121 | +% autospacing = <bool> (default: true) | |
122 | +\define@boolkey[ltj]{japaram}{autospacing}[true]{% | |
123 | + \ifltj@japaram@autospacing | |
124 | + \directlua{ltj.auto_spacing=true}% | |
125 | + \else | |
126 | + \directlua{ltj.auto_spacing=false}% | |
127 | + \fi | |
128 | + } | |
129 | + | |
130 | +% autoxspacing = <bool> (default: true) | |
131 | +\define@boolkey[ltj]{japaram}{autoxspacing}[true]{% | |
132 | + \ifltj@japaram@autoxspacing | |
133 | + \directlua{ltj.auto_xspacing=true}% | |
134 | + \else | |
135 | + \directlua{ltj.auto_xspacing=false}% | |
136 | + \fi | |
137 | + } | |
138 | + | |
139 | +\define@key[ltj]{japaram}{kanjiskip}{% % SKIP | |
140 | + \directlua{ltj.print_global()}\kanjiskip=#1 } | |
141 | +\define@key[ltj]{japaram}{xkanjiskip}{% % SKIP | |
142 | + \directlua{ltj.print_global()}\xkanjiskip=#1 } | |
143 | +\define@key[ltj]{japaram}{jcharwidowpenalty}{% %COUNT | |
144 | + \directlua{ltj.print_global()}\jcharwidowpenalty=#1 } | |
145 | + | |
146 | +% differentjfm = { large | small | average | both } | |
147 | +\define@choicekey*+[ltj]{japaram}{differentjfm}[\ltj@temp\ltj@tempcnta]% | |
148 | + {large,small,average,both}{% | |
149 | + \ifcase\ltj@tempcnta | |
150 | + \directlua{ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_large}\or | |
151 | + \directlua{ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_small}\or | |
152 | + \directlua{ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_average}\or | |
153 | + \directlua{ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_both}% | |
154 | + \fi | |
155 | +}{\@PackageWarning{luatexja}{ignored invalid argument '#1' for 'differentjfm'}} | |
156 | + % large, small, average(OK), both(OK) | |
157 | + | |
158 | +\def\setjaparameter#1{\directlua{ltj.isglobal=''}% | |
159 | + \setkeys[ltj]{japaram}{#1}} | |
160 | +\def\globalsetjaparameter#1{\directlua{ltj.isglobal='global'}% | |
161 | + \setkeys[ltj]{japaram}{#1}} | |
162 | + | |
163 | +%%%%%%%% | |
164 | +\def\getjaparameter#1{% | |
165 | + \lowercase{\edef\ltj@temp{#1}}\let\@next=\getjaparameter@one% | |
166 | + \def\ltj@tempa{prebreakpenalty}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi | |
167 | + \def\ltj@tempa{postbreakpenalty}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi | |
168 | + \def\ltj@tempa{cjkxspmode}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi | |
169 | + \def\ltj@tempa{asciixspmode}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi | |
170 | + \@next | |
171 | +} | |
172 | +\def\getjaparameter@one{\directlua{ltj.out_ja_parameter_one('\ltj@temp')}} | |
173 | +\def\getjaparameter@two#1{% | |
174 | + \luatexja@tempcnta=#1 | |
175 | + \directlua{ltj.out_ja_parameter_two('\ltj@temp', tex.getcount('luatexja@tempcnta'))}% | |
62 | 176 | } |
63 | 177 | |
64 | -% ybaselineshift | |
65 | -\let\yabaselineshift=\luatexja@yablshift % 欧文文字 | |
66 | -\let\ykbaselineshift=\luatexja@ykblshift % 和文文字 | |
67 | -\luatexja@yablshift=0 \luatexja@ykblshift=0 | |
68 | - | |
69 | -% \inhibitxspcode, \xspcode | |
70 | -\def\setinhibitxspcode#1#2{\directlua{ltj.set_inhibit_xsp_table(#1,#2)}} | |
71 | -\def\getinhibitxspcode#1{\directlua{ltj.get_inhibit_xsp_table(#1)}} | |
72 | -\let\setxspcode=\setinhibitxspcode | |
73 | -\let\getxspcode=\getinhibitxspcode | |
74 | -% \prebreakpenalty, \postbreakpenalty | |
75 | -\def\setprebreakpenalty#1#2{\directlua{ltj.set_penalty_table('pre',#1,#2)}} | |
76 | -\def\setpostbreakpenalty#1#2{\directlua{ltj.set_penalty_table('post',#1,#2)}} | |
77 | -\def\getprebreakpenalty#1{\directlua{ltj.get_penalty_table('pre',#1)}} | |
78 | -\def\getpostbreakpenalty#1{\directlua{ltj.get_penalty_table('post',#1)}} | |
79 | - | |
80 | -\def\autospacing{\luatexja@autospc=0 } | |
81 | -\def\noautospacing{\luatexja@autospc=1 } | |
82 | -\def\autoxspacing{\luatexja@autoxspc=0 } | |
83 | -\def\noautoxspacing{\luatexja@autoxspc=1 } | |
84 | -\autospacing\autoxspacing | |
85 | -% \inhibitglue | |
86 | -\def\inhibitglue{\directlua{ltj.create_ihb_node()}} | |
87 | 178 | |
88 | -\input luatexja-kinsoku.tex | |
179 | + | |
180 | +%%%%%%%% commands for ``compatibility'' | |
181 | +% \def\setinhibitxspcode#1#2{\setjaparameter{cjkxspmode={#1,#2}}} | |
182 | +% \def\setxspcode#1#2{\setjaparameter{asciixspmode={#1,#2}}} | |
183 | +% \def\setprebreakpenalty#1#2{\setjaparameter{prebreakpenalty={#1,#2}}} | |
184 | +% \def\setpostbreakpenalty#1#2{\setjaparameter{prebreakpenalty={#1,#2}}} | |
185 | +% \def\getprebreakpenalty#1{\directlua{ltj.get_penalty_table('pre',#1)}\luatexja@tempcnta} | |
186 | +% \def\getpostbreakpenalty#1{\directlua{ltj.get_penalty_table('post',#1)}\luatexja@tempcnta} | |
187 | +% \def\autospacing{\luatexja@autospc=0 } | |
188 | +% \def\noautospacing{\luatexja@autospc=1 } | |
189 | +% \def\autoxspacing{\luatexja@autoxspc=0 } | |
190 | +% \def\noautoxspacing{\luatexja@autoxspc=1 } | |
191 | + | |
192 | +\def\ltj@temp{plain} | |
193 | +\ifx\fmtname\ltj@temp | |
194 | + \message{plain format: loading luatexja-plain.tex} | |
195 | +\fi | |
196 | +\input luatexja-plain.tex | |
89 | 197 | \catcode`\@=12 |
90 | 198 | \endinput |
@@ -33,24 +33,28 @@ function ltj.search_metric(key) | ||
33 | 33 | return nil |
34 | 34 | end |
35 | 35 | |
36 | -function ltj.loadjfontmetric() | |
37 | - if string.len(jfm.name)==0 then | |
38 | - ltj.error("the key of font metric is null"); return nil | |
39 | - elseif ltj.search_metric(jfm.name) then | |
40 | - ltj.error("the metric '" .. jfm.name .. "' is already loaded"); return nil | |
36 | +function ltj.load_jfont_metric() | |
37 | + if ltj.jfmfname=='' then | |
38 | + ltj.error('no JFM specified', | |
39 | + {[1]='To load and define a Japanese font, the name of JFM must be specified.', | |
40 | + [2]="The JFM 'ujis' will be used for now."}) | |
41 | + ltj.jfmfname='ujis' | |
42 | + end | |
43 | + jfm.name=ltj.jfmfname .. ':' .. ltj.jfmvar; | |
44 | + local i = ltj.search_metric(jfm.name) | |
45 | + local t = {} | |
46 | + if i then return i end | |
47 | + jfm.char_type={}; jfm.glue={}; jfm.kern={} | |
48 | + ltj.loadlua('jfm-' .. ltj.jfmfname .. '.lua'); | |
49 | + if jfm.dir~='yoko' then | |
50 | + ltj.error("jfm.dir must be 'yoko'", {}); return nil | |
41 | 51 | end |
42 | - if jfm.dir~='yoko' then | |
43 | - ltj.error("jfm.dir must be 'yoko'"); return nil | |
44 | - end | |
45 | - local t={} | |
46 | 52 | t.name=jfm.name |
47 | - t.dir=jfm.dir | |
48 | - t.zw=jfm.zw | |
49 | - t.zh=jfm.zh | |
53 | + t.dir=jfm.dir; t.zw=jfm.zw; t.zh=jfm.zh | |
50 | 54 | t.char_type=jfm.char_type |
51 | - t.glue=jfm.glue | |
52 | - t.kern=jfm.kern | |
55 | + t.glue=jfm.glue; t.kern=jfm.kern | |
53 | 56 | table.insert(ltj.metrics,t) |
57 | + return #ltj.metrics | |
54 | 58 | end |
55 | 59 | |
56 | 60 | function ltj.find_char_type(c,m) |
@@ -69,40 +73,40 @@ end | ||
69 | 73 | |
70 | 74 | --====== \setjfont\CS={...:...;jfm=metric;...} |
71 | 75 | |
72 | -function ltj.jfontdefX(b) | |
76 | +function ltj.jfontdefX(g) | |
73 | 77 | local t = token.get_next() |
74 | 78 | ltj.cstemp=token.csname_name(t) |
75 | - ltj.mettemp='' | |
79 | + if g then ltj.is_global = '\\global' else ltj.is_global = '' end | |
76 | 80 | tex.sprint('\\expandafter\\font\\csname ' .. ltj.cstemp .. '\\endcsname') |
77 | 81 | end |
82 | + | |
78 | 83 | function ltj.jfontdefY() -- for horizontal font |
79 | - local j=ltj.search_metric(ltj.mettemp) | |
80 | - if not j then | |
81 | - ltj.error("metric named '" .. ltj.mettemp .. "' didn't loaded") | |
82 | - return | |
83 | - end | |
84 | + local j=ltj.load_jfont_metric() | |
84 | 85 | local fn=font.id(ltj.cstemp) |
85 | 86 | local f = font.fonts[fn] |
86 | 87 | ltj.font_metric_table[fn]={} |
87 | 88 | ltj.font_metric_table[fn].jfm=j; ltj.font_metric_table[fn].size=f.size |
88 | - tex.sprint('\\protected\\expandafter\\def\\csname ' .. ltj.cstemp .. '\\endcsname' | |
89 | - .. '{\\csname luatexja@curjfnt\\endcsname=' .. fn | |
90 | - .. ' \\zw=' .. tex.round(f.size*ltj.metrics[j].zw) .. 'sp' | |
91 | - .. '\\zh=' .. tex.round(f.size*ltj.metrics[j].zh) .. 'sp\\relax}') | |
89 | + tex.sprint(ltj.is_global .. '\\protected\\expandafter\\def\\csname ' | |
90 | + .. ltj.cstemp .. '\\endcsname' | |
91 | + .. '{\\csname luatexja@curjfnt\\endcsname=' .. fn | |
92 | + .. ' \\zw=' .. tex.round(f.size*ltj.metrics[j].zw) .. 'sp' | |
93 | + .. '\\zh=' .. tex.round(f.size*ltj.metrics[j].zh) .. 'sp\\relax}') | |
92 | 94 | end |
93 | 95 | |
94 | - | |
95 | 96 | local dr_orig = fonts.define.read |
96 | 97 | function fonts.define.read(name, size, id) |
97 | - ltj.mettemp = ltj.determine_metric(name) | |
98 | - -- In hthe present imple., we don't remove "jfm=..." from name. | |
98 | + ltj.extract_metric(name) | |
99 | + -- In the present imple., we don't remove "jfm=..." from name. | |
99 | 100 | local fontdata = dr_orig(name, size, id) |
100 | 101 | return fontdata |
101 | 102 | end |
102 | 103 | |
103 | -function ltj.determine_metric(name) | |
104 | +-- extract ltj.jfmfname and ltj.jfmvar | |
105 | +function ltj.extract_metric(name) | |
104 | 106 | local basename=name |
105 | 107 | local tmp = utf.sub(basename, 1, 5) |
108 | + ltj.jfmfname = '' | |
109 | + ltj.jfmvar = '' | |
106 | 110 | if tmp == 'file:' or tmp == 'name:' or tmp == 'psft:' then |
107 | 111 | basename = utf.sub(basename, 6) |
108 | 112 | end |
@@ -110,16 +114,18 @@ function ltj.determine_metric(name) | ||
110 | 114 | local p = utf.find(basename, ":") |
111 | 115 | if p then |
112 | 116 | basename = utf.sub(basename, p+1) |
113 | - else return '' | |
117 | + else return | |
114 | 118 | end |
115 | 119 | |
116 | 120 | p=1 |
117 | 121 | while p do |
118 | 122 | local q= utf.find(basename, ";",p+1) or utf.len(basename)+1 |
119 | 123 | if utf.sub(basename,p,p+3)=='jfm=' and q>p+4 then |
120 | - return utf.sub(basename,p+4,q-1) | |
124 | + ltj.jfmfname = utf.sub(basename,p+4,q-1) | |
125 | + elseif utf.sub(basename,p,p+6)=='jfmvar=' and q>p+6 then | |
126 | + ltj.jfmvar = utf.sub(basename,p+7,q-1) | |
121 | 127 | end |
122 | 128 | if utf.len(basename)+1==q then p=nil else p=q+1 end |
123 | 129 | end |
124 | - return '' | |
130 | + return | |
125 | 131 | end |
@@ -1,352 +1,406 @@ | ||
1 | -%0}{0} | |
2 | -\setprebreakpenalty{33}{10000} | |
3 | -\setprebreakpenalty{34}{10000} | |
4 | -\setpostbreakpenalty{35}{500} | |
5 | -\setpostbreakpenalty{36}{500} | |
6 | -\setpostbreakpenalty{37}{500} | |
7 | -\setpostbreakpenalty{38}{500} | |
8 | -\setpostbreakpenalty{96}{10000} | |
9 | -\setprebreakpenalty{39}{10000} | |
10 | -\setprebreakpenalty{41}{10000} | |
11 | -\setpostbreakpenalty{40}{10000} | |
12 | -\setprebreakpenalty{42}{500} | |
13 | -\setprebreakpenalty{43}{500} | |
14 | -\setprebreakpenalty{45}{10000} | |
15 | -\setprebreakpenalty{46}{10000} | |
16 | -\setprebreakpenalty{44}{10000} | |
17 | -\setprebreakpenalty{47}{500} | |
18 | -\setprebreakpenalty{59}{10000} | |
19 | -\setprebreakpenalty{63}{10000} | |
20 | -\setprebreakpenalty{58}{10000} | |
21 | -\setprebreakpenalty{93}{10000} | |
22 | -\setpostbreakpenalty{91}{10000} | |
23 | -\setprebreakpenalty{12289}{10000} | |
24 | -\setprebreakpenalty{12290}{10000} | |
25 | -\setprebreakpenalty{65292}{10000} | |
26 | -\setprebreakpenalty{65294}{10000} | |
27 | -\setprebreakpenalty{12539}{10000} | |
28 | -\setprebreakpenalty{65306}{10000} | |
29 | -\setprebreakpenalty{65307}{10000} | |
30 | -\setprebreakpenalty{65311}{10000} | |
31 | -\setprebreakpenalty{65281}{10000} | |
32 | -\setprebreakpenalty{12443}{10000} | |
33 | -\setprebreakpenalty{12444}{10000} | |
34 | -\setprebreakpenalty{180}{10000} | |
35 | -\setpostbreakpenalty{65344}{10000} | |
36 | -\setprebreakpenalty{12293}{10000} | |
37 | -\setprebreakpenalty{8230}{250} | |
38 | -\setprebreakpenalty{8229}{250} | |
39 | -\setpostbreakpenalty{8216}{10000} | |
40 | -\setprebreakpenalty{8217}{10000} | |
41 | -\setpostbreakpenalty{8220}{10000} | |
42 | -\setprebreakpenalty{8221}{10000} | |
43 | -\setprebreakpenalty{65289}{10000} | |
44 | -\setpostbreakpenalty{65288}{10000} | |
45 | -\setprebreakpenalty{65373}{10000} | |
46 | -\setpostbreakpenalty{65371}{10000} | |
47 | -\setprebreakpenalty{65341}{10000} | |
48 | -\setpostbreakpenalty{65339}{10000} | |
49 | -\setpostbreakpenalty{12308}{10000} | |
50 | -\setprebreakpenalty{12309}{10000} | |
51 | -\setpostbreakpenalty{12296}{10000} | |
52 | -\setprebreakpenalty{12297}{10000} | |
53 | -\setpostbreakpenalty{12298}{10000} | |
54 | -\setprebreakpenalty{12299}{10000} | |
55 | -\setpostbreakpenalty{12300}{10000} | |
56 | -\setprebreakpenalty{12301}{10000} | |
57 | -\setpostbreakpenalty{12302}{10000} | |
58 | -\setprebreakpenalty{12303}{10000} | |
59 | -\setpostbreakpenalty{12304}{10000} | |
60 | -\setprebreakpenalty{12305}{10000} | |
61 | -\setprebreakpenalty{12540}{10000} | |
62 | -\setprebreakpenalty{65291}{200} | |
63 | -\setprebreakpenalty{8722}{200} | |
64 | -\setprebreakpenalty{65293}{200} | |
65 | -\setprebreakpenalty{65309}{200} | |
66 | -\setpostbreakpenalty{65283}{200} | |
67 | -\setpostbreakpenalty{65284}{200} | |
68 | -\setpostbreakpenalty{65285}{200} | |
69 | -\setpostbreakpenalty{65286}{200} | |
70 | -\setprebreakpenalty{12353}{150} | |
71 | -\setprebreakpenalty{12355}{150} | |
72 | -\setprebreakpenalty{12357}{150} | |
73 | -\setprebreakpenalty{12359}{150} | |
74 | -\setprebreakpenalty{12361}{150} | |
75 | -\setprebreakpenalty{12387}{150} | |
76 | -\setprebreakpenalty{12419}{150} | |
77 | -\setprebreakpenalty{12421}{150} | |
78 | -\setprebreakpenalty{12423}{150} | |
79 | -\setprebreakpenalty{12430}{150} | |
80 | -\setprebreakpenalty{12449}{150} | |
81 | -\setprebreakpenalty{12451}{150} | |
82 | -\setprebreakpenalty{12453}{150} | |
83 | -\setprebreakpenalty{12455}{150} | |
84 | -\setprebreakpenalty{12457}{150} | |
85 | -\setprebreakpenalty{12483}{150} | |
86 | -\setprebreakpenalty{12515}{150} | |
87 | -\setprebreakpenalty{12517}{150} | |
88 | -\setprebreakpenalty{12519}{150} | |
89 | -\setprebreakpenalty{12526}{150} | |
90 | -\setprebreakpenalty{12533}{150} | |
91 | -\setprebreakpenalty{12534}{150} | |
92 | -\setprebreakpenalty{12541}{10000} | |
93 | -\setprebreakpenalty{12542}{10000} | |
94 | -\setprebreakpenalty{12445}{10000} | |
95 | -\setprebreakpenalty{12446}{10000} | |
96 | -\setprebreakpenalty{12339}{10000} | |
97 | -\setprebreakpenalty{12340}{10000} | |
98 | -\setprebreakpenalty{12341}{10000} | |
99 | -\setprebreakpenalty{12347}{10000} | |
100 | -\setpostbreakpenalty{10629}{10000} | |
101 | -\setprebreakpenalty{10630}{10000} | |
102 | -\setpostbreakpenalty{65375}{10000} | |
103 | -\setprebreakpenalty{65376}{10000} | |
104 | -\setpostbreakpenalty{12312}{10000} | |
105 | -\setprebreakpenalty{12313}{10000} | |
106 | -\setpostbreakpenalty{12310}{10000} | |
107 | -\setprebreakpenalty{12311}{10000} | |
108 | -\setpostbreakpenalty{171}{10000} | |
109 | -\setprebreakpenalty{187}{10000} | |
110 | -\setpostbreakpenalty{12317}{10000} | |
111 | -\setprebreakpenalty{12319}{10000} | |
112 | -\setprebreakpenalty{8252}{10000} | |
113 | -\setprebreakpenalty{8263}{10000} | |
114 | -\setprebreakpenalty{8264}{10000} | |
115 | -\setprebreakpenalty{8265}{10000} | |
116 | -\setpostbreakpenalty{161}{10000} | |
117 | -\setpostbreakpenalty{191}{10000} | |
118 | -\setprebreakpenalty{720}{10000} | |
119 | -\setprebreakpenalty{170}{10000} | |
120 | -\setprebreakpenalty{186}{10000} | |
121 | -\setprebreakpenalty{185}{10000} | |
122 | -\setprebreakpenalty{178}{10000} | |
123 | -\setprebreakpenalty{179}{10000} | |
124 | -\setpostbreakpenalty{8364}{10000} | |
125 | -\setprebreakpenalty{12437}{150} | |
126 | -\setprebreakpenalty{12438}{150} | |
127 | -\setprebreakpenalty{12784}{150} | |
128 | -\setprebreakpenalty{12785}{150} | |
129 | -\setprebreakpenalty{12786}{150} | |
130 | -\setprebreakpenalty{12787}{150} | |
131 | -\setprebreakpenalty{12788}{150} | |
132 | -\setprebreakpenalty{12789}{150} | |
133 | -\setprebreakpenalty{12790}{150} | |
134 | -\setprebreakpenalty{12791}{150} | |
135 | -\setprebreakpenalty{12792}{150} | |
136 | -\setprebreakpenalty{12793}{150} | |
137 | -\setprebreakpenalty{12794}{150} | |
138 | -\setprebreakpenalty{12795}{150} | |
139 | -\setprebreakpenalty{12796}{150} | |
140 | -\setprebreakpenalty{12797}{150} | |
141 | -\setprebreakpenalty{12798}{150} | |
142 | -\setprebreakpenalty{12799}{150} | |
143 | -\setprebreakpenalty{8482}{10000} | |
144 | -\setprebreakpenalty{65377}{10000} | |
145 | -\setprebreakpenalty{65380}{10000} | |
146 | -\setprebreakpenalty{65438}{10000} | |
147 | -\setprebreakpenalty{65439}{10000} | |
148 | -\setprebreakpenalty{65379}{10000} | |
149 | -\setpostbreakpenalty{65378}{10000} | |
150 | -\setxspcode{40}{1} | |
151 | -\setxspcode{41}{2} | |
152 | -\setxspcode{91}{1} | |
153 | -\setxspcode{93}{2} | |
154 | -\setxspcode{96}{1} | |
155 | -\setxspcode{39}{2} | |
156 | -\setxspcode{59}{2} | |
157 | -\setxspcode{44}{2} | |
158 | -\setxspcode{46}{2} | |
159 | -\setxspcode{128}{3} | |
160 | -\setxspcode{129}{3} | |
161 | -\setxspcode{130}{3} | |
162 | -\setxspcode{131}{3} | |
163 | -\setxspcode{132}{3} | |
164 | -\setxspcode{133}{3} | |
165 | -\setxspcode{134}{3} | |
166 | -\setxspcode{135}{3} | |
167 | -\setxspcode{136}{3} | |
168 | -\setxspcode{137}{3} | |
169 | -\setxspcode{138}{3} | |
170 | -\setxspcode{139}{3} | |
171 | -\setxspcode{140}{3} | |
172 | -\setxspcode{141}{3} | |
173 | -\setxspcode{142}{3} | |
174 | -\setxspcode{143}{3} | |
175 | -\setxspcode{144}{3} | |
176 | -\setxspcode{145}{3} | |
177 | -\setxspcode{146}{3} | |
178 | -\setxspcode{147}{3} | |
179 | -\setxspcode{148}{3} | |
180 | -\setxspcode{149}{3} | |
181 | -\setxspcode{150}{3} | |
182 | -\setxspcode{151}{3} | |
183 | -\setxspcode{152}{3} | |
184 | -\setxspcode{153}{3} | |
185 | -\setxspcode{154}{3} | |
186 | -\setxspcode{155}{3} | |
187 | -\setxspcode{156}{3} | |
188 | -\setxspcode{157}{3} | |
189 | -\setxspcode{158}{3} | |
190 | -\setxspcode{159}{3} | |
191 | -\setxspcode{160}{3} | |
192 | -\setxspcode{161}{3} | |
193 | -\setxspcode{162}{3} | |
194 | -\setxspcode{163}{3} | |
195 | -\setxspcode{164}{3} | |
196 | -\setxspcode{165}{3} | |
197 | -\setxspcode{166}{3} | |
198 | -\setxspcode{167}{3} | |
199 | -\setxspcode{168}{3} | |
200 | -\setxspcode{169}{3} | |
201 | -\setxspcode{170}{3} | |
202 | -\setxspcode{171}{3} | |
203 | -\setxspcode{172}{3} | |
204 | -\setxspcode{173}{3} | |
205 | -\setxspcode{174}{3} | |
206 | -\setxspcode{175}{3} | |
207 | -\setxspcode{176}{3} | |
208 | -\setxspcode{177}{3} | |
209 | -\setxspcode{178}{3} | |
210 | -\setxspcode{179}{3} | |
211 | -\setxspcode{180}{3} | |
212 | -\setxspcode{181}{3} | |
213 | -\setxspcode{182}{3} | |
214 | -\setxspcode{183}{3} | |
215 | -\setxspcode{184}{3} | |
216 | -\setxspcode{185}{3} | |
217 | -\setxspcode{186}{3} | |
218 | -\setxspcode{187}{3} | |
219 | -\setxspcode{188}{3} | |
220 | -\setxspcode{189}{3} | |
221 | -\setxspcode{190}{3} | |
222 | -\setxspcode{191}{3} | |
223 | -\setxspcode{192}{3} | |
224 | -\setxspcode{193}{3} | |
225 | -\setxspcode{194}{3} | |
226 | -\setxspcode{195}{3} | |
227 | -\setxspcode{196}{3} | |
228 | -\setxspcode{197}{3} | |
229 | -\setxspcode{198}{3} | |
230 | -\setxspcode{199}{3} | |
231 | -\setxspcode{200}{3} | |
232 | -\setxspcode{201}{3} | |
233 | -\setxspcode{202}{3} | |
234 | -\setxspcode{203}{3} | |
235 | -\setxspcode{204}{3} | |
236 | -\setxspcode{205}{3} | |
237 | -\setxspcode{206}{3} | |
238 | -\setxspcode{207}{3} | |
239 | -\setxspcode{208}{3} | |
240 | -\setxspcode{209}{3} | |
241 | -\setxspcode{210}{3} | |
242 | -\setxspcode{211}{3} | |
243 | -\setxspcode{212}{3} | |
244 | -\setxspcode{213}{3} | |
245 | -\setxspcode{214}{3} | |
246 | -\setxspcode{215}{3} | |
247 | -\setxspcode{216}{3} | |
248 | -\setxspcode{217}{3} | |
249 | -\setxspcode{218}{3} | |
250 | -\setxspcode{219}{3} | |
251 | -\setxspcode{220}{3} | |
252 | -\setxspcode{221}{3} | |
253 | -\setxspcode{222}{3} | |
254 | -\setxspcode{223}{3} | |
255 | -\setxspcode{224}{3} | |
256 | -\setxspcode{225}{3} | |
257 | -\setxspcode{226}{3} | |
258 | -\setxspcode{227}{3} | |
259 | -\setxspcode{228}{3} | |
260 | -\setxspcode{229}{3} | |
261 | -\setxspcode{230}{3} | |
262 | -\setxspcode{231}{3} | |
263 | -\setxspcode{232}{3} | |
264 | -\setxspcode{233}{3} | |
265 | -\setxspcode{234}{3} | |
266 | -\setxspcode{235}{3} | |
267 | -\setxspcode{236}{3} | |
268 | -\setxspcode{237}{3} | |
269 | -\setxspcode{238}{3} | |
270 | -\setxspcode{239}{3} | |
271 | -\setxspcode{240}{3} | |
272 | -\setxspcode{241}{3} | |
273 | -\setxspcode{242}{3} | |
274 | -\setxspcode{243}{3} | |
275 | -\setxspcode{244}{3} | |
276 | -\setxspcode{245}{3} | |
277 | -\setxspcode{246}{3} | |
278 | -\setxspcode{247}{3} | |
279 | -\setxspcode{248}{3} | |
280 | -\setxspcode{249}{3} | |
281 | -\setxspcode{250}{3} | |
282 | -\setxspcode{251}{3} | |
283 | -\setxspcode{252}{3} | |
284 | -\setxspcode{253}{3} | |
285 | -\setxspcode{254}{3} | |
286 | -\setxspcode{255}{3} | |
287 | -\setinhibitxspcode{12289}{1} | |
288 | -\setinhibitxspcode{12290}{1} | |
289 | -\setinhibitxspcode{65292}{1} | |
290 | -\setinhibitxspcode{65294}{1} | |
291 | -\setinhibitxspcode{65307}{1} | |
292 | -\setinhibitxspcode{65311}{1} | |
293 | -\setinhibitxspcode{65289}{1} | |
294 | -\setinhibitxspcode{65288}{2} | |
295 | -\setinhibitxspcode{65341}{1} | |
296 | -\setinhibitxspcode{65339}{2} | |
297 | -\setinhibitxspcode{65373}{1} | |
298 | -\setinhibitxspcode{65371}{2} | |
299 | -\setinhibitxspcode{8216}{2} | |
300 | -\setinhibitxspcode{8217}{1} | |
301 | -\setinhibitxspcode{8220}{2} | |
302 | -\setinhibitxspcode{8221}{1} | |
303 | -\setinhibitxspcode{12308}{2} | |
304 | -\setinhibitxspcode{12309}{1} | |
305 | -\setinhibitxspcode{12296}{2} | |
306 | -\setinhibitxspcode{12297}{1} | |
307 | -\setinhibitxspcode{12298}{2} | |
308 | -\setinhibitxspcode{12299}{1} | |
309 | -\setinhibitxspcode{12300}{2} | |
310 | -\setinhibitxspcode{12301}{1} | |
311 | -\setinhibitxspcode{12302}{2} | |
312 | -\setinhibitxspcode{12303}{1} | |
313 | -\setinhibitxspcode{12304}{2} | |
314 | -\setinhibitxspcode{12305}{1} | |
315 | -\setinhibitxspcode{8212}{0} | |
316 | -\setinhibitxspcode{8213}{0} | |
317 | -\setinhibitxspcode{12316}{0} | |
318 | -\setinhibitxspcode{65374}{0} | |
319 | -\setinhibitxspcode{8230}{0} | |
320 | -\setinhibitxspcode{165}{0} | |
321 | -\setinhibitxspcode{65509}{0} | |
322 | -\setinhibitxspcode{176}{1} | |
323 | -\setinhibitxspcode{8242}{1} | |
324 | -\setinhibitxspcode{8243}{1} | |
325 | -\setinhibitxspcode{10629}{2} | |
326 | -\setinhibitxspcode{10630}{1} | |
327 | -\setinhibitxspcode{65375}{2} | |
328 | -\setinhibitxspcode{65376}{1} | |
329 | -\setinhibitxspcode{12312}{2} | |
330 | -\setinhibitxspcode{12313}{1} | |
331 | -\setinhibitxspcode{12310}{2} | |
332 | -\setinhibitxspcode{12311}{1} | |
333 | -\setinhibitxspcode{171}{2} | |
334 | -\setinhibitxspcode{187}{1} | |
335 | -\setinhibitxspcode{12317}{2} | |
336 | -\setinhibitxspcode{12319}{1} | |
337 | -\setinhibitxspcode{8252}{1} | |
338 | -\setinhibitxspcode{8263}{1} | |
339 | -\setinhibitxspcode{8264}{1} | |
340 | -\setinhibitxspcode{8265}{1} | |
341 | -\setinhibitxspcode{161}{2} | |
342 | -\setinhibitxspcode{191}{2} | |
343 | -\setinhibitxspcode{170}{1} | |
344 | -\setinhibitxspcode{186}{1} | |
345 | -\setinhibitxspcode{185}{1} | |
346 | -\setinhibitxspcode{178}{1} | |
347 | -\setinhibitxspcode{179}{1} | |
348 | -\setinhibitxspcode{8364}{2} | |
349 | -\setinhibitxspcode{8482}{1} | |
350 | -\setinhibitxspcode{65377}{1} | |
351 | -\setinhibitxspcode{65380}{1} | |
352 | -\setinhibitxspcode{65378}{2} | |
1 | +% | |
2 | +% 行頭、行末禁則パラメータ | |
3 | +% | |
4 | +% 1byte characters | |
5 | +\setjaparameter{prebreakpenalty={`!,10000}} | |
6 | +\setjaparameter{prebreakpenalty={`",10000}} | |
7 | +\setjaparameter{postbreakpenalty={`\#,500}} | |
8 | +\setjaparameter{postbreakpenalty={`\$,500}} | |
9 | +\setjaparameter{postbreakpenalty={`\%,500}} | |
10 | +\setjaparameter{postbreakpenalty={`\&,500}} | |
11 | +\setjaparameter{postbreakpenalty={`\`,10000}} | |
12 | +\setjaparameter{prebreakpenalty={`',10000}} | |
13 | +\setjaparameter{prebreakpenalty={`),10000}} | |
14 | +\setjaparameter{postbreakpenalty={`(,10000}} | |
15 | +\setjaparameter{prebreakpenalty={`*,500}} | |
16 | +\setjaparameter{prebreakpenalty={`+,500}} | |
17 | +\setjaparameter{prebreakpenalty={`-,10000}} | |
18 | +\setjaparameter{prebreakpenalty={`.,10000}} | |
19 | +\setjaparameter{prebreakpenalty={47,10000}} | |
20 | +\setjaparameter{prebreakpenalty={`/,500}} | |
21 | +\setjaparameter{prebreakpenalty={`;,10000}} | |
22 | +\setjaparameter{prebreakpenalty={`?,10000}} | |
23 | +\setjaparameter{prebreakpenalty={`:,10000}} | |
24 | +\setjaparameter{prebreakpenalty={`],10000}} | |
25 | +\setjaparameter{postbreakpenalty={`[,10000}} | |
26 | +%全角文字 | |
27 | +\setjaparameter{prebreakpenalty={`、,10000}} | |
28 | +\setjaparameter{prebreakpenalty={`。,10000}} | |
29 | +\setjaparameter{prebreakpenalty={`,,10000}} | |
30 | +\setjaparameter{prebreakpenalty={`.,10000}} | |
31 | +\setjaparameter{prebreakpenalty={`・,10000}} | |
32 | +\setjaparameter{prebreakpenalty={`:,10000}} | |
33 | +\setjaparameter{prebreakpenalty={`;,10000}} | |
34 | +\setjaparameter{prebreakpenalty={`?,10000}} | |
35 | +\setjaparameter{prebreakpenalty={`!,10000}} | |
36 | +\setjaparameter{prebreakpenalty={`゛,10000}}%\jis"212B | |
37 | +\setjaparameter{prebreakpenalty={`゜,10000}}%\jis"212C | |
38 | +\setjaparameter{prebreakpenalty={`´,10000}}%\jis"212D | |
39 | +\setjaparameter{postbreakpenalty={``,10000}}%\jis"212E | |
40 | +\setjaparameter{prebreakpenalty={`々,10000}}%\jis"2139 | |
41 | +\setjaparameter{prebreakpenalty={`…,250}}%\jis"2144 | |
42 | +\setjaparameter{prebreakpenalty={`‥,250}}%\jis"2145 | |
43 | +\setjaparameter{postbreakpenalty={`‘,10000}}%\jis"2146 | |
44 | +\setjaparameter{prebreakpenalty={`’,10000}}%\jis"2147 | |
45 | +\setjaparameter{postbreakpenalty={`“,10000}}%\jis"2148 | |
46 | +\setjaparameter{prebreakpenalty={`”,10000}}%\jis"2149 | |
47 | +\setjaparameter{prebreakpenalty={`),10000}} | |
48 | +\setjaparameter{postbreakpenalty={`(,10000}} | |
49 | +\setjaparameter{prebreakpenalty={`},10000}} | |
50 | +\setjaparameter{postbreakpenalty={`{,10000}} | |
51 | +\setjaparameter{prebreakpenalty={`],10000}} | |
52 | +\setjaparameter{postbreakpenalty={`[,10000}} | |
53 | +%\setjaparameter{postbreakpenalty={`‘,10000}} | |
54 | +%\setjaparameter{prebreakpenalty={`’,10000}} | |
55 | +\setjaparameter{postbreakpenalty={`〔,10000}}%\jis"214C | |
56 | +\setjaparameter{prebreakpenalty={`〕,10000}}%\jis"214D | |
57 | +\setjaparameter{postbreakpenalty={`〈,10000}}%\jis"2152 | |
58 | +\setjaparameter{prebreakpenalty={`〉,10000}}%\jis"2153 | |
59 | +\setjaparameter{postbreakpenalty={`《,10000}}%\jis"2154 | |
60 | +\setjaparameter{prebreakpenalty={`》,10000}}%\jis"2155 | |
61 | +\setjaparameter{postbreakpenalty={`「,10000}}%\jis"2156 | |
62 | +\setjaparameter{prebreakpenalty={`」,10000}}%\jis"2157 | |
63 | +\setjaparameter{postbreakpenalty={`『,10000}}%\jis"2158 | |
64 | +\setjaparameter{prebreakpenalty={`』,10000}}%\jis"2159 | |
65 | +\setjaparameter{postbreakpenalty={`【,10000}}%\jis"215A | |
66 | +\setjaparameter{prebreakpenalty={`】,10000}}%\jis"215B | |
67 | +\setjaparameter{prebreakpenalty={`ー,10000}} | |
68 | +\setjaparameter{prebreakpenalty={`+,200}} | |
69 | +\setjaparameter{prebreakpenalty={`−,200}}% U+2212 MINUS SIGN | |
70 | +\setjaparameter{prebreakpenalty={`-,200}}% U+FF0D FULLWIDTH HYPHEN-MINUS | |
71 | +\setjaparameter{prebreakpenalty={`=,200}} | |
72 | +\setjaparameter{postbreakpenalty={`#,200}} | |
73 | +\setjaparameter{postbreakpenalty={`$,200}} | |
74 | +\setjaparameter{postbreakpenalty={`%,200}} | |
75 | +\setjaparameter{postbreakpenalty={`&,200}} | |
76 | +\setjaparameter{prebreakpenalty={`ぁ,150}} | |
77 | +\setjaparameter{prebreakpenalty={`ぃ,150}} | |
78 | +\setjaparameter{prebreakpenalty={`ぅ,150}} | |
79 | +\setjaparameter{prebreakpenalty={`ぇ,150}} | |
80 | +\setjaparameter{prebreakpenalty={`ぉ,150}} | |
81 | +\setjaparameter{prebreakpenalty={`っ,150}} | |
82 | +\setjaparameter{prebreakpenalty={`ゃ,150}} | |
83 | +\setjaparameter{prebreakpenalty={`ゅ,150}} | |
84 | +\setjaparameter{prebreakpenalty={`ょ,150}} | |
85 | +\setjaparameter{prebreakpenalty={`ゎ,150}}%\jis"246E | |
86 | +\setjaparameter{prebreakpenalty={`ァ,150}} | |
87 | +\setjaparameter{prebreakpenalty={`ィ,150}} | |
88 | +\setjaparameter{prebreakpenalty={`ゥ,150}} | |
89 | +\setjaparameter{prebreakpenalty={`ェ,150}} | |
90 | +\setjaparameter{prebreakpenalty={`ォ,150}} | |
91 | +\setjaparameter{prebreakpenalty={`ッ,150}} | |
92 | +\setjaparameter{prebreakpenalty={`ャ,150}} | |
93 | +\setjaparameter{prebreakpenalty={`ュ,150}} | |
94 | +\setjaparameter{prebreakpenalty={`ョ,150}} | |
95 | +\setjaparameter{prebreakpenalty={`ヮ,150}}%\jis"256E | |
96 | +\setjaparameter{prebreakpenalty={`ヵ,150}}%\jis"2575 | |
97 | +\setjaparameter{prebreakpenalty={`ヶ,150}}%\jis"2576 | |
98 | +% kinsoku JIS X 0208 additional | |
99 | +\setjaparameter{prebreakpenalty={`ヽ,10000}} | |
100 | +\setjaparameter{prebreakpenalty={`ヾ,10000}} | |
101 | +\setjaparameter{prebreakpenalty={`ゝ,10000}} | |
102 | +\setjaparameter{prebreakpenalty={`ゞ,10000}} | |
103 | + | |
104 | +% | |
105 | +% kinsoku JIS X 0213 | |
106 | +% | |
107 | +\setjaparameter{prebreakpenalty={`〳,10000}} | |
108 | +\setjaparameter{prebreakpenalty={`〴,10000}} | |
109 | +\setjaparameter{prebreakpenalty={`〵,10000}} | |
110 | +\setjaparameter{prebreakpenalty={`〻,10000}} | |
111 | +\setjaparameter{postbreakpenalty={`⦅,10000}} | |
112 | +\setjaparameter{prebreakpenalty={`⦆,10000}} | |
113 | +\setjaparameter{postbreakpenalty={`⦅,10000}} | |
114 | +\setjaparameter{prebreakpenalty={`⦆,10000}} | |
115 | +\setjaparameter{postbreakpenalty={`〘,10000}} | |
116 | +\setjaparameter{prebreakpenalty={`〙,10000}} | |
117 | +\setjaparameter{postbreakpenalty={`〖,10000}} | |
118 | +\setjaparameter{prebreakpenalty={`〗,10000}} | |
119 | +\setjaparameter{postbreakpenalty={`«,10000}} | |
120 | +\setjaparameter{prebreakpenalty={`»,10000}} | |
121 | +\setjaparameter{postbreakpenalty={`〝,10000}} | |
122 | +\setjaparameter{prebreakpenalty={`〟,10000}} | |
123 | +\setjaparameter{prebreakpenalty={`‼,10000}} | |
124 | +\setjaparameter{prebreakpenalty={`⁇,10000}} | |
125 | +\setjaparameter{prebreakpenalty={`⁈,10000}} | |
126 | +\setjaparameter{prebreakpenalty={`⁉,10000}} | |
127 | +\setjaparameter{postbreakpenalty={`¡,10000}} | |
128 | +\setjaparameter{postbreakpenalty={`¿,10000}} | |
129 | +\setjaparameter{prebreakpenalty={`ː,10000}} | |
130 | +\setjaparameter{prebreakpenalty={`ª,10000}} | |
131 | +\setjaparameter{prebreakpenalty={`º,10000}} | |
132 | +\setjaparameter{prebreakpenalty={`¹,10000}} | |
133 | +\setjaparameter{prebreakpenalty={`²,10000}} | |
134 | +\setjaparameter{prebreakpenalty={`³,10000}} | |
135 | +\setjaparameter{postbreakpenalty={`€,10000}} | |
136 | +\setjaparameter{prebreakpenalty={`ゕ,150}} | |
137 | +\setjaparameter{prebreakpenalty={`ゖ,150}} | |
138 | +\setjaparameter{prebreakpenalty={`ㇰ,150}} | |
139 | +\setjaparameter{prebreakpenalty={`ㇱ,150}} | |
140 | +\setjaparameter{prebreakpenalty={`ㇲ,150}} | |
141 | +\setjaparameter{prebreakpenalty={`ㇳ,150}} | |
142 | +\setjaparameter{prebreakpenalty={`ㇴ,150}} | |
143 | +\setjaparameter{prebreakpenalty={`ㇵ,150}} | |
144 | +\setjaparameter{prebreakpenalty={`ㇶ,150}} | |
145 | +\setjaparameter{prebreakpenalty={`ㇷ,150}} | |
146 | +\setjaparameter{prebreakpenalty={`ㇸ,150}} | |
147 | +\setjaparameter{prebreakpenalty={`ㇹ,150}} | |
148 | +%\setjaparameter{prebreakpenalty={`ㇷ゚,150}} | |
149 | +\setjaparameter{prebreakpenalty={`ㇺ,150}} | |
150 | +\setjaparameter{prebreakpenalty={`ㇻ,150}} | |
151 | +\setjaparameter{prebreakpenalty={`ㇼ,150}} | |
152 | +\setjaparameter{prebreakpenalty={`ㇽ,150}} | |
153 | +\setjaparameter{prebreakpenalty={`ㇾ,150}} | |
154 | +\setjaparameter{prebreakpenalty={`ㇿ,150}} | |
155 | +% | |
156 | +% kinsoku JIS X 0212 | |
157 | +% | |
158 | +%\setjaparameter{postbreakpenalty={`¡,10000}} | |
159 | +%\setjaparameter{postbreakpenalty={`¿,10000}} | |
160 | +%\setjaparameter{prebreakpenalty={`º,10000}} | |
161 | +%\setjaparameter{prebreakpenalty={`ª,10000}} | |
162 | +\setjaparameter{prebreakpenalty={`™,10000}} | |
163 | +% | |
164 | +% kinsoku 半角片仮名 | |
165 | +% | |
166 | +\setjaparameter{prebreakpenalty={`。,10000}} | |
167 | +\setjaparameter{prebreakpenalty={`、,10000}} | |
168 | +\setjaparameter{prebreakpenalty={`゙,10000}} | |
169 | +\setjaparameter{prebreakpenalty={`゚,10000}} | |
170 | +\setjaparameter{prebreakpenalty={`」,10000}} | |
171 | +\setjaparameter{postbreakpenalty={`「,10000}} | |
172 | +% | |
173 | +% xspcode | |
174 | +\setjaparameter{asciixspmode={`(,preonly}} | |
175 | +\setjaparameter{asciixspmode={`),postonly}} | |
176 | +\setjaparameter{asciixspmode={`[,preonly}} | |
177 | +\setjaparameter{asciixspmode={`],postonly}} | |
178 | +\setjaparameter{asciixspmode={``,preonly}} | |
179 | +\setjaparameter{asciixspmode={`',postonly}} | |
180 | +\setjaparameter{asciixspmode={`;,postonly}} | |
181 | +\setjaparameter{asciixspmode={47,postonly}} | |
182 | +\setjaparameter{asciixspmode={`.,postonly}} | |
183 | +% for 8bit Latin | |
184 | +\setjaparameter{asciixspmode={"80,allow}} | |
185 | +\setjaparameter{asciixspmode={"81,allow}} | |
186 | +\setjaparameter{asciixspmode={"82,allow}} | |
187 | +\setjaparameter{asciixspmode={"83,allow}} | |
188 | +\setjaparameter{asciixspmode={"84,allow}} | |
189 | +\setjaparameter{asciixspmode={"85,allow}} | |
190 | +\setjaparameter{asciixspmode={"86,allow}} | |
191 | +\setjaparameter{asciixspmode={"87,allow}} | |
192 | +\setjaparameter{asciixspmode={"88,allow}} | |
193 | +\setjaparameter{asciixspmode={"89,allow}} | |
194 | +\setjaparameter{asciixspmode={"8A,allow}} | |
195 | +\setjaparameter{asciixspmode={"8B,allow}} | |
196 | +\setjaparameter{asciixspmode={"8C,allow}} | |
197 | +\setjaparameter{asciixspmode={"8D,allow}} | |
198 | +\setjaparameter{asciixspmode={"8E,allow}} | |
199 | +\setjaparameter{asciixspmode={"8F,allow}} | |
200 | +\setjaparameter{asciixspmode={"90,allow}} | |
201 | +\setjaparameter{asciixspmode={"91,allow}} | |
202 | +\setjaparameter{asciixspmode={"92,allow}} | |
203 | +\setjaparameter{asciixspmode={"93,allow}} | |
204 | +\setjaparameter{asciixspmode={"94,allow}} | |
205 | +\setjaparameter{asciixspmode={"95,allow}} | |
206 | +\setjaparameter{asciixspmode={"96,allow}} | |
207 | +\setjaparameter{asciixspmode={"97,allow}} | |
208 | +\setjaparameter{asciixspmode={"98,allow}} | |
209 | +\setjaparameter{asciixspmode={"99,allow}} | |
210 | +\setjaparameter{asciixspmode={"9A,allow}} | |
211 | +\setjaparameter{asciixspmode={"9B,allow}} | |
212 | +\setjaparameter{asciixspmode={"9C,allow}} | |
213 | +\setjaparameter{asciixspmode={"9D,allow}} | |
214 | +\setjaparameter{asciixspmode={"9E,allow}} | |
215 | +\setjaparameter{asciixspmode={"9F,allow}} | |
216 | +\setjaparameter{asciixspmode={"A0,allow}} | |
217 | +\setjaparameter{asciixspmode={"A1,allow}} | |
218 | +\setjaparameter{asciixspmode={"A2,allow}} | |
219 | +\setjaparameter{asciixspmode={"A3,allow}} | |
220 | +\setjaparameter{asciixspmode={"A4,allow}} | |
221 | +\setjaparameter{asciixspmode={"A5,allow}} | |
222 | +\setjaparameter{asciixspmode={"A6,allow}} | |
223 | +\setjaparameter{asciixspmode={"A7,allow}} | |
224 | +\setjaparameter{asciixspmode={"A8,allow}} | |
225 | +\setjaparameter{asciixspmode={"A9,allow}} | |
226 | +\setjaparameter{asciixspmode={"AA,allow}} | |
227 | +\setjaparameter{asciixspmode={"AB,allow}} | |
228 | +\setjaparameter{asciixspmode={"AC,allow}} | |
229 | +\setjaparameter{asciixspmode={"AD,allow}} | |
230 | +\setjaparameter{asciixspmode={"AE,allow}} | |
231 | +\setjaparameter{asciixspmode={"AF,allow}} | |
232 | +\setjaparameter{asciixspmode={"B0,allow}} | |
233 | +\setjaparameter{asciixspmode={"B1,allow}} | |
234 | +\setjaparameter{asciixspmode={"B2,allow}} | |
235 | +\setjaparameter{asciixspmode={"B3,allow}} | |
236 | +\setjaparameter{asciixspmode={"B4,allow}} | |
237 | +\setjaparameter{asciixspmode={"B5,allow}} | |
238 | +\setjaparameter{asciixspmode={"B6,allow}} | |
239 | +\setjaparameter{asciixspmode={"B7,allow}} | |
240 | +\setjaparameter{asciixspmode={"B8,allow}} | |
241 | +\setjaparameter{asciixspmode={"B9,allow}} | |
242 | +\setjaparameter{asciixspmode={"BA,allow}} | |
243 | +\setjaparameter{asciixspmode={"BB,allow}} | |
244 | +\setjaparameter{asciixspmode={"BC,allow}} | |
245 | +\setjaparameter{asciixspmode={"BD,allow}} | |
246 | +\setjaparameter{asciixspmode={"BE,allow}} | |
247 | +\setjaparameter{asciixspmode={"BF,allow}} | |
248 | +\setjaparameter{asciixspmode={"C0,allow}} | |
249 | +\setjaparameter{asciixspmode={"C1,allow}} | |
250 | +\setjaparameter{asciixspmode={"C2,allow}} | |
251 | +\setjaparameter{asciixspmode={"C3,allow}} | |
252 | +\setjaparameter{asciixspmode={"C4,allow}} | |
253 | +\setjaparameter{asciixspmode={"C5,allow}} | |
254 | +\setjaparameter{asciixspmode={"C6,allow}} | |
255 | +\setjaparameter{asciixspmode={"C7,allow}} | |
256 | +\setjaparameter{asciixspmode={"C8,allow}} | |
257 | +\setjaparameter{asciixspmode={"C9,allow}} | |
258 | +\setjaparameter{asciixspmode={"CA,allow}} | |
259 | +\setjaparameter{asciixspmode={"CB,allow}} | |
260 | +\setjaparameter{asciixspmode={"CC,allow}} | |
261 | +\setjaparameter{asciixspmode={"CD,allow}} | |
262 | +\setjaparameter{asciixspmode={"CE,allow}} | |
263 | +\setjaparameter{asciixspmode={"CF,allow}} | |
264 | +\setjaparameter{asciixspmode={"D0,allow}} | |
265 | +\setjaparameter{asciixspmode={"D1,allow}} | |
266 | +\setjaparameter{asciixspmode={"D2,allow}} | |
267 | +\setjaparameter{asciixspmode={"D3,allow}} | |
268 | +\setjaparameter{asciixspmode={"D4,allow}} | |
269 | +\setjaparameter{asciixspmode={"D5,allow}} | |
270 | +\setjaparameter{asciixspmode={"D6,allow}} | |
271 | +\setjaparameter{asciixspmode={"D7,allow}} | |
272 | +\setjaparameter{asciixspmode={"D8,allow}} | |
273 | +\setjaparameter{asciixspmode={"D9,allow}} | |
274 | +\setjaparameter{asciixspmode={"DA,allow}} | |
275 | +\setjaparameter{asciixspmode={"DB,allow}} | |
276 | +\setjaparameter{asciixspmode={"DC,allow}} | |
277 | +\setjaparameter{asciixspmode={"DD,allow}} | |
278 | +\setjaparameter{asciixspmode={"DE,allow}} | |
279 | +\setjaparameter{asciixspmode={"DF,allow}} | |
280 | +\setjaparameter{asciixspmode={"E0,allow}} | |
281 | +\setjaparameter{asciixspmode={"E1,allow}} | |
282 | +\setjaparameter{asciixspmode={"E2,allow}} | |
283 | +\setjaparameter{asciixspmode={"E3,allow}} | |
284 | +\setjaparameter{asciixspmode={"E4,allow}} | |
285 | +\setjaparameter{asciixspmode={"E5,allow}} | |
286 | +\setjaparameter{asciixspmode={"E6,allow}} | |
287 | +\setjaparameter{asciixspmode={"E7,allow}} | |
288 | +\setjaparameter{asciixspmode={"E8,allow}} | |
289 | +\setjaparameter{asciixspmode={"E9,allow}} | |
290 | +\setjaparameter{asciixspmode={"EA,allow}} | |
291 | +\setjaparameter{asciixspmode={"EB,allow}} | |
292 | +\setjaparameter{asciixspmode={"EC,allow}} | |
293 | +\setjaparameter{asciixspmode={"ED,allow}} | |
294 | +\setjaparameter{asciixspmode={"EE,allow}} | |
295 | +\setjaparameter{asciixspmode={"EF,allow}} | |
296 | +\setjaparameter{asciixspmode={"F0,allow}} | |
297 | +\setjaparameter{asciixspmode={"F1,allow}} | |
298 | +\setjaparameter{asciixspmode={"F2,allow}} | |
299 | +\setjaparameter{asciixspmode={"F3,allow}} | |
300 | +\setjaparameter{asciixspmode={"F4,allow}} | |
301 | +\setjaparameter{asciixspmode={"F5,allow}} | |
302 | +\setjaparameter{asciixspmode={"F6,allow}} | |
303 | +\setjaparameter{asciixspmode={"F7,allow}} | |
304 | +\setjaparameter{asciixspmode={"F8,allow}} | |
305 | +\setjaparameter{asciixspmode={"F9,allow}} | |
306 | +\setjaparameter{asciixspmode={"FA,allow}} | |
307 | +\setjaparameter{asciixspmode={"FB,allow}} | |
308 | +\setjaparameter{asciixspmode={"FC,allow}} | |
309 | +\setjaparameter{asciixspmode={"FD,allow}} | |
310 | +\setjaparameter{asciixspmode={"FE,allow}} | |
311 | +\setjaparameter{asciixspmode={"FF,allow}} | |
312 | +% | |
313 | +% inhibitxspcode | |
314 | +\setjaparameter{cjkxspmode={`、,postonly}} | |
315 | +\setjaparameter{cjkxspmode={`。,postonly}} | |
316 | +\setjaparameter{cjkxspmode={`,,postonly}} | |
317 | +\setjaparameter{cjkxspmode={`.,postonly}} | |
318 | +\setjaparameter{cjkxspmode={`;,postonly}} | |
319 | +\setjaparameter{cjkxspmode={`?,postonly}} | |
320 | +\setjaparameter{cjkxspmode={`),postonly}} | |
321 | +\setjaparameter{cjkxspmode={`(,preonly}} | |
322 | +\setjaparameter{cjkxspmode={`],postonly}} | |
323 | +\setjaparameter{cjkxspmode={`[,preonly}} | |
324 | +\setjaparameter{cjkxspmode={`},postonly}} | |
325 | +\setjaparameter{cjkxspmode={`{,preonly}} | |
326 | +\setjaparameter{cjkxspmode={`‘,preonly}} | |
327 | +\setjaparameter{cjkxspmode={`’,postonly}} | |
328 | +\setjaparameter{cjkxspmode={`“,preonly}} | |
329 | +\setjaparameter{cjkxspmode={`”,postonly}} | |
330 | +\setjaparameter{cjkxspmode={`〔,preonly}} | |
331 | +\setjaparameter{cjkxspmode={`〕,postonly}} | |
332 | +\setjaparameter{cjkxspmode={`〈,preonly}} | |
333 | +\setjaparameter{cjkxspmode={`〉,postonly}} | |
334 | +\setjaparameter{cjkxspmode={`《,preonly}} | |
335 | +\setjaparameter{cjkxspmode={`》,postonly}} | |
336 | +\setjaparameter{cjkxspmode={`「,preonly}} | |
337 | +\setjaparameter{cjkxspmode={`」,postonly}} | |
338 | +\setjaparameter{cjkxspmode={`『,preonly}} | |
339 | +\setjaparameter{cjkxspmode={`』,postonly}} | |
340 | +\setjaparameter{cjkxspmode={`【,preonly}} | |
341 | +\setjaparameter{cjkxspmode={`】,postonly}} | |
342 | +\setjaparameter{cjkxspmode={`—,inhibit}}% U+2014 EM DASH | |
343 | +\setjaparameter{cjkxspmode={`―,inhibit}}% U+2015 HORIZONTAL BAR | |
344 | +\setjaparameter{cjkxspmode={`〜,inhibit}}% U+301C WAVE DASH | |
345 | +\setjaparameter{cjkxspmode={`~,inhibit}}% U+FF5E FULLWIDTH TILDE | |
346 | +\setjaparameter{cjkxspmode={`…,inhibit}} | |
347 | +\setjaparameter{cjkxspmode={`¥,inhibit}}% U+00A5 YEN SIGN | |
348 | +\setjaparameter{cjkxspmode={`¥,inhibit}}% U+FFE5 FULLWIDTH YEN SIGN | |
349 | +\setjaparameter{cjkxspmode={`°,postonly}} | |
350 | +\setjaparameter{cjkxspmode={`′,postonly}} | |
351 | +\setjaparameter{cjkxspmode={`″,postonly}} | |
352 | +% | |
353 | +% inhibitxspcode JIS X 0213 | |
354 | +% | |
355 | +\setjaparameter{cjkxspmode={`⦅,preonly}} | |
356 | +\setjaparameter{cjkxspmode={`⦆,postonly}} | |
357 | +\setjaparameter{cjkxspmode={`⦅,preonly}} | |
358 | +\setjaparameter{cjkxspmode={`⦆,postonly}} | |
359 | +\setjaparameter{cjkxspmode={`〘,preonly}} | |
360 | +\setjaparameter{cjkxspmode={`〙,postonly}} | |
361 | +\setjaparameter{cjkxspmode={`〖,preonly}} | |
362 | +\setjaparameter{cjkxspmode={`〗,postonly}} | |
363 | +\setjaparameter{cjkxspmode={`«,preonly}} | |
364 | +\setjaparameter{cjkxspmode={`»,postonly}} | |
365 | +\setjaparameter{cjkxspmode={`〝,preonly}} | |
366 | +\setjaparameter{cjkxspmode={`〟,postonly}} | |
367 | +\setjaparameter{cjkxspmode={`‼,postonly}} | |
368 | +\setjaparameter{cjkxspmode={`⁇,postonly}} | |
369 | +\setjaparameter{cjkxspmode={`⁈,postonly}} | |
370 | +\setjaparameter{cjkxspmode={`⁉,postonly}} | |
371 | +\setjaparameter{cjkxspmode={`¡,preonly}} | |
372 | +\setjaparameter{cjkxspmode={`¿,preonly}} | |
373 | +\setjaparameter{cjkxspmode={`ª,postonly}} | |
374 | +\setjaparameter{cjkxspmode={`º,postonly}} | |
375 | +\setjaparameter{cjkxspmode={`¹,postonly}} | |
376 | +\setjaparameter{cjkxspmode={`²,postonly}} | |
377 | +\setjaparameter{cjkxspmode={`³,postonly}} | |
378 | +\setjaparameter{cjkxspmode={`€,preonly}} | |
379 | +% | |
380 | +% inhibitxspcode JIS X 0212 | |
381 | +% | |
382 | +%\setjaparameter{cjkxspmode={`¡,postonly}} | |
383 | +%\setjaparameter{cjkxspmode={`¿,postonly}} | |
384 | +%\setjaparameter{cjkxspmode={`º,postonly}} | |
385 | +%\setjaparameter{cjkxspmode={`ª,postonly}} | |
386 | +\setjaparameter{cjkxspmode={`™,postonly}} | |
387 | +% | |
388 | +% inhibitxspcode 半角片仮名 | |
389 | +% | |
390 | +\setjaparameter{cjkxspmode={`。,postonly}} | |
391 | +\setjaparameter{cjkxspmode={`、,postonly}} | |
392 | +\setjaparameter{cjkxspmode={`「,preonly}} | |
393 | +\setjaparameter{cjkxspmode={`」,postonly}} | |
394 | + | |
395 | +\endinput | |
396 | +cat `locate ukinsoku.tex` \ | |
397 | + | sed "s/prebreakpenalty\(.*\)=\([0-9]*\)/setjaparameter{prebreakpenalty={\1,\2}}/" \ | |
398 | + | sed "s/postbreakpenalty\(.*\)=\([0-9]*\)/setjaparameter{postbreakpenalty={\1,\2}}/" \ | |
399 | + | sed "s/inhibitxspcode\(.*\)=0/setjaparameter{cjkxspmode={\1,inhibit}}/" \ | |
400 | + | sed "s/inhibitxspcode\(.*\)=1/setjaparameter{cjkxspmode={\1,postonly}}/" \ | |
401 | + | sed "s/inhibitxspcode\(.*\)=2/setjaparameter{cjkxspmode={\1,preonly}}/" \ | |
402 | + | sed "s/inhibitxspcode\(.*\)=3/setjaparameter{cjkxspmode={\1,allow}}/" \ | |
403 | + | sed "s/xspcode\(.*\)=0/setjaparameter{asciixspmode={\1,inhibit}}/" \ | |
404 | + | sed "s/xspcode\(.*\)=2/setjaparameter{asciixspmode={\1,postonly}}/" \ | |
405 | + | sed "s/xspcode\(.*\)=1/setjaparameter{asciixspmode={\1,preonly}}/" \ | |
406 | + | sed "s/xspcode\(.*\)=3/setjaparameter{asciixspmode={\1,allow}}/" > luatexja-kinsoku.tex | |
\ No newline at end of file |
@@ -1,3 +0,0 @@ | ||
1 | -jfm.dir = 'yoko' | |
2 | -jfm.zw= 1.0; jfm.zh = 1.0 | |
3 | -jfm.define_type_dim(0, 0.0 , 0.0 , 1.0 , 0.88, 0.12, 0.0) | |
\ No newline at end of file |
@@ -1,87 +0,0 @@ | ||
1 | --- A sample of Japanese font metric for pluatex | |
2 | --- The unit of <height>, <depth>: | |
3 | --- The unit of other dimension: the design size | |
4 | - | |
5 | -jfm.dir = 'yoko' | |
6 | --- 'yoko' | |
7 | - | |
8 | -jfm.zw= 1.0; jfm.zh = 1.0 | |
9 | --- amount of ``1zw'' and ``1zh'' (these units are used in pTeX) | |
10 | - | |
11 | - | |
12 | --- character type | |
13 | --- jfm.define_char_type(<type>, <letters>) | |
14 | -jfm.define_char_type(1, { | |
15 | - 0x2018, 0x201C, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, | |
16 | - 0x3018, 0x301D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F | |
17 | - }) -- 開き括弧類 | |
18 | -jfm.define_char_type(2, { | |
19 | - 0x2019, 0x201D, 0x3001, 0x3009, 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, | |
20 | - 0x3017, 0x3019, 0x301F, 0xFF09, 0xFF0C, 0xFF3D, 0xFF5D, 0xFF60 | |
21 | - }) -- 閉じ括弧類 | |
22 | -jfm.define_char_type(3, {0x30FB, 0xFF1A, 0xFF1B}) -- 中点類 | |
23 | -jfm.define_char_type(4, {0x3002, 0xFF0E}) -- 句点類 | |
24 | -jfm.define_char_type(5, {0x2015, 0x2025, 0x2026}) -- ダッシュ | |
25 | -jfm.define_char_type(6, {'boxbdd'}) | |
26 | -jfm.define_char_type(7, { | |
27 | - 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67, 0xFF68, 0xFF69, | |
28 | - 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, 0xFF70, 0xFF71, 0xFF72, | |
29 | - 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, | |
30 | - 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, | |
31 | - 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, | |
32 | - 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, | |
33 | - 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F | |
34 | -}) -- 半角カナ | |
35 | - | |
36 | - | |
37 | --- 'boxbdd' matches | |
38 | --- o the beginning of paragraphs and hboxes | |
39 | --- o the ending of paragraphs and hboxes | |
40 | --- o just after the hbox created by \parindent | |
41 | - | |
42 | --- 'jcharbdd' matches the boundary between two Japanese characters whose metrics (or sizes) | |
43 | --- are different. | |
44 | - | |
45 | --- 'diffmet' matches the boundary between a Japanese character | |
46 | --- and a material which is not a Japanese character. | |
47 | - | |
48 | --- dimension | |
49 | --- jfm.define_type_dim(<type>, <left>, <down>, <width>, | |
50 | --- <height>, <depth>, <italic correction>) | |
51 | -jfm.define_type_dim(0, 0.0 , 0.0 , 1.0 , 0.88, 0.12, 0.0) | |
52 | -jfm.define_type_dim(1, 0.5 , 0.0 , 0.5 , 0.88, 0.12, 0.0) | |
53 | -jfm.define_type_dim(2, 0.0 , 0.0 , 0.5 , 0.88, 0.12, 0.0) | |
54 | -jfm.define_type_dim(3, 0.25, 0.0 , 0.5 , 0.88, 0.12, 0.0) | |
55 | -jfm.define_type_dim(4, 0.0 , 0.0 , 0.5 , 0.88, 0.12, 0.0) | |
56 | -jfm.define_type_dim(5, 0.0 , 0.0 , 1.0 , 0.88, 0.12, 0.0) | |
57 | --- jfm.define_type_dim(6, 0.0 , 0.0 , 1.0 , 0.88, 0.12, 0.0): does not needed | |
58 | -jfm.define_type_dim(7, 0.0 , 0.0 , 0.5 , 0.88, 0.12, 0.0) | |
59 | - | |
60 | --- glue/kern | |
61 | --- jfm.define_glue(<btype>, <atype>, <width>, <stretch>, <shrink>) | |
62 | --- jfm.define_kern(<btype>, <atype>, <width>) | |
63 | -jfm.define_glue(0,1, 0.5 , 0.0, 0.5 ) | |
64 | -jfm.define_glue(7,1, 0.5 , 0.0, 0.5 ) | |
65 | -jfm.define_glue(0,3, 0.25, 0.0, 0.25) | |
66 | -jfm.define_glue(7,3, 0.25, 0.0, 0.25) | |
67 | -jfm.define_glue(1,3, 0.25, 0.0, 0.25) | |
68 | -jfm.define_glue(2,0, 0.5 , 0.0, 0.5 ) | |
69 | -jfm.define_glue(2,7, 0.5 , 0.0, 0.5 ) | |
70 | -jfm.define_glue(2,1, 0.5 , 0.0, 0.5 ) | |
71 | -jfm.define_glue(2,3, 0.25, 0.0, 0.25) | |
72 | -jfm.define_glue(2,5, 0.5 , 0.0, 0.5 ) | |
73 | -jfm.define_glue(3,0, 0.25, 0.0, 0.25) | |
74 | -jfm.define_glue(3,7, 0.25, 0.0, 0.25) | |
75 | -jfm.define_glue(3,1, 0.25, 0.0, 0.25) | |
76 | -jfm.define_glue(3,2, 0.25, 0.0, 0.25) | |
77 | -jfm.define_glue(3,3, 0.5 , 0.0, 0.5 ) | |
78 | -jfm.define_glue(3,4, 0.25, 0.0, 0.25) | |
79 | -jfm.define_glue(3,5, 0.25, 0.0, 0.25) | |
80 | -jfm.define_glue(4,0, 0.5 , 0.0, 0.0 ) | |
81 | -jfm.define_glue(4,7, 0.5 , 0.0, 0.0 ) | |
82 | -jfm.define_glue(4,1, 0.5 , 0.0, 0.0 ) | |
83 | -jfm.define_glue(4,3, 0.75, 0.0, 0.25) | |
84 | -jfm.define_glue(4,5, 0.5 , 0.0, 0.0 ) | |
85 | -jfm.define_glue(5,1, 0.5 , 0.0, 0.5 ) | |
86 | -jfm.define_glue(5,3, 0.25, 0.0, 0.25) | |
87 | -jfm.define_kern(5,5, 0.0) | |
\ No newline at end of file |
@@ -1,22 +1,21 @@ | ||
1 | 1 | %#! luatex |
2 | 2 | \input luatexja-core.sty |
3 | 3 | |
4 | -\loadjfontmetric{mt}{ujis} | |
5 | -\jfont\tenmin={psft:Ryumin-Light:jfm=mt}\tenmin | |
6 | -\jfont\tengoth={psft:GothicBBB-Medium:jfm=mt} | |
7 | -\jfont\jisse={psft:Ryumin-Light:script=latn;+jp78;jfm=mt} | |
8 | -\jfont\jisexpt={psft:Ryumin-Light:script=latn;+expt;jfm=mt} | |
9 | -\jfont\jishwid={psft:Ryumin-Light:script=latn;+hwid;jfm=mt} | |
4 | +\jfont\tenmin={psft:Ryumin-Light:jfm=ujis}\tenmin | |
5 | +\jfont\tengoth={psft:GothicBBB-Medium:jfm=ujis} | |
6 | +\jfont\jisse={psft:Ryumin-Light:script=latn;+jp78;jfm=ujis} | |
7 | +\jfont\jisexpt={psft:Ryumin-Light:script=latn;+expt;jfm=ujis} | |
8 | +\jfont\jishwid={psft:Ryumin-Light:script=latn;+hwid;jfm=ujis} | |
10 | 9 | %\font\tmihwid={psft:Ryumin-Light:script=latn;+hwid} |
11 | -\jfont\jisnalt={psft:Ryumin-Light:script=latn;+nalt;jfm=mt} | |
12 | -\jfont\jistrad={psft:Ryumin-Light:script=latn;+trad;jfm=mt} | |
13 | -\jfont\jissups={psft:Ryumin-Light:script=latn;+sups;jfm=mt} | |
14 | -\jfont\jisliga={psft:Ryumin-Light:script=latn;+liga;jfm=mt} | |
10 | +\jfont\jisnalt={psft:Ryumin-Light:script=latn;+nalt;jfm=ujis} | |
11 | +\jfont\jistrad={psft:Ryumin-Light:script=latn;+trad;jfm=ujis} | |
12 | +\jfont\jissups={psft:Ryumin-Light:script=latn;+sups;jfm=ujis} | |
13 | +\jfont\jisliga={psft:Ryumin-Light:script=latn;+liga;jfm=ujis} | |
15 | 14 | %\font\tmiliga={psft:Ryumin-Light:script=latn;+liga} |
16 | -\jfont\jisvert={psft:Ryumin-Light:script=latn;+vert;jfm=mt} | |
15 | +\jfont\jisvert={psft:Ryumin-Light:script=latn;+vert;jfm=ujis} | |
17 | 16 | \parskip=\smallskipamount\parindent=1\zw |
18 | 17 | |
19 | -{\noindent\bf\tengoth luatj-ujis.lua を使用} | |
18 | +{\noindent\bf\tengoth jfm-ujis.lua を使用} | |
20 | 19 | |
21 | 20 | \bigskip |
22 | 21 |
@@ -52,5 +51,41 @@ | ||
52 | 51 | |
53 | 52 | {\tt'boxbdd'}のテスト2: \vrule\hbox{「」}\vrule ←正しい実装ならば2本の罫線の間は全角幅 |
54 | 53 | |
54 | + | |
55 | +\bigskip | |
56 | +{\noindent\bf\tengt ■{\tt differentjfm}による挙動の違い} | |
57 | + | |
58 | +\jfont\tenMa={psft:Ryumin-Lightfile:jfm=ujis} | |
59 | +\jfont\tenMb={psft:Ryumin-Lightfile:jfm=ujis;jfmvar=a} | |
60 | +\jfont\tenGa={psft:GothicBBB-Medium:jfm=ujis} at 15pt | |
61 | +\jfont\tenGb={psft:GothicBBB-Medium:jfm=ujis;jfmvar=a} at 15pt\relax | |
62 | + | |
63 | +\def\djtest{% | |
64 | +{\tt Ma-Ma}: \setbox0=\hbox{{\tenMa )}{\tenMa ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
65 | +{\tt Ma-Mb}: \setbox0=\hbox{{\tenMa )}{\tenMb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
66 | +{\tt Mb-Mb}: \setbox0=\hbox{{\tenMb )}{\tenMb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
67 | + | |
68 | +{\tt Ma-Ga}: \setbox0=\hbox{{\tenMa )}{\tenGa ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
69 | +{\tt Ma-Gb}: \setbox0=\hbox{{\tenMa )}{\tenGb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
70 | +{\tt Mb-Gb}: \setbox0=\hbox{{\tenMb )}{\tenGb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}% | |
71 | +} | |
72 | + | |
73 | +{\noindent\bf\tengt {\tt differentjfm=small}(小さい方)} | |
74 | + | |
75 | +\setjaparameter{differentjfm=small}\djtest | |
76 | + | |
77 | +{\noindent\bf\tengt {\tt differentjfm=large}(大きい方)} | |
78 | + | |
79 | +\setjaparameter{differentjfm=LARGE}\djtest | |
80 | + | |
81 | +{\noindent\bf\tengt {\tt differentjfm=average}(default,平均)} | |
82 | + | |
83 | +\setjaparameter{differentjfm=AVERAGE}\djtest | |
84 | + | |
85 | +{\noindent\bf\tengt {\tt differentjfm=both}(両方挿入)} | |
86 | + | |
87 | +\setjaparameter{differentjfm=Both}\djtest | |
88 | + | |
89 | + | |
55 | 90 | \end |
56 | 91 |
@@ -1,26 +1,23 @@ | ||
1 | -%#! luatex | |
1 | +%#! time luatex test01 | |
2 | 2 | \input luatexja-core.sty |
3 | 3 | |
4 | -\loadjfontmetric{mt}{ujis} | |
5 | -\jfont\tenmin={file:ipaexm.ttf:jfm=mt}\tenmin | |
6 | -\jfont\tengoth={file:ipaexg.ttf:jfm=mt} | |
7 | -\jfont\jisninety={file:ipaexm.ttf:script=latn;+jp90;jfm=mt} | |
8 | -\jfont\jisexpt={file:ipaexm.ttf:script=latn;+expt;jfm=mt} | |
9 | -\jfont\jishwid={file:ipaexm.ttf:script=latn;+hwid;jfm=mt} | |
4 | +\jfont\jisninety={file:ipaexm.ttf:script=latn;+jp90;jfm=ujis} | |
5 | +\jfont\jisexpt={file:ipaexm.ttf:script=latn;+expt;jfm=ujis} | |
6 | +\jfont\jishwid={file:ipaexm.ttf:script=latn;+hwid;jfm=ujis} | |
10 | 7 | %\font\tmihwid={file:ipaexm.ttf:script=latn;+hwid} |
11 | -\jfont\jisnalt={file:ipaexm.ttf:script=latn;+nalt;jfm=mt} | |
12 | -\jfont\jistrad={file:ipaexm.ttf:script=latn;+trad;jfm=mt} | |
13 | -\jfont\jissups={file:ipaexm.ttf:script=latn;+sups;jfm=mt} | |
14 | -\jfont\jisliga={file:ipaexm.ttf:script=latn;+liga;jfm=mt} | |
8 | +\jfont\jisnalt={file:ipaexm.ttf:script=latn;+nalt;jfm=ujis} | |
9 | +\jfont\jistrad={file:ipaexm.ttf:script=latn;+trad;jfm=ujis} | |
10 | +\jfont\jissups={file:ipaexm.ttf:script=latn;+sups;jfm=ujis} | |
11 | +\jfont\jisliga={file:ipaexm.ttf:script=latn;+liga;jfm=ujis} | |
15 | 12 | %\font\tmiliga={file:ipaexm.ttf:script=latn;+liga} |
16 | -\jfont\jisvert={file:ipaexm.ttf:script=latn;+vert;jfm=mt} | |
13 | +\jfont\jisvert={file:ipaexm.ttf:script=latn;+vert;jfm=ujis} | |
17 | 14 | \parskip=\smallskipamount\parindent=1\zw |
18 | 15 | |
19 | -{\noindent\bf\tengoth luatj-ujis.lua を使用} | |
16 | +{\noindent\bf\tengt jfm-ujis.lua を使用} | |
20 | 17 | |
21 | 18 | \bigskip |
22 | 19 | |
23 | -{\noindent\bf\tengoth luaotf\/load による feature との共存状況} | |
20 | +{\noindent\bf\tengt ■luaotf\/load による feature との共存状況} | |
24 | 21 | |
25 | 22 | {\tentt expt} feature: 剥→{\jisexpt 剥} |
26 | 23 |
@@ -50,5 +47,41 @@ | ||
50 | 47 | |
51 | 48 | {\tt'boxbdd'}のテスト2: \vrule\hbox{「」}\vrule ←正しい実装ならば2本の罫線の間は全角幅 |
52 | 49 | |
50 | + | |
51 | +\bigskip | |
52 | +{\noindent\bf\tengt ■{\tt differentjfm}による挙動の違い} | |
53 | + | |
54 | +\jfont\tenMa={file:ipaexm.ttf:jfm=ujis} | |
55 | +\jfont\tenMb={file:ipaexm.ttf:jfm=ujis;jfmvar=a} | |
56 | +\jfont\tenGa={file:ipaexg.ttf:jfm=ujis} at 15pt | |
57 | +\jfont\tenGb={file:ipaexg.ttf:jfm=ujis;jfmvar=a} at 15pt\relax | |
58 | + | |
59 | +\def\djtest{% | |
60 | +{\tt Ma-Ma}: \setbox0=\hbox{{\tenMa )}{\tenMa ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
61 | +{\tt Ma-Mb}: \setbox0=\hbox{{\tenMa )}{\tenMb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
62 | +{\tt Mb-Mb}: \setbox0=\hbox{{\tenMb )}{\tenMb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
63 | + | |
64 | +{\tt Ma-Ga}: \setbox0=\hbox{{\tenMa )}{\tenGa ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
65 | +{\tt Ma-Gb}: \setbox0=\hbox{{\tenMa )}{\tenGb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, | |
66 | +{\tt Mb-Gb}: \setbox0=\hbox{{\tenMb )}{\tenGb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}% | |
67 | +} | |
68 | + | |
69 | +{\noindent\bf\tengt {\tt differentjfm=small}(小さい方)} | |
70 | + | |
71 | +\setjaparameter{differentjfm=small}\djtest | |
72 | + | |
73 | +{\noindent\bf\tengt {\tt differentjfm=large}(大きい方)} | |
74 | + | |
75 | +\setjaparameter{differentjfm=LARGE}\djtest | |
76 | + | |
77 | +{\noindent\bf\tengt {\tt differentjfm=average}(default,平均)} | |
78 | + | |
79 | +\setjaparameter{differentjfm=AVERAGE}\djtest | |
80 | + | |
81 | +{\noindent\bf\tengt {\tt differentjfm=both}(両方挿入)} | |
82 | + | |
83 | +\setjaparameter{differentjfm=Both}\djtest | |
84 | + | |
85 | + | |
53 | 86 | \end |
54 | 87 |
@@ -3,7 +3,6 @@ | ||
3 | 3 | \usepackage{fontspec,pdftexcmds} |
4 | 4 | |
5 | 5 | \input luatexja-core.sty |
6 | -\loadjfontmetric{mt}{ujis} | |
7 | 6 | |
8 | 7 | \ExplSyntaxOn |
9 | 8 | \xetex_or_luatex:nnn { \tl_set:Nn \l_fontspec_pre_feat_sclist } |
@@ -12,7 +11,7 @@ | ||
12 | 11 | \tl_if_empty:NF \l_fontspec_script_tl |
13 | 12 | { |
14 | 13 | script = \l_fontspec_script_tl ; |
15 | - language = \l_fontspec_lang_tl ;jfm=mt; | |
14 | + language = \l_fontspec_lang_tl ;jfm=ujis; | |
16 | 15 | } |
17 | 16 | } |
18 | 17 | } |
@@ -21,7 +20,7 @@ | ||
21 | 20 | \tl_if_empty:NF \l_fontspec_script_tl |
22 | 21 | { |
23 | 22 | script = \l_fontspec_script_tl ; |
24 | - language = \l_fontspec_lang_tl ;jfm=mt; | |
23 | + language = \l_fontspec_lang_tl ;jfm=ujis; | |
25 | 24 | } |
26 | 25 | } |
27 | 26 | \ExplSyntaxOff |
@@ -34,8 +33,7 @@ | ||
34 | 33 | \def\extract@font{% |
35 | 34 | \get@external@font |
36 | 35 | \ifnum\pdf@strcmp{\f@encoding}{EU2}=0 |
37 | - \expandafter\jfont\font@name\external@font\relax | |
38 | - \global\expandafter\font@name{\font@name}% | |
36 | + \expandafter\gjfont\font@name\external@font\relax | |
39 | 37 | \font@name\global\zw=\zw\global\zh=\zh |
40 | 38 | \else |
41 | 39 | \global\expandafter\font\font@name\external@font\relax |
@@ -1,23 +1,48 @@ | ||
1 | 1 | %#!luatex |
2 | 2 | \input luatexja-core.sty |
3 | -\loadjfontmetric{mta}{ujis} | |
4 | - | |
5 | 3 | \def\\{\hfill\break} |
6 | -\tentt\meaning\tenipam | |
4 | +\tentt\tenmin | |
5 | + | |
6 | +\catcode`\@=11 | |
7 | +\the\luatexja@ykblshift | |
8 | +\setjaparameter{ykbaselineshift=\maxdimen,autoxspacing=false} | |
9 | +\the\luatexja@ykblshift\ | |
10 | +\getjaparameter{ykbaselineshift} | |
11 | + | |
12 | +\getjaparameter{kanjiskip}, | |
13 | +\getjaparameter{xkanjiskip}, | |
14 | +\getjaparameter{autospacing}, | |
15 | +\getjaparameter{autoxspacing}, | |
16 | +\getjaparameter{differentjfm}. | |
17 | +\setjaparameter{ykbaselineshift=0pt,autoxspacing=true} | |
18 | + | |
19 | + | |
20 | +あいうえお{\setjaparameter{ykbaselineshift=2pt}かきくけこ}さしすせそ | |
21 | + | |
22 | +あいうえお{\globalsetjaparameter{ykbaselineshift=2pt}かきくけこ}さしすせそ | |
7 | 23 | |
24 | +\getjaparameter{prebreakpenalty}{`(}, | |
25 | +\getjaparameter{prebreakpenalty}{`)}, | |
26 | +\getjaparameter{prebreakpenalty}{`あ} | |
8 | 27 | |
9 | -{\jfont\tenipam={file:ipam.ttf:script=latn;jfm=mta}% | |
10 | -aiu\tenipam あい円うえ()(お辻abc\\\meaning\tenipam | |
11 | 28 | |
12 | -↑defined by \char"5C jfont} | |
29 | +\getjaparameter{postbreakpenalty}{`(}, | |
30 | +\getjaparameter{postbreakpenalty}{`)}, | |
31 | +\getjaparameter{postbreakpenalty}{`あ} | |
13 | 32 | |
14 | -\tentt\meaning\tenipam | |
33 | +a\inhibitglue (a)\inhibitglue aあa〜a | |
15 | 34 | |
16 | -\font\tenipax={file:ipam.ttf:script=latn;jfm=mta}\message{\the\font}% | |
17 | -aiu\tenipax あい円うえ()(お辻abc\\\meaning\tenipax | |
35 | +\getjaparameter{cjkxspmode}{`(}, | |
36 | +\getjaparameter{cjkxspmode}{`)}, | |
37 | +\getjaparameter{cjkxspmode}{`あ}, | |
38 | +\getjaparameter{cjkxspmode}{`〜} | |
18 | 39 | |
19 | -↑defined by \char"5C font | |
40 | +\setjaparameter{asciixspmode={`\b,inhibit}} | |
41 | +あ[あ]あaあbあ | |
20 | 42 | |
21 | -\tentt\meaning\tenipam | |
43 | +\getjaparameter{asciixspmode}{`[}, | |
44 | +\getjaparameter{asciixspmode}{`]}, | |
45 | +\getjaparameter{asciixspmode}{`a}, | |
46 | +\getjaparameter{asciixspmode}{`b} | |
22 | 47 | |
23 | 48 | \end |