diff options
Diffstat (limited to 'source/luametatex/source/lua')
-rw-r--r-- | source/luametatex/source/lua/lmtfontlib.c | 14 | ||||
-rw-r--r-- | source/luametatex/source/lua/lmtnodelib.c | 12 | ||||
-rw-r--r-- | source/luametatex/source/lua/lmtstatuslib.c | 222 | ||||
-rw-r--r-- | source/luametatex/source/lua/lmttexlib.c | 33 |
4 files changed, 146 insertions, 135 deletions
diff --git a/source/luametatex/source/lua/lmtfontlib.c b/source/luametatex/source/lua/lmtfontlib.c index f743f960e..042772b32 100644 --- a/source/luametatex/source/lua/lmtfontlib.c +++ b/source/luametatex/source/lua/lmtfontlib.c @@ -263,7 +263,7 @@ static void fontlib_aux_font_char_from_lua(lua_State *L, halfword f, int i, int set_charinfo_depth(co, target); set_numeric_field_by_index(target, italic, 0); set_charinfo_italic(co, target); - set_numeric_field_by_index(target, expansion, 1000); + set_numeric_field_by_index(target, expansion, scaling_factor); set_charinfo_expansion(co, target); set_numeric_field_by_index(target, compression, target); set_charinfo_compression(co, target); @@ -631,15 +631,15 @@ static int lmt_font_from_lua(lua_State *L, int f) if (fstep > 0) { int fstretch = 0; int fshrink = 0; - if (fstep > 100) { - fstep = 100; + if (fstep > max_font_adjust_step) { + fstep = max_font_adjust_step; } set_numeric_field_by_index(fshrink, shrink, 0); set_numeric_field_by_index(fstretch, stretch, 0); if (fshrink < 0) { fshrink = 0; - } else if (fshrink > 500) { - fshrink = 500; + } else if (fshrink > max_font_adjust_shrink_factor) { + fshrink = max_font_adjust_shrink_factor; } fshrink -= (fshrink % fstep); if (fshrink < 0) { @@ -647,8 +647,8 @@ static int lmt_font_from_lua(lua_State *L, int f) } if (fstretch < 0) { fstretch = 0; - } else if (fstretch > 1000) { - fstretch = 1000; + } else if (fstretch > max_font_adjust_stretch_factor) { + fstretch = max_font_adjust_stretch_factor; } fstretch -= (fstretch % fstep); if (fstretch < 0) { diff --git a/source/luametatex/source/lua/lmtnodelib.c b/source/luametatex/source/lua/lmtnodelib.c index 66cf528fc..531d6d857 100644 --- a/source/luametatex/source/lua/lmtnodelib.c +++ b/source/luametatex/source/lua/lmtnodelib.c @@ -1704,19 +1704,19 @@ static int nodelib_direct_setscales(lua_State *L) if (lua_type(L, 2) == LUA_TNUMBER) { glyph_scale(n) = (halfword) lmt_roundnumber(L, 2); if (! glyph_scale(n)) { - glyph_scale(n) = 1000; + glyph_scale(n) = scaling_factor; } } if (lua_type(L, 3) == LUA_TNUMBER) { glyph_x_scale(n) = (halfword) lmt_roundnumber(L, 3); if (! glyph_x_scale(n)) { - glyph_x_scale(n) = 1000; + glyph_x_scale(n) = scaling_factor; } } if (lua_type(L, 4) == LUA_TNUMBER) { glyph_y_scale(n) = (halfword) lmt_roundnumber(L, 4); if (! glyph_y_scale(n)) { - glyph_y_scale(n) = 1000; + glyph_y_scale(n) = scaling_factor; } } } @@ -7134,17 +7134,17 @@ static int nodelib_common_setfield(lua_State *L, int direct, halfword n) } else if (lua_key_eq(s, scale)) { glyph_scale(n) = (halfword) lmt_roundnumber(L, 3); if (! glyph_scale(n)) { - glyph_scale(n) = 1000; + glyph_scale(n) = scaling_factor; } } else if (lua_key_eq(s, xscale)) { glyph_x_scale(n) = (halfword) lmt_roundnumber(L, 3); if (! glyph_x_scale(n)) { - glyph_x_scale(n) = 1000; + glyph_x_scale(n) = scaling_factor; } } else if (lua_key_eq(s, yscale)) { glyph_y_scale(n) = (halfword) lmt_roundnumber(L, 3); if (! glyph_y_scale(n)) { - glyph_y_scale(n) = 1000; + glyph_y_scale(n) = scaling_factor; } } else if (lua_key_eq(s, data)) { glyph_data(n) = lmt_opthalfword(L, 3, unused_attribute_value); diff --git a/source/luametatex/source/lua/lmtstatuslib.c b/source/luametatex/source/lua/lmtstatuslib.c index 921832d8b..38e81c1c4 100644 --- a/source/luametatex/source/lua/lmtstatuslib.c +++ b/source/luametatex/source/lua/lmtstatuslib.c @@ -251,113 +251,121 @@ static int statslib_getconstants(lua_State *L) { lua_createtable(L, 0, 100); - lua_set_integer_by_key(L, "no_catcode_table", no_catcode_table_preset); - lua_set_integer_by_key(L, "default_catcode_table", default_catcode_table_preset); - - lua_set_cardinal_by_key(L,"max_cardinal", max_cardinal); - lua_set_cardinal_by_key(L,"min_cardinal", min_cardinal); - lua_set_integer_by_key(L, "max_integer", max_integer); - lua_set_integer_by_key(L, "min_integer", min_integer); - lua_set_integer_by_key(L, "max_dimen", max_dimen); - lua_set_integer_by_key(L, "min_dimen", min_dimen); - lua_set_integer_by_key(L, "min_data_value", min_data_value); - lua_set_integer_by_key(L, "max_data_value", max_data_value); - lua_set_integer_by_key(L, "max_half_value", max_half_value); - - lua_set_integer_by_key(L, "max_limited_scale", max_limited_scale); - - lua_set_integer_by_key(L, "one_bp", one_bp); - - lua_set_integer_by_key(L, "infinity", max_infinity); - lua_set_integer_by_key(L, "min_infinity", min_infinity); - lua_set_integer_by_key(L, "awful_bad", awful_bad); - lua_set_integer_by_key(L, "infinite_bad", infinite_bad); - lua_set_integer_by_key(L, "infinite_penalty", infinite_penalty); - lua_set_integer_by_key(L, "eject_penalty", eject_penalty); - lua_set_integer_by_key(L, "deplorable", deplorable); - lua_set_integer_by_key(L, "large_width_excess", large_width_excess); - lua_set_integer_by_key(L, "small_stretchability", small_stretchability); - lua_set_integer_by_key(L, "decent_criterion", decent_criterion); - lua_set_integer_by_key(L, "loose_criterion", loose_criterion); - - lua_set_integer_by_key(L, "default_rule", default_rule); - lua_set_integer_by_key(L, "ignore_depth", ignore_depth); - - lua_set_integer_by_key(L, "min_quarterword", min_quarterword); - lua_set_integer_by_key(L, "max_quarterword", max_quarterword); - - lua_set_integer_by_key(L, "min_halfword", min_halfword); - lua_set_integer_by_key(L, "max_halfword", max_halfword); - - lua_set_integer_by_key(L, "null_flag", null_flag); - lua_set_integer_by_key(L, "zero_glue", zero_glue); - lua_set_integer_by_key(L, "unity", unity); - lua_set_integer_by_key(L, "two", two); - lua_set_integer_by_key(L, "null", null); - lua_set_integer_by_key(L, "null_font", null_font); - - lua_set_integer_by_key(L, "unused_attribute_value", unused_attribute_value); - lua_set_integer_by_key(L, "unused_state_value", unused_state_value); - lua_set_integer_by_key(L, "unused_script_value", unused_script_value); - - lua_set_integer_by_key(L, "preset_rule_thickness", preset_rule_thickness); - lua_set_integer_by_key(L, "running_rule", null_flag); - - lua_set_integer_by_key(L, "max_char_code", max_char_code); - lua_set_integer_by_key(L, "min_space_factor", min_space_factor); - lua_set_integer_by_key(L, "max_space_factor", max_space_factor); - lua_set_integer_by_key(L, "default_space_factor", default_space_factor); - lua_set_integer_by_key(L, "default_tolerance", default_tolerance); - lua_set_integer_by_key(L, "default_hangafter", default_hangafter); - lua_set_integer_by_key(L, "default_deadcycles", default_deadcycles); - lua_set_integer_by_key(L, "default_pre_display_gap", default_pre_display_gap); - lua_set_integer_by_key(L, "default_eqno_gap_step", default_eqno_gap_step); - - lua_set_integer_by_key(L, "default_output_box", default_output_box); - - lua_set_integer_by_key(L, "max_n_of_fonts", max_n_of_fonts); - lua_set_integer_by_key(L, "max_n_of_bytecodes", max_n_of_bytecodes); - lua_set_integer_by_key(L, "max_n_of_math_families", max_n_of_math_families); - lua_set_integer_by_key(L, "max_n_of_languages", max_n_of_languages); - lua_set_integer_by_key(L, "max_n_of_catcode_tables", max_n_of_catcode_tables); - /* lua_set_integer_by_key(L, "max_n_of_hjcode_tables", max_n_of_hjcode_tables); */ /* meaningless */ - lua_set_integer_by_key(L, "max_n_of_marks", max_n_of_marks); - - lua_set_integer_by_key(L, "max_character_code", max_character_code); - lua_set_integer_by_key(L, "max_mark_index", max_mark_index); - - lua_set_integer_by_key(L, "max_toks_register_index", max_toks_register_index); - lua_set_integer_by_key(L, "max_box_register_index", max_box_register_index); - lua_set_integer_by_key(L, "max_int_register_index", max_int_register_index); - lua_set_integer_by_key(L, "max_float_register_index", max_posit_register_index); - lua_set_integer_by_key(L, "max_dimen_register_index", max_dimen_register_index); - lua_set_integer_by_key(L, "max_attribute_register_index", max_attribute_register_index); - lua_set_integer_by_key(L, "max_glue_register_index", max_glue_register_index); - lua_set_integer_by_key(L, "max_mu_glue_register_index", max_mu_glue_register_index); - - lua_set_integer_by_key(L, "max_bytecode_index", max_bytecode_index); - lua_set_integer_by_key(L, "max_math_family_index", max_math_family_index); - lua_set_integer_by_key(L, "max_math_class_code", max_math_class_code); - lua_set_integer_by_key(L, "max_function_reference", max_function_reference); - lua_set_integer_by_key(L, "max_category_code", max_category_code); - - lua_set_integer_by_key(L, "max_newline_character", max_newline_character); - - lua_set_integer_by_key(L, "max_size_of_word", max_size_of_word); - - lua_set_integer_by_key(L, "tex_hash_size", hash_size); - lua_set_integer_by_key(L, "tex_hash_prime", hash_prime); - lua_set_integer_by_key(L, "tex_eqtb_size", eqtb_size); - - lua_set_integer_by_key(L, "math_begin_class", math_begin_class); - lua_set_integer_by_key(L, "math_end_class", math_end_class); - lua_set_integer_by_key(L, "unused_math_family", unused_math_family); - lua_set_integer_by_key(L, "unused_math_style", unused_math_style); - lua_set_integer_by_key(L, "assumed_math_control", assumed_math_control); - - lua_set_integer_by_key(L, "undefined_math_parameter", undefined_math_parameter); - - lua_set_integer_by_key(L, "max_calculated_badness", max_calculated_badness); + lua_set_integer_by_key(L, "no_catcode_table", no_catcode_table_preset); + lua_set_integer_by_key(L, "default_catcode_table", default_catcode_table_preset); + + lua_set_cardinal_by_key(L,"max_cardinal", max_cardinal); + lua_set_cardinal_by_key(L,"min_cardinal", min_cardinal); + lua_set_integer_by_key(L, "max_integer", max_integer); + lua_set_integer_by_key(L, "min_integer", min_integer); + lua_set_integer_by_key(L, "max_dimen", max_dimen); + lua_set_integer_by_key(L, "min_dimen", min_dimen); + lua_set_integer_by_key(L, "min_data_value", min_data_value); + lua_set_integer_by_key(L, "max_data_value", max_data_value); + lua_set_integer_by_key(L, "max_half_value", max_half_value); + + lua_set_integer_by_key(L, "max_limited_scale", max_limited_scale); + + lua_set_integer_by_key(L, "one_bp", one_bp); + + lua_set_integer_by_key(L, "infinity", max_infinity); + lua_set_integer_by_key(L, "min_infinity", min_infinity); + lua_set_integer_by_key(L, "awful_bad", awful_bad); + lua_set_integer_by_key(L, "infinite_bad", infinite_bad); + lua_set_integer_by_key(L, "infinite_penalty", infinite_penalty); + lua_set_integer_by_key(L, "eject_penalty", eject_penalty); + lua_set_integer_by_key(L, "deplorable", deplorable); + lua_set_integer_by_key(L, "large_width_excess", large_width_excess); + lua_set_integer_by_key(L, "small_stretchability", small_stretchability); + lua_set_integer_by_key(L, "decent_criterion", decent_criterion); + lua_set_integer_by_key(L, "loose_criterion", loose_criterion); + + lua_set_integer_by_key(L, "default_rule", default_rule); + lua_set_integer_by_key(L, "ignore_depth", ignore_depth); + + lua_set_integer_by_key(L, "min_quarterword", min_quarterword); + lua_set_integer_by_key(L, "max_quarterword", max_quarterword); + + lua_set_integer_by_key(L, "min_halfword", min_halfword); + lua_set_integer_by_key(L, "max_halfword", max_halfword); + + lua_set_integer_by_key(L, "null_flag", null_flag); + lua_set_integer_by_key(L, "zero_glue", zero_glue); + lua_set_integer_by_key(L, "unity", unity); + lua_set_integer_by_key(L, "two", two); + lua_set_integer_by_key(L, "null", null); + lua_set_integer_by_key(L, "null_font", null_font); + + lua_set_integer_by_key(L, "unused_attribute_value", unused_attribute_value); + lua_set_integer_by_key(L, "unused_state_value", unused_state_value); + lua_set_integer_by_key(L, "unused_script_value", unused_script_value); + + lua_set_integer_by_key(L, "preset_rule_thickness", preset_rule_thickness); + lua_set_integer_by_key(L, "running_rule", null_flag); + + lua_set_integer_by_key(L, "max_char_code", max_char_code); + lua_set_integer_by_key(L, "min_space_factor", min_space_factor); + lua_set_integer_by_key(L, "max_space_factor", max_space_factor); + lua_set_integer_by_key(L, "default_space_factor", default_space_factor); + lua_set_integer_by_key(L, "default_tolerance", default_tolerance); + lua_set_integer_by_key(L, "default_hangafter", default_hangafter); + lua_set_integer_by_key(L, "default_deadcycles", default_deadcycles); + lua_set_integer_by_key(L, "default_pre_display_gap", default_pre_display_gap); + lua_set_integer_by_key(L, "default_eqno_gap_step", default_eqno_gap_step); + + lua_set_integer_by_key(L, "default_output_box", default_output_box); + + lua_set_integer_by_key(L, "max_n_of_fonts", max_n_of_fonts); + lua_set_integer_by_key(L, "max_n_of_bytecodes", max_n_of_bytecodes); + lua_set_integer_by_key(L, "max_n_of_math_families", max_n_of_math_families); + lua_set_integer_by_key(L, "max_n_of_languages", max_n_of_languages); + lua_set_integer_by_key(L, "max_n_of_catcode_tables", max_n_of_catcode_tables); + /* lua_set_integer_by_key(L, "max_n_of_hjcode_tables", max_n_of_hjcode_tables); */ /* meaningless */ + lua_set_integer_by_key(L, "max_n_of_marks", max_n_of_marks); + + lua_set_integer_by_key(L, "max_character_code", max_character_code); + lua_set_integer_by_key(L, "max_mark_index", max_mark_index); + + lua_set_integer_by_key(L, "max_toks_register_index", max_toks_register_index); + lua_set_integer_by_key(L, "max_box_register_index", max_box_register_index); + lua_set_integer_by_key(L, "max_int_register_index", max_int_register_index); + lua_set_integer_by_key(L, "max_float_register_index", max_posit_register_index); + lua_set_integer_by_key(L, "max_dimen_register_index", max_dimen_register_index); + lua_set_integer_by_key(L, "max_attribute_register_index", max_attribute_register_index); + lua_set_integer_by_key(L, "max_glue_register_index", max_glue_register_index); + lua_set_integer_by_key(L, "max_mu_glue_register_index", max_mu_glue_register_index); + + lua_set_integer_by_key(L, "max_bytecode_index", max_bytecode_index); + lua_set_integer_by_key(L, "max_math_family_index", max_math_family_index); + lua_set_integer_by_key(L, "max_math_class_code", max_math_class_code); + lua_set_integer_by_key(L, "max_function_reference", max_function_reference); + lua_set_integer_by_key(L, "max_category_code", max_category_code); + + lua_set_integer_by_key(L, "max_newline_character", max_newline_character); + + lua_set_integer_by_key(L, "max_size_of_word", max_size_of_word); + + lua_set_integer_by_key(L, "tex_hash_size", hash_size); + lua_set_integer_by_key(L, "tex_hash_prime", hash_prime); + lua_set_integer_by_key(L, "tex_eqtb_size", eqtb_size); + + lua_set_integer_by_key(L, "math_begin_class", math_begin_class); + lua_set_integer_by_key(L, "math_end_class", math_end_class); + lua_set_integer_by_key(L, "unused_math_family", unused_math_family); + lua_set_integer_by_key(L, "unused_math_style", unused_math_style); + lua_set_integer_by_key(L, "assumed_math_control", assumed_math_control); + + lua_set_integer_by_key(L, "undefined_math_parameter", undefined_math_parameter); + + lua_set_integer_by_key(L, "max_calculated_badness", max_calculated_badness); + + lua_set_integer_by_key(L, "max_math_scaling_factor", max_math_scaling_factor); + lua_set_integer_by_key(L, "math_default_penalty", math_default_penalty); + + lua_set_integer_by_key(L, "max_font_adjust_step", max_font_adjust_step); + lua_set_integer_by_key(L, "max_font_adjust_stretch_factor", max_font_adjust_stretch_factor); + lua_set_integer_by_key(L, "max_font_adjust_shrink_factor", max_font_adjust_shrink_factor); + return 1; } diff --git a/source/luametatex/source/lua/lmttexlib.c b/source/luametatex/source/lua/lmttexlib.c index 4f2ecbb5c..603454bfe 100644 --- a/source/luametatex/source/lua/lmttexlib.c +++ b/source/luametatex/source/lua/lmttexlib.c @@ -1077,21 +1077,21 @@ static const char *texlib_aux_scan_dimen_part(lua_State * L, const char *ss, int goto ATTACH_FRACTION; } SPECIAL: - result = tex_nx_plus_y(result, special, tex_xn_over_d_r(special, fraction, 0200000, &remainder)); + result = tex_nx_plus_y(result, special, tex_xn_over_d_r(special, fraction, 0x10000, &remainder)); goto DONE; CONVERSION: result = tex_xn_over_d_r(result, numerator, denominator, &remainder); - fraction = (numerator * fraction + 0200000 * remainder) / denominator; - result = result + (fraction / 0200000); - fraction = fraction % 0200000; + fraction = (numerator * fraction + 0x10000 * remainder) / denominator; + result = result + (fraction / 0x10000); + fraction = fraction % 0x10000; ATTACH_FRACTION: - if (result >= 040000) { + if (result >= 0x4000) { lmt_scanner_state.arithmic_error = 1; } else { - result = result * 65536 + fraction; + result = result * 0x10000 + fraction; } DONE: - if (lmt_scanner_state.arithmic_error || (abs(result) >= 010000000000)) { + if (lmt_scanner_state.arithmic_error || (abs(result) >= 0x40000000)) { result = max_dimen; luaL_error(L, "dimension too large"); } @@ -3855,15 +3855,15 @@ static int texlib_preparelinebreak(lua_State *L) halfword parinit_right_skip_glue = null; halfword parfill_left_skip_glue = null; halfword parfill_right_skip_glue = null; - halfword final_penalty = null; - tex_line_break_prepare(par, &tail, &parinit_left_skip_glue, &parinit_right_skip_glue, &parfill_left_skip_glue, &parfill_right_skip_glue, &final_penalty); + halfword final_line_penalty = null; + tex_line_break_prepare(par, &tail, &parinit_left_skip_glue, &parinit_right_skip_glue, &parfill_left_skip_glue, &parfill_right_skip_glue, &final_line_penalty); lmt_push_directornode(L, par, direct); lmt_push_directornode(L, tail, direct); lmt_push_directornode(L, parinit_left_skip_glue, direct); lmt_push_directornode(L, parinit_right_skip_glue, direct); lmt_push_directornode(L, parfill_left_skip_glue , direct); lmt_push_directornode(L, parfill_right_skip_glue, direct); - /* lmt_push_directornode(L, final_penalty, direct); */ /*tex Not that relevant to know. */ + /* lmt_push_directornode(L, final_line_penalty, direct); */ /*tex Not that relevant to know. */ return 6; } } @@ -4021,7 +4021,7 @@ static int texlib_linebreak(lua_State *L) get_penalties_par(properties.orphan_penalties, orphanpenalties, tex_get_par_par(par, par_orphan_penalties_code), orphan_penalties_code); if (! prepared) { halfword attr_template = tail; - halfword final_penalty = tex_new_penalty_node(infinite_penalty, line_penalty_subtype); + halfword final_line_penalty = tex_new_penalty_node(infinite_penalty, line_penalty_subtype); /* */ get_glue_par(properties.parfill_left_skip, parfillleftskip, tex_get_par_par(par, par_par_fill_left_skip_code)); get_glue_par(properties.parfill_right_skip, parfillrightskip, tex_get_par_par(par, par_par_fill_right_skip_code)); @@ -4030,11 +4030,11 @@ static int texlib_linebreak(lua_State *L) /* */ properties.parfill_left_skip = tex_new_glue_node(properties.parfill_left_skip, par_fill_left_skip_glue); properties.parfill_right_skip = tex_new_glue_node(properties.parfill_right_skip, par_fill_right_skip_glue); - tex_attach_attribute_list_copy(final_penalty, attr_template); + tex_attach_attribute_list_copy(final_line_penalty, attr_template); tex_attach_attribute_list_copy(properties.parfill_left_skip, attr_template); tex_attach_attribute_list_copy(properties.parfill_right_skip, attr_template); - tex_couple_nodes(tail, final_penalty); - tex_couple_nodes(final_penalty, properties.parfill_left_skip); + tex_couple_nodes(tail, final_line_penalty); + tex_couple_nodes(final_line_penalty, properties.parfill_left_skip); tex_couple_nodes(properties.parfill_left_skip, properties.parfill_right_skip); if (node_next(par)) { /* test can go, also elsewhere */ halfword n = node_next(par); @@ -5178,7 +5178,7 @@ static int texlib_getspecialmathclassvalues(lua_State *L) static int texlib_getmathclassoptionvalues(lua_State *L) { - lua_createtable(L, 2, 20); + lua_createtable(L, 2, 25); lua_set_string_by_index(L, no_pre_slack_class_option, "nopreslack"); lua_set_string_by_index(L, no_post_slack_class_option, "nopostslack"); lua_set_string_by_index(L, left_top_kern_class_option, "lefttopkern"); @@ -5206,6 +5206,9 @@ static int texlib_getmathclassoptionvalues(lua_State *L) lua_set_string_by_index(L, remove_italic_correction_class_option, "removeitaliccorrection"); lua_set_string_by_index(L, operator_italic_correction_class_option, "operatoritaliccorrection"); lua_set_string_by_index(L, short_inline_class_option, "shortinline"); + lua_set_string_by_index(L, push_nesting_class_option, "pushnesting"); + lua_set_string_by_index(L, pop_nesting_class_option, "popnesting"); + lua_set_string_by_index(L, obey_nesting_class_option, "obeynesting"); return 1; } |