- local xkst = ltjf_font_metric_table[getfont(xc)]
- .char_type[has_attr(xc, attr_jchar_class) or 0]['end_stretch'] or 0
- local xksh = ltjf_font_metric_table[getfont(xc)]
- .char_type[has_attr(xc, attr_jchar_class) or 0]['end_shrink'] or 0
- local xkni = ltjf_font_metric_table[getfont(xc)]
- .char_type[has_attr(xc, attr_jchar_class) or 0]['end_natural_inhibit']
-
- print(total, xkst, xksh, ntr)
- if total>=xkst and xkst>0 then
- local kn = node_new(id_kern)
- setfield(kn, 'kern', xkst); set_attr(kn, attr_icflag, FROM_JFM)
- insert_after(head, x, kn)
- return total - xkst, true
- elseif total<=-xksh and xksh<0 then
- local kn = node_new(id_kern)
- setfield(kn, 'kern', -xksh); set_attr(kn, attr_icflag, FROM_JFM)
- insert_after(head, x, kn)
- return total + xksh, true
- else --
- local str = -(total-xkst)/total_sh[65536*total_sh.order] -- end_stretch を入れたときの glue_set (shrink)
- local shr = (xksh+total)/total_st[65536*total_st.order] -- end_shrink を入れたときの glue_set (stretch)
- print(xkni, str, ntr, shr)
- if xkni then
- if str<shr then
- local kn = node_new(id_kern)
- setfield(kn, 'kern', xkst); set_attr(kn, attr_icflag, FROM_JFM)
- insert_after(head, x, kn)
- return total- xkst, true
- else
- local kn = node_new(id_kern)
- setfield(kn, 'kern', -xksh); set_attr(kn, attr_icflag, FROM_JFM)
- insert_after(head, x, kn)
- return total + xksh, true
- end