diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/commands.h | 3 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/commands.w | 6 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/dumpdata.w | 2 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/linebreak.w | 6 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/maincontrol.w | 18 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/texnodes.h | 5 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/texnodes.w | 24 |
7 files changed, 40 insertions, 24 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/commands.h b/Build/source/texk/web2c/luatexdir/tex/commands.h index 60bfef895d2..edaeb72fe28 100644 --- a/Build/source/texk/web2c/luatexdir/tex/commands.h +++ b/Build/source/texk/web2c/luatexdir/tex/commands.h @@ -139,8 +139,7 @@ typedef enum { end_group_cmd, /* end local grouping ( \.{\\endgroup} ) */ omit_cmd, /* omit alignment template ( \.{\\omit} ) */ ex_space_cmd, /* explicit space ( \.{\\\ } ) */ - boundary_cmd, /* insert boundry node with value ( \.{\\boundary} ) */ - no_boundary_cmd, /* suppress boundary ligatures ( \.{\\noboundary} ) */ + boundary_cmd, /* insert boundry node with value ( \.{\\*boundary} ) */ radical_cmd, /* square root and similar signs ( \.{\\radical} ) */ super_sub_script_cmd, /* explicit super- or subscript */ math_shift_cs_cmd, /* start- and endmath */ diff --git a/Build/source/texk/web2c/luatexdir/tex/commands.w b/Build/source/texk/web2c/luatexdir/tex/commands.w index 4f796a7b1a7..ece74a5406b 100644 --- a/Build/source/texk/web2c/luatexdir/tex/commands.w +++ b/Build/source/texk/web2c/luatexdir/tex/commands.w @@ -201,8 +201,10 @@ void initialize_commands(void) primitive_luatex("Ustack", math_choice_cmd, 1, 0); primitive_tex("multiply", multiply_cmd, 0, 0); primitive_tex("noalign", no_align_cmd, 0, 0); - primitive_tex("boundary", boundary_cmd, 0, 0); - primitive_tex("noboundary", no_boundary_cmd, 0, 0); + primitive_tex("noboundary", boundary_cmd, 0, 0); + primitive_tex("boundary", boundary_cmd, 1, 0); + primitive_tex("protrusionboundary", boundary_cmd, 2, 0); + primitive_tex("wordboundary", boundary_cmd, 3, 0); primitive_tex("noexpand", no_expand_cmd, 0, 0); primitive_luatex("primitive", no_expand_cmd, 1, 0); primitive_tex("nonscript", non_script_cmd, 0, 0); diff --git a/Build/source/texk/web2c/luatexdir/tex/dumpdata.w b/Build/source/texk/web2c/luatexdir/tex/dumpdata.w index be5f0074639..993ad8a16c0 100644 --- a/Build/source/texk/web2c/luatexdir/tex/dumpdata.w +++ b/Build/source/texk/web2c/luatexdir/tex/dumpdata.w @@ -27,7 +27,7 @@ /* we start with 907: the sum of the values of the bytes of "don knuth" */ -#define FORMAT_ID (907+14) +#define FORMAT_ID (907+15) #if ((FORMAT_ID>=0) && (FORMAT_ID<=256)) #error Wrong value for FORMAT_ID. #endif diff --git a/Build/source/texk/web2c/luatexdir/tex/linebreak.w b/Build/source/texk/web2c/luatexdir/tex/linebreak.w index 8b8f47bc9d5..6e74e0b27be 100644 --- a/Build/source/texk/web2c/luatexdir/tex/linebreak.w +++ b/Build/source/texk/web2c/luatexdir/tex/linebreak.w @@ -348,7 +348,8 @@ static boolean check_expand_pars(internal_font_number f) l = pop_node(); /* don't visit this node again */ run = false; } -if ((vlink(l) != null) && (type(l) == boundary_node) && ((subtype(l) == 1) || (subtype(l) == 3))) { +if ((vlink(l) != null) && (type(l) == boundary_node) && (subtype(l) == protrusion_boundary) && + ((boundary_value(l) == 1) || (boundary_value(l) == 3))) { /* skip next node */ l = vlink(l); } @@ -392,7 +393,8 @@ if ((vlink(l) != null) && (type(l) == boundary_node) && ((subtype(l) == 1) || (s l = pop_node(); } if ((r != l) && (r != null)) { -if ((alink(r) != null) && (type(r) == boundary_node) && ((subtype(r) == 2) || (subtype(r) == 3))) { +if ((alink(r) != null) && (type(r) == boundary_node) && (subtype(r) == protrusion_boundary) && + ((boundary_value(r) == 2) || (boundary_value(r) == 3))) { /* skip next node */ r = alink(r); } diff --git a/Build/source/texk/web2c/luatexdir/tex/maincontrol.w b/Build/source/texk/web2c/luatexdir/tex/maincontrol.w index af89da9d5d7..8f423c63a0e 100644 --- a/Build/source/texk/web2c/luatexdir/tex/maincontrol.w +++ b/Build/source/texk/web2c/luatexdir/tex/maincontrol.w @@ -231,17 +231,14 @@ static void run_app_space (void) { @ Append a |boundary_node| @c -static void run_no_boundary (void) { - halfword n ; - n = new_node(boundary_node,cancel_boundary); - couple_nodes(tail, n); - tail = n; -} static void run_boundary (void) { halfword n ; - n = new_node(boundary_node,user_boundary); - scan_int(); - boundary_value(n) = cur_val; + n = new_node(boundary_node,cur_chr); + if ((cur_chr == 1) || (cur_chr == 2) ) { + /* user boundary or protrusion boundary */ + scan_int(); + boundary_value(n) = cur_val; + } couple_nodes(tail, n); tail = n; } @@ -742,14 +739,12 @@ static void init_main_control (void) { jump_table[hmode + ex_space_cmd] = run_app_space; jump_table[mmode + ex_space_cmd] = run_app_space; jump_table[hmode + boundary_cmd] = run_boundary; - jump_table[hmode + no_boundary_cmd] = run_no_boundary; jump_table[hmode + char_ghost_cmd] = run_char_ghost; jump_table[mmode + char_ghost_cmd] = run_char_ghost; any_mode(relax_cmd, run_relax); jump_table[vmode + spacer_cmd] = run_relax; jump_table[mmode + spacer_cmd] = run_relax; jump_table[mmode + boundary_cmd] = run_relax; - jump_table[mmode + no_boundary_cmd] = run_relax; any_mode(ignore_spaces_cmd,run_ignore_spaces); jump_table[vmode + stop_cmd] = run_stop; jump_table[vmode + math_char_num_cmd] = run_non_math_math; @@ -833,7 +828,6 @@ static void init_main_control (void) { jump_table[vmode + valign_cmd] = run_new_graf; jump_table[vmode + ex_space_cmd] = run_new_graf; jump_table[vmode + boundary_cmd] = run_new_graf; - jump_table[vmode + no_boundary_cmd] = run_new_graf; jump_table[vmode + par_end_cmd] = run_par_end_vmode; jump_table[hmode + par_end_cmd] = run_par_end_hmode; jump_table[hmode + stop_cmd] = head_for_vmode; diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.h b/Build/source/texk/web2c/luatexdir/tex/texnodes.h index 20189f130f4..4db62bf61b8 100644 --- a/Build/source/texk/web2c/luatexdir/tex/texnodes.h +++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.h @@ -649,7 +649,9 @@ typedef enum { typedef enum { cancel_boundary = 0, - user_boundary + user_boundary, + protrusion_boundary, + word_boundary, } boundary_subtypes ; # define boundary_size 3 @@ -872,6 +874,7 @@ extern const char *node_subtypes_glue[]; extern const char *node_subtypes_mathglue[]; extern const char *node_subtypes_leader[]; extern const char *node_subtypes_fill[]; +extern const char *node_subtypes_boundary[]; extern const char *node_subtypes_penalty[]; extern const char *node_subtypes_kern[]; extern const char *node_subtypes_rule[]; diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.w b/Build/source/texk/web2c/luatexdir/tex/texnodes.w index d5d2d2364b6..4cbd0c00bea 100644 --- a/Build/source/texk/web2c/luatexdir/tex/texnodes.w +++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.w @@ -278,6 +278,9 @@ const char *node_subtypes_leader[] = { /* 100+ */ const char *node_subtypes_fill[] = { "stretch", "fi", "fil", "fill", "filll", NULL }; +const char *node_subtypes_boundary[] = { + "cancel", "user", "protrusion", "word", NULL +}; const char *node_subtypes_penalty[] = { "userpenalty", NULL }; @@ -2978,11 +2981,24 @@ void show_node_list(int p) case boundary_node: if (subtype(p)==0) { tprint_esc("noboundary"); - } else{ - tprint_esc("boundary"); + } else { + switch (subtype(p)) { + case 1: + tprint_esc("boundary"); + break; + case 2: + tprint_esc("protrusionboundary"); + break; + case 3: + tprint_esc("wordboundary"); + break; + default: + tprint_esc("boundary"); + print_char(':'); + print_int(subtype(p)); + break; + } print_char('='); - print_int(subtype(p)); - print_char(':'); print_int(boundary_value(p)); } break; |