79
78
#include "compat_defs.h"
81
static CHAR txg1[]={"LOCOMP ERR"};
82
static CHAR txg2[]={"NO CELL got"};
83
static CHAR txg3[]={" p=(%d,%d)"};
84
static CHAR txg4[]={" GL OK"};
85
static CHAR txg5[]={" BOX OK"};
86
static CHAR txg6[]={"n,a,m,e,l"};
80
static char txg1[]={"LOCOMP ERR"};
81
static char txg2[]={"NO CELL got"};
82
static char txg3[]={" p=(%d,%d)"};
83
static char txg4[]={" GL OK"};
84
static char txg5[]={" BOX OK"};
85
static char txg6[]={"n,a,m,e,l"};
87
86
// bad letters are allowed to eat good letters:
88
87
// if the eaten letter is in list
89
88
// if the result is registered
97
96
12,13 for turkish palka
99
static BYTE sticks_left_to_bad[] = {" /l1IJ)}] 11"};
102
static BYTE letters_left_to_bad[] = {" nrvtcC(u<>윯|ᑣ"}; // 0th pos for sticks
104
static CHAR ltmp0[] = "kDPbh�� "; /* stick */
105
static CHAR ltmp1[] = "m"; /* n */
106
static CHAR ltmp2[] = "nm"; /* r */
107
static CHAR ltmp3[] = "w"; /* v */
108
static CHAR ltmp4[] = "u"; /* t */
109
static CHAR ltmp5[] = "ao"; /* c */
110
static CHAR ltmp6[] = "O6"; /* C */
111
static CHAR ltmp7[] = "oO6"; /* ( */
112
static CHAR ltmp8[] = "w"; /* u */
113
static CHAR ltmp9[] = "od�"; /* < */
114
static CHAR ltmp10[] = "xX�"; /* > */
115
static CHAR ltmp11[] = "�"; /* � */
116
static CHAR ltmp12[] = "�"; /* � */
117
static CHAR ltmp13[] = "��"; /* � */
118
static CHAR ltmp14[] = "����������"; /* | */
119
static CHAR ltmp15[] = "�"; /* � */
120
static CHAR ltmp16[] = "�"; /* � */
121
static CHAR ltmp17[] = "�"; /* � */
123
static CHAR *results_left_to_bad[] = {
98
static uchar sticks_left_to_bad[] = {" /l1IJ)}] 11"};
101
static uchar letters_left_to_bad[] = {" nrvtcC(u<>윯|ᑣ"}; // 0th pos for sticks
103
static char ltmp0[] = "kDPbh�� "; /* stick */
104
static char ltmp1[] = "m"; /* n */
105
static char ltmp2[] = "nm"; /* r */
106
static char ltmp3[] = "w"; /* v */
107
static char ltmp4[] = "u"; /* t */
108
static char ltmp5[] = "ao"; /* c */
109
static char ltmp6[] = "O6"; /* C */
110
static char ltmp7[] = "oO6"; /* ( */
111
static char ltmp8[] = "w"; /* u */
112
static char ltmp9[] = "od�"; /* < */
113
static char ltmp10[] = "xX�"; /* > */
114
static char ltmp11[] = "�"; /* � */
115
static char ltmp12[] = "�"; /* � */
116
static char ltmp13[] = "��"; /* � */
117
static char ltmp14[] = "����������"; /* | */
118
static char ltmp15[] = "�"; /* � */
119
static char ltmp16[] = "�"; /* � */
120
static char ltmp17[] = "�"; /* � */
122
static char *results_left_to_bad[] = {
124
123
ltmp0, ltmp1, ltmp2, ltmp3, ltmp4, ltmp5, ltmp6, ltmp7, ltmp8, ltmp9,
125
124
ltmp10, ltmp11, ltmp12, ltmp13, ltmp14, ltmp15, ltmp16, ltmp17
129
128
0 pos reserved for liga_i
130
129
6-7 pos for turkish II_dot_accent, i_sans_accent 21.05.2002 E.P.
132
static BYTE sticks_right_to_bad[] = {" /l1I]11"}; // 1st pos reserved for liga_i
133
static BYTE letters_right_to_bad[] = {" nvt)u><�斮���"}; // 0th pos for sticks
135
static CHAR rtmp0[] = "d����";
136
static CHAR rtmp1[] = "m"; /* n */
137
static CHAR rtmp2[] = "w"; /* v */
138
static CHAR rtmp3[] = "u"; /* t */
139
static CHAR rtmp4[] = "o"; /* ) */
140
static CHAR rtmp5[] = "w"; /* u */
141
static CHAR rtmp6[] = "bop6D�"; /* < */
142
static CHAR rtmp7[] = "kXx��"; /* > */
143
static CHAR rtmp8[] = "��"; /* � */
144
static CHAR rtmp9[] = "�"; /* � */
145
static CHAR rtmp10[] = "�"; /* � */
146
static CHAR rtmp11[] = "�"; /* � */
147
static CHAR rtmp12[] = "�"; /* � */
148
static CHAR rtmp13[] = "�"; /* � */
149
static CHAR rtmp14[] = "�"; /* � */
151
static CHAR *results_right_to_bad[] = {
131
static uchar sticks_right_to_bad[] = {" /l1I]11"}; // 1st pos reserved for liga_i
132
static uchar letters_right_to_bad[] = {" nvt)u><�斮���"}; // 0th pos for sticks
134
static char rtmp0[] = "d����";
135
static char rtmp1[] = "m"; /* n */
136
static char rtmp2[] = "w"; /* v */
137
static char rtmp3[] = "u"; /* t */
138
static char rtmp4[] = "o"; /* ) */
139
static char rtmp5[] = "w"; /* u */
140
static char rtmp6[] = "bop6D�"; /* < */
141
static char rtmp7[] = "kXx��"; /* > */
142
static char rtmp8[] = "��"; /* � */
143
static char rtmp9[] = "�"; /* � */
144
static char rtmp10[] = "�"; /* � */
145
static char rtmp11[] = "�"; /* � */
146
static char rtmp12[] = "�"; /* � */
147
static char rtmp13[] = "�"; /* � */
148
static char rtmp14[] = "�"; /* � */
150
static char *results_right_to_bad[] = {
152
151
rtmp0, rtmp1, rtmp2, rtmp3, rtmp4, rtmp5, rtmp6, rtmp7, rtmp8, rtmp9,
153
152
rtmp10, rtmp11, rtmp12, rtmp13, rtmp14,
158
static INT glue_pass;
159
static CHAR percgot; // percent was got as result of a glue
157
static int16_t glue_pass;
158
static char percgot; // percent was got as result of a glue
162
161
void collect_pat(cell *BC, s_glue *GL, cell *EC);
163
cell * finpat(cell *BC, s_glue *GL, INT var, BYTE flag,BYTE pen);
162
cell * finpat(cell *BC, s_glue *GL, int16_t var, uchar flag,uchar pen);
165
extern BYTE db_status; //snap presence
166
//extern BYTE accent_tab[];
164
extern uchar db_status; //snap presence
165
//extern uchar accent_tab[];
168
167
static void glue_let_dust();
169
168
static void glue_let_bad();
172
171
static void glue_all_dusts();
174
static INT contain(cell *,cell *);
173
static int16_t contain(cell *,cell *);
175
174
static cut_pos cposd;
176
175
// russian glue-heuristics
177
176
static void glue_III();
178
static BOOL config_III(cell *BC,cell *EC, cell *ECN);
179
static BOOL config_brace_and_K(cell *BC,cell *EC);
180
static BOOL config_CapRusGe_and_bad(cell *BC,cell *EC);
177
static Bool config_III(cell *BC,cell *EC, cell *ECN);
178
static Bool config_brace_and_K(cell *BC,cell *EC);
179
static Bool config_CapRusGe_and_bad(cell *BC,cell *EC);
182
static INT is_bad_turkish_glue(BYTE c1, BYTE c2, BYTE c3); // 27.06.2002 E.P.
181
static int16_t is_bad_turkish_glue(uchar c1, uchar c2, uchar c3); // 27.06.2002 E.P.
184
183
void make_all_glues()
189
188
sticks_left_to_bad[0] = liga_i; // 10.09.2000 E.P.
190
189
sticks_left_to_bad[1] = liga_exm; // 10.09.2000 E.P.
326
325
cell *BC,*LC,*WC,*WS,*CC,*DC;
327
INT bdiff; CHAR dflag;
328
INT i, nsc, ngc, n, p1, p1l, p2;
326
int16_t bdiff; char dflag;
327
int16_t i, nsc, ngc, n, p1, p1l, p2;
331
BYTE c1, c1l, c2, cp;
330
uchar c1, c1l, c2, cp;
336
335
snap_newpass('b');
505
static CHAR txt11[]="B-->B";
506
static CHAR txt12[]="B-->L";
507
static CHAR txt21[]="B<--B";
508
static CHAR txt22[]="L<--B";
504
static char txt11[]="B-->B";
505
static char txt12[]="B-->L";
506
static char txt21[]="B<--B";
507
static char txt22[]="L<--B";
511
INT glue_to_o (BYTE c2, BYTE c3, cell *BC, cell *EC)
510
int16_t glue_to_o (uchar c2, uchar c3, cell *BC, cell *EC)
514
513
( ( c2=='(' ) || ( c2=='<') ) &&
529
BYTE broken_ii; // broken '�','�','�'
528
uchar broken_ii; // broken '�','�','�'
531
530
static void glue_let_bad()
533
INT i, j, dist, ndist, wdg, bdiff, trsuccess;
536
BYTE *tx1, *tx2, **rp1, *rp2, *rps, c2, c3, cw, flb;
532
int16_t i, j, dist, ndist, wdg, bdiff, trsuccess;
535
uchar *tx1, *tx2, **rp1, *rp2, *rps, c2, c3, cw, flb;
538
537
cell *B1, *B2, *BP, *BD, *BC, *EC, *WS;
539
538
void *k1, *k2, *k3;
541
CHAR sgfl,fgd, flgBOX, ww[40];
540
char sgfl,fgd, flgBOX, ww[40];
544
543
SVERS svv1, sav1, sav2;
546
INT inc=0; cell *C[8];
545
int16_t inc=0; cell *C[8];
549
548
flb=0; // 1st pass: B+B only
1259
BOOL config_III(cell *BC,cell *EC, cell *ECN)
1258
Bool config_III(cell *BC,cell *EC, cell *ECN)
1261
1260
return( (EC->flg&c_f_bad) &&
1262
1261
(ECN->flg&c_f_let) &&
1263
1262
BC->broken_II && (BC->flg&c_f_let) && BC->nvers>0 &&
1264
(BC->vers[0].let==(BYTE)'�' ||
1265
BC->vers[1].let==(BYTE)'�'&& BC->vers[1].prob==BC->vers[0].prob ||
1266
BC->vers[2].let==(BYTE)'�'&& BC->vers[2].prob==BC->vers[0].prob) );
1263
(BC->vers[0].let==(uchar)'�' ||
1264
BC->vers[1].let==(uchar)'�'&& BC->vers[1].prob==BC->vers[0].prob ||
1265
BC->vers[2].let==(uchar)'�'&& BC->vers[2].prob==BC->vers[0].prob) );
1270
BOOL config_CapRusGe_and_bad(cell *BC,cell *EC)
1269
Bool config_CapRusGe_and_bad(cell *BC,cell *EC)
1273
1272
BP = ( BC!=cell_f())?BC->prev:NULL;
1281
1280
!is_russian_turkish_conflict(BP->vers[0].let) // 21.05.2002 E.P.
1283
1282
BP->nvers>0 && BP->vers[0].let=='|' &&
1284
BPP!=NULL && BPP->nvers>0 && BPP->vers[0].let==(BYTE)'�' &&
1283
BPP!=NULL && BPP->nvers>0 && BPP->vers[0].let==(uchar)'�' &&
1285
1284
!is_russian_baltic_conflict(BPP->vers[0].let) &&// 17.07.2001 E.P.
1286
1285
!is_russian_turkish_conflict(BPP->vers[0].let) // 21.05.2002 E.P.
1288
BC->nvers>0 && BC->vers[0].let==(BYTE)'�' && BC->vers[0].prob<220 &&
1287
BC->nvers>0 && BC->vers[0].let==(uchar)'�' && BC->vers[0].prob<220 &&
1292
BOOL config_brace_and_K(cell *BC,cell *EC)
1291
Bool config_brace_and_K(cell *BC,cell *EC)
1294
return( BC->nvers>0 && BC->vers[0].let==(BYTE)'>' &&
1295
EC->nvers>0 && EC->vers[0].let==(BYTE)'�' &&
1293
return( BC->nvers>0 && BC->vers[0].let==(uchar)'>' &&
1294
EC->nvers>0 && EC->vers[0].let==(uchar)'�' &&
1296
1295
EC->col - BC->col - BC->w<3 );