diff options
author | Hans Hagen <pragma@wxs.nl> | 2022-09-16 15:53:42 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2022-09-16 15:53:42 +0200 |
commit | c161b7d6fe142231346cc1844e6e27c0ab7718c1 (patch) | |
tree | 3fd877b8986137703e987e4651a2db8e946a0f72 /source/luametatex/source/tex/texlanguage.h | |
parent | e94fa4dc30ec28a6727aa85e17aaac18b76aeadb (diff) | |
download | context-c161b7d6fe142231346cc1844e6e27c0ab7718c1.tar.gz |
2022-09-16 14:41:00
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 |