diff options
Diffstat (limited to 'source/luametatex/source/tex/texlanguage.h')
-rw-r--r-- | source/luametatex/source/tex/texlanguage.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/source/luametatex/source/tex/texlanguage.h b/source/luametatex/source/tex/texlanguage.h new file mode 100644 index 000000000..f00bf16c6 --- /dev/null +++ b/source/luametatex/source/tex/texlanguage.h @@ -0,0 +1,94 @@ +/* + See license.txt in the root of this project. +*/ + +# ifndef LMT_TEXLANG_H +# define LMT_TEXLANG_H + +/*tex We resolve the properties beforehand and store them in a struct. */ + +typedef struct language_state_info { + struct tex_language **languages; + memory_data language_data; + lua_Integer handler_table_id; + int handler_count; +} language_state_info; + +extern language_state_info lmt_language_state; + +typedef struct lang_variables { + halfword pre_hyphen_char; + halfword post_hyphen_char; + halfword pre_exhyphen_char; + halfword post_exhyphen_char; +} lang_variables; + +/*tex This is used in: */ + +typedef struct tex_language { + halfword pre_hyphen_char; + halfword post_hyphen_char; + halfword pre_exhyphen_char; + halfword post_exhyphen_char; + halfword hyphenation_min; + halfword id; + hjn_dictionary *patterns; + int exceptions; + int wordhandler; + sa_tree hjcode_head; +} tex_language; + +extern tex_language *tex_new_language (halfword n); +extern tex_language *tex_get_language (halfword n); +/* void tex_free_languages (void); */ + +extern void tex_load_patterns (struct tex_language *lang, const unsigned char *buf); +extern void tex_load_hyphenation (struct tex_language *lang, const unsigned char *buf); + +extern void tex_handle_hyphenation (halfword h, halfword t); +extern void tex_clear_patterns (struct tex_language *lang); +extern void tex_clear_hyphenation (struct tex_language *lang); +extern const char *tex_clean_hyphenation (halfword id, const char *buffer, char **cleaned); + +extern void tex_hyphenate_list (halfword head, halfword tail); +extern int tex_collapse_list (halfword head, halfword c1, halfword c2, halfword c3); + +extern void tex_set_pre_hyphen_char (halfword lan, halfword val); +extern void tex_set_post_hyphen_char (halfword lan, halfword val); +extern halfword tex_get_pre_hyphen_char (halfword lan); +extern halfword tex_get_post_hyphen_char (halfword lan); + +extern void tex_set_pre_exhyphen_char (halfword lan, halfword val); +extern void tex_set_post_exhyphen_char (halfword lan, halfword val); +extern halfword tex_get_pre_exhyphen_char (halfword lan); +extern halfword tex_get_post_exhyphen_char (halfword lan); + +extern void tex_set_hyphenation_min (halfword lan, halfword val); +extern halfword tex_get_hyphenation_min (halfword lan); + +extern void tex_dump_language_data (dumpstream f); +extern void tex_undump_language_data (dumpstream f); + +/* char *tex_get_exception_strings (struct tex_language *lang); */ + +extern void tex_load_tex_patterns (halfword curlang, halfword head); +extern void tex_load_tex_hyphenation (halfword curlang, halfword head); + +extern void tex_initialize_languages (void); +extern int tex_is_valid_language (halfword n); + +extern halfword tex_glyph_to_discretionary (halfword glyph, quarterword code, int keepkern); + +/* +void tex_hnj_hyphen_hyphenate( + HyphenDict *dict, + halfword first, + halfword last, + int size, + halfword left, + halfword right, + lang_variables *lan +); +*/ + +# endif |