00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00053 #include "unibreakdef.h"
00054
00059 enum LineBreakClass
00060 {
00061
00062 LBP_Undefined,
00064
00065 LBP_OP,
00066 LBP_CL,
00067 LBP_CP,
00068 LBP_QU,
00069 LBP_GL,
00070 LBP_NS,
00071 LBP_EX,
00072 LBP_SY,
00073 LBP_IS,
00074 LBP_PR,
00075 LBP_PO,
00076 LBP_NU,
00077 LBP_AL,
00078 LBP_HL,
00079 LBP_ID,
00080 LBP_IN,
00081 LBP_HY,
00082 LBP_BA,
00083 LBP_BB,
00084 LBP_B2,
00085 LBP_ZW,
00086 LBP_CM,
00087 LBP_WJ,
00088 LBP_H2,
00089 LBP_H3,
00090 LBP_JL,
00091 LBP_JV,
00092 LBP_JT,
00093 LBP_RI,
00095
00096 LBP_AI,
00097 LBP_BK,
00098 LBP_CB,
00099 LBP_CJ,
00100 LBP_CR,
00101 LBP_LF,
00102 LBP_NL,
00103 LBP_SA,
00104 LBP_SG,
00105 LBP_SP,
00106 LBP_XX
00107 };
00108
00113 struct LineBreakProperties
00114 {
00115 utf32_t start;
00116 utf32_t end;
00117 enum LineBreakClass prop;
00118 };
00119
00124 struct LineBreakPropertiesLang
00125 {
00126 const char *lang;
00127 size_t namelen;
00128 struct LineBreakProperties *lbp;
00129 };
00130
00135 struct LineBreakContext
00136 {
00137 const char *lang;
00138 struct LineBreakProperties *lbpLang;
00139 enum LineBreakClass lbcCur;
00140 enum LineBreakClass lbcNew;
00141 enum LineBreakClass lbcLast;
00142 int fLb21aHebrew;
00143 };
00144
00145
00146 extern struct LineBreakProperties lb_prop_default[];
00147 extern struct LineBreakPropertiesLang lb_prop_lang_map[];
00148
00149
00150 void lb_init_break_context(
00151 struct LineBreakContext *lbpCtx,
00152 utf32_t ch,
00153 const char *lang);
00154 int lb_process_next_char(
00155 struct LineBreakContext *lbpCtx,
00156 utf32_t ch);
00157 void set_linebreaks(
00158 const void *s,
00159 size_t len,
00160 const char *lang,
00161 char *brks,
00162 get_next_char_t get_next_char);