2
2
Copyright (c) 1993-2008, Cognitive Technologies
5
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
8
* ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
���� ����������� �� ��������� �����, ���� ������ ������� � �����������
11
* ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
������ ����������, ������������ ��� ���������������, ������ �����������
13
��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
����������� ����� �� ��������.
15
* �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
���� ������������ � �������� �������� ��������� �/��� �����������
17
���������, ���������� �� ���� ��, ��� ���������������� �����������
20
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
������������� ������, ��������� � �������������� ��� ���������� ����������
27
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
5
пЮГПЕЬЮЕРЯЪ ОНБРНПМНЕ ПЮЯОПНЯРПЮМЕМХЕ Х ХЯОНКЭГНБЮМХЕ ЙЮЙ Б БХДЕ ХЯУНДМНЦН ЙНДЮ,
6
РЮЙ Х Б ДБНХВМНИ ТНПЛЕ, Я ХГЛЕМЕМХЪЛХ ХКХ АЕГ, ОПХ ЯНАКЧДЕМХХ ЯКЕДСЧЫХУ СЯКНБХИ:
8
* оПХ ОНБРНПМНЛ ПЮЯОПНЯРПЮМЕМХХ ХЯУНДМНЦН ЙНДЮ ДНКФМШ НЯРЮБЮРЭЯЪ СЙЮГЮММНЕ
9
БШЬЕ СБЕДНЛКЕМХЕ НА ЮБРНПЯЙНЛ ОПЮБЕ, ЩРНР ЯОХЯНЙ СЯКНБХИ Х ОНЯКЕДСЧЫХИ
11
* оПХ ОНБРНПМНЛ ПЮЯОПНЯРПЮМЕМХХ ДБНХВМНЦН ЙНДЮ Б ДНЙСЛЕМРЮЖХХ Х/ХКХ Б
12
ДПСЦХУ ЛЮРЕПХЮКЮУ, ОНЯРЮБКЪЕЛШУ ОПХ ПЮЯОПНЯРПЮМЕМХХ, ДНКФМШ ЯНУПЮМЪРЭЯЪ
13
СЙЮГЮММЮЪ БШЬЕ ХМТНПЛЮЖХЪ НА ЮБРНПЯЙНЛ ОПЮБЕ, ЩРНР ЯОХЯНЙ СЯКНБХИ Х
14
ОНЯКЕДСЧЫХИ НРЙЮГ НР ЦЮПЮМРХИ.
15
* мХ МЮГБЮМХЕ Cognitive Technologies, МХ ХЛЕМЮ ЕЕ ЯНРПСДМХЙНБ МЕ ЛНЦСР
16
АШРЭ ХЯОНКЭГНБЮМШ Б ЙЮВЕЯРБЕ ЯПЕДЯРБЮ ОНДДЕПФЙХ Х/ХКХ ОПНДБХФЕМХЪ
17
ОПНДСЙРНБ, НЯМНБЮММШУ МЮ ЩРНЛ он, АЕГ ОПЕДБЮПХРЕКЭМНЦН ОХЯЭЛЕММНЦН
20
щрю опнцпюллю опеднярюбкемю бкюдекэжюлх юбрнпяйху опюб х/хкх дпсцхлх кхжюлх "йюй
21
нмю еярэ" аег йюйнцн-кхан бхдю цюпюмрхи, бшпюфеммшу ъбмн хкх ондпюгслебюелшу,
22
бйкчвюъ цюпюмрхх йнллепвеяйни жеммнярх х опхцндмнярх дкъ йнмйпермни жекх, мн ме
23
нцпюмхвхбюъяэ хлх. мх бкюдекеж юбрнпяйху опюб х мх ндмн дпсцне кхжн, йнрнпне
24
лнфер хглемърэ х/хкх онбрнпмн пюяопнярпюмърэ опнцпюллс, мх б йнел яксвюе ме
25
мея╗р нрберярбеммнярх, бйкчвюъ кчаше наыхе, яксвюимше, яоежхюкэмше хкх
26
онякеднбюбьхе сашрйх, ябъгюммше я хяонкэгнбюмхел хкх онмеяеммше бякедярбхе
27
мебнглнфмнярх хяонкэгнбюмхъ опнцпюллш (бйкчвюъ онрепх дюммшу, хкх дюммше,
28
ярюбьхе мецндмшлх, хкх сашрйх х/хкх онрепх днунднб, онмеяеммше хг-гю деиярбхи
29
рперэху кхж х/хкх нрйюгю опнцпюллш пюанрюрэ янблеярмн я дпсцхлх опнцпюллюлх,
30
мн ме нцпюмхвхбюъяэ щрхлх яксвюълх), мн ме нцпюмхвхбюъяэ хлх, дюфе еякх рюйни
31
бкюдекеж хкх дпсцне кхжн ашкх хгбеыемш н бнглнфмнярх рюйху сашрйнб х онрепэ.
33
33
Redistribution and use in source and binary forms, with or without modification,
34
34
are permitted provided that the following conditions are met:
71
70
#include "compat_defs.h"
73
extern BOOL line_readyBL;
74
extern BYTE p2_active;
76
extern INT page_nIncline;
77
extern BYTE line_scale;
78
extern WORD actual_resolution;
72
extern Bool line_readyBL;
73
extern uchar p2_active;
74
extern int16_t nIncline;
75
extern int16_t page_nIncline;
76
extern uchar line_scale;
77
extern uint16_t actual_resolution;
81
80
#define WORDMAX 100
82
struct word_inf {cell *c; INT dens,n;} bld[WORDMAX];
81
struct word_inf {cell *c; int16_t dens,n;} bld[WORDMAX];
85
84
static void italic(cell *);
86
static INT linerev(INT,INT *);
87
static LONG inclin(INT,INT *);
85
static int16_t linerev(int16_t,int16_t *);
86
static int32_t inclin(int16_t,int16_t *);
88
87
static void serif(cell *);
89
88
static void underline();
90
static BYTE keg_word(cell *,cell *,INT,B_LINES *);
89
static uchar keg_word(cell *,cell *,int16_t,B_LINES *);
91
90
static void bold_word(cell *,cell *,struct word_inf *);
92
static INT dens_let(cell *);
91
static int16_t dens_let(cell *);
92
static int16_t pitch();
96
extern BYTE line_tabcell;
98
static BYTE bad_italic[]="03���������eocOC"; // a g m u..."03���������eocOC"
99
static BYTE nei_italic[]="02356789()%����������"; // "02356789()%����������"
100
static BYTE one_italic[]="��"; // "��"
95
extern uchar line_tabcell;
97
static uchar bad_italic[]="03┤▌▒²╔╖╝АМeocOC"; // a g m u..."03гнящЕГНЯЩeocOC"
98
static uchar nei_italic[]="02356789()%┤▌▒²╔╖╘╝АМ"; // "02356789()%гнящЕГИНЯЩ"
99
static uchar one_italic[]="╒╙"; // "БЙ"
104
struct B { INT mid; // �ࠪ���⨪�
103
struct B { int16_t mid; // Е═Ю═╙Б╔Ю╗АБ╗╙═
106
uint16_t n; // Г╗А╚╝ А╗╛╒╝╚╝╒
109
108
typedef struct B STAT;
328
c->pos_inc = (BYTE)sv_pos_inc ;
327
c->pos_inc = (uchar)sv_pos_inc ;
329
328
c->stick_inc = sv_stick_inc ;
330
329
c->save_stick_inc = sv_save_stick_inc ;
334
// ������� ����������� � ��������� ������������ '���������' �� ������ ����.
335
// ��� ����� ������������� ������-0x01 �/��� �����-0x02 �� �����
336
static CHAR tabincl[256]={
333
// рЮАКХЖЮ ХМТНПЛХПСЕР Н БНГЛНФМНЛ ПЮЯОНКНФЕМХХ 'ГЮБХРСЬЕЙ' МЮ ЙНМЖЮУ АСЙБ.
334
// нМХ ЛНЦСР ПЮЯОНКЮЦЮРЭЯЪ ЯОПЮБЮ-0x01 Х/ХКХ ЯКЕБЮ-0x02 НР АСЙБШ
335
static char tabincl[256]={
337
336
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 0 - 23
338
337
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 24 - 47
339
338
// ! " # $ % & ' ( ) * + , - . /
346
345
0,2,0,1,0,0,0,2,3,3,2,3,3,3,0,2,1,2,0,3,3,0,0,0,0,0,// 97 - 122
347
346
// a b c d e f g h i j k l m n o p q r s t u v w x y z
348
347
0,0,0,0,0,0,2,2,2,0,2,3,0,3,3,2,1,3,3,0,3,2,0,3,3,0,3,3,//123 - 150
349
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
348
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
350
349
3,3,3,2,3,2,0,2,1,0,0,2,2,0,0,3,0,3,3,2,1,3,3,0,3,0,// 151 - 176
351
// � � � � � � � � � � � � � � � � � � � � � � � � � �
350
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
352
351
0, 0, 0, 0, 2, 2,0,0, 0, 2,1,0,0, // 177 - 189
353
352
// fi fl ff ffi rt ri % % ffl i j ! ?
354
// � � � � � � � � � � � � �
353
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
355
354
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
356
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
355
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
357
356
2,0,3,3,3,3,3,3,3,3,2,3,2,0,2,1, // 224 - 239
358
// � � � � � � � � � � � � � � � �
357
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
359
358
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 240 - 255
360
// � � � � � � � � � � � � � � �
359
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
361
360
#define KEGMAX 63
362
361
#define KEGMIN 12
388
387
/* printf("let=%c,h=%u,mini=%u,maxi=%u\n",let,c->h,mini,maxi);*/
389
388
if (f&RINCL) {memset(right,0,h+h); nr=h;}
390
389
if (f&LINCL) {for (i=0; i<h; i++) left[i]=WMAX; nl=h;}
391
for (line=(lnhead *)((PCHAR)(c->env)+c->env->lines+sizeof(INT));
392
line->lth>0; line=(lnhead *)((PCHAR)line+line->lth))
390
for (line=(lnhead *)((pchar)(c->env)+c->env->lines+sizeof(int16_t));
391
line->lth>0; line=(lnhead *)((pchar)line+line->lth))
393
392
if (line->row<=maxi && line->row+line->h>mini)
395
intv0=(interval *)((PCHAR)line+sizeof(lnhead));
394
intv0=(interval *)((pchar)line+sizeof(lnhead));
396
395
intv=intv0+MAX(0,mini-line->row);
397
396
intve=intv0+MIN(maxi+1-line->row,line->h);
398
397
/* printf("y=%u,h=%u,b=%u,e=%u\n",line->row,line->h,
450
// ������ ���ନ��� � ��������� �ᯮ������� ��䮢 �� �㪢�
451
// ��� ����� ��������� � ������-0x01 �/��� ���孥�-0x02 ��� �㪢�
452
static CHAR tabserif[256]={
449
// ▓═║╝╗Ф═ ╗╜Д╝Ю╛╗ЮЦ╔Б ╝ ╒╝╖╛╝╕╜╝╛ Ю═А╞╝╚╝╕╔╜╗╗ А╔Ю╗Д╝╒ ╜═ ║Ц╙╒╔
450
// ▌╜╗ ╛╝ёЦБ Ю═╞╝╚╝ё═БЛАО ╒ ╜╗╕╜╔╘-0x01 ╗/╗╚╗ ╒╔ЮЕ╜╔╘-0x02 Г═АБ╗ ║Ц╙╒К
451
static char tabserif[256]={
453
452
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 0-23
454
453
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 24-47
455
454
// ! " # $ % & ' ( ) * + , - . /
462
461
0,1,0,1,0,1,0,1,1,1,1,1,1,1,0,3,3,1,0,0,0,2,2,0,2,0, // 97-122
463
462
// a b c d e f g h i j k l m n o p q r s t u v w x y z
464
463
0,0,0,0,0,1,3,3,3,1,3,0,0,3,3,3,1,3,3,0,1,3,0,1,2,3,0,3,//123-150
465
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
464
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
466
465
3,0,0,3,3,3,0,0,3,0,0,3,3,1,0,0,0,3,3,3,1,3,3,0,1,0, //151-176
467
// � � � � � � � � � � � � � � � � � � � � � � � � � �
466
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
468
467
1, 1, 1, 1, 1, 1,0,0, 1, 1,0,0,0, // 177-189
469
468
// fi fl ff ffi rt ri % % ffl i j ! ?
470
// � � � � � � � � � � � � �
469
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
471
470
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
472
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
471
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
473
472
3,0,3,2,3,0,3,3,0,0,3,3,3,0,0,3, // 224 - 239
474
// � � � � � � � � � � � � � � � �
473
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
475
474
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 240 - 255
476
// � � � � � � � � � � � � � � �
475
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
479
478
static void serif(cell *c)
483
482
interval *i1,*i2;
484
INT H,n1,n2,h,b1,b2,e1,e2;
483
int16_t H,n1,n2,h,b1,b2,e1,e2;
487
486
let=let_sans_acc[c->vers[0].let];
488
for (n1=n2=0,line=(lnhead *)((PCHAR)(c->env)+c->env->lines+sizeof(INT));
489
line->lth>0; line=(lnhead *)((PCHAR)line+line->lth))
487
for (n1=n2=0,line=(lnhead *)((pchar)(c->env)+c->env->lines+sizeof(int16_t));
488
line->lth>0; line=(lnhead *)((pchar)line+line->lth))
491
490
if (tabserif[let]&LSER && line->flg&l_fend && (h=line->h)>=5 && h>=H/4 &&
492
491
line->row+h+2>=H && !(c->font&c_fp_it && memchr("BLb",let,3)))
494
i1=(interval *)((PCHAR)line+sizeof(lnhead))+(h-3);
493
i1=(interval *)((pchar)line+sizeof(lnhead))+(h-3);
496
495
b1=MIN(MIN(i1->e-i1->l,(i1+1)->e-(i1+1)->l),(i1+2)->e-(i1+2)->l);
497
496
e1=MAX(MAX(i1->e,(i1+1)->e),(i1+2)->e);
548
547
pitchsize=pitch();
550
static int16_t pitch()
555
INT nl,nc,ng,n,n1,n2,h,w,ww,wmin,wmax,i,j,sp,bad,d,p,mg;
557
WORD center[LSTRMAX],left[LSTRMAX],right[LSTRMAX];
554
int16_t nl,nc,ng,n,n1,n2,h,w,ww,wmin,wmax,i,j,sp,bad,d,p,mg;
556
uint16_t center[LSTRMAX],left[LSTRMAX],right[LSTRMAX];
559
558
for (nl=nc=ng=0,c=(cell_f())->next; c->next!=NULL; c=c->next)
560
559
if (c->flg&(c_f_let|c_f_bad))
1132
1131
#define BNDPROB 100
1134
static CHAR tabpos[256]={
1133
static char tabpos[256]={
1135
1134
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1136
1135
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1137
1136
// ! " # $ % & ' ( ) * + , - . /
1149
1148
0, 0, 0, 0, 4, 1,0,0, 0, 2,0,0,0};
1150
1149
// fi fl ff ffi rt ri % % ffl i j ! ?
1152
// ������ ���ନ��� � ��������� �ᯮ������� �㪢� �⭮�⥫쭮
1153
// 4-� ������� �����.
1151
// ▓═║╚╗Ф═ ╗╜Д╝Ю╛╗ЮЦ╔Б ╝ ╒╝╖╛╝╕╜╝╛ Ю═А╞╝╚╝╕╔╜╗╗ ║Ц╙╒К ╝Б╜╝А╗Б╔╚Л╜╝
1152
// 4-Е ║═╖╝╒КЕ ╚╗╜╗╘.
1155
1154
// ___________ 2 0,4 -- ??????
1156
1155
// ___________ 1 2 3
1157
1156
// ___________ 3
1159
static CHAR tabpos[256]={
1158
static char tabpos[256]={
1160
1159
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 0-23
1161
1160
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 24-47
1162
1161
// ! " # $ % & ' ( ) * + , - . /
1169
1168
1,2,1,2,1,0,3,2,0,3,2,2,1,1,1,3,3,1,1,4,1,1,1,1,3,1, // 97-122
1170
1169
// a b c d e f g h i j k l m n o p q r s t u v w x y z
1171
1170
0,0,0,0,0,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,//123-150 ,0,
1172
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
1171
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
1173
1172
2,2,0,2,2,2,2,2,2,1,2,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,// 151 - 176
1174
// � � � � � � � � � � � � � � � � � � � � � � � � � �
1173
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
1175
1174
0, 0, 0, 0, 4, 1,0,0, 0, 2,0,0,0, // 177-189
1176
1175
// fi fl ff ffi rt ri % % ffl i j ! ?
1177
// � � � � � � � � � � � � �
1176
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
1178
1177
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
1179
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
1178
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
1180
1179
3,1,1,3,3,1,0,1,1,0,1,1,1,1,1,1, // 224 - 239
1181
// � � � � � � � � � � � � � � � �
1180
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
1182
1181
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 240 - 255
1183
// � � � � � � � � � � � � � � �
1182
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
1184
1183
// from pass3.c
1185
static BYTE keg_word(cell *c1,cell *c2,INT n,B_LINES *bl)
1184
static uchar keg_word(cell *c1,cell *c2,int16_t n,B_LINES *bl)
1187
INT s[4],m[4],i,ss,bm1,bm2;
1186
int16_t s[4],m[4],i,ss,bm1,bm2;
1191
1190
if (!n) return 0;
1192
1191
if (bl->n2>=3 && bl->n3>=3)
1193
return (BYTE)bl->ps;
1192
return (uchar)bl->ps;
1194
1193
if( bl->n1>=3 && bl->n3>=3 && bl->n2<1 && bl->n4<1 )
1195
return (BYTE)bl->ps;
1194
return (uchar)bl->ps;
1196
1195
if( line_readyBL )
1197
return (BYTE)bl->ps;
1196
return (uchar)bl->ps;
1198
1197
for (ss=s[0]=s[1]=s[2]=s[3]=m[0]=m[1]=m[2]=m[3]=bm1=bm2=0,c=c1;
1199
1198
c!=c2; c=c->next)
1200
1199
if (c->flg&c_f_let)
1391
1390
#define MKEGDENS 65
1392
1391
#define MDENS 4
1394
static CHAR tabss[256]={
1393
static char tabss[256]={
1395
1394
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1396
1395
0,0,0,0,0,0,0,0,0,0,0,0,2,-7,1,0,0,0,0,0,0,0,0,-8,
1397
1396
// ! " # $ % & ' ( ) * + , - . /
1409
1408
3, 3, 1, 3, 3, 4,0,0, 3, 0,0,0,-2};
1410
1409
// fi fl ff ffi rt ri % % ffl i j ! ?
1412
static CHAR tabgs[256]={
1411
static char tabgs[256]={
1413
1412
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1414
1413
0,0,0,0,0,0,0,0,0,0,0,0,1,-7,-1,0,0,0,0,0,0,0,0,-11,
1415
1414
// ! " # $ % & ' ( ) * + , - . /
1427
1426
3, 3, 1, 3, -2, 0,0,0, 3, 0,0,0,-2};
1428
1427
// fi fl ff ffi rt ri % % ffl i j ! ?
1430
static CHAR tabgi[256]={
1429
static char tabgi[256]={
1431
1430
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1432
1431
0,0,0,0,0,0,0,0,0,0,0,0,1,-7,-1,0,0,0,0,0,0,0,0,-9,
1433
1432
// ! " # $ % & ' ( ) * + , - . /
1445
1444
2, 3, 0, 2, 2, 3,0,0, 2, 0,0,0,-2};
1446
1445
// fi fl ff ffi rt ri % % ffl i j ! ?
1448
static CHAR tabcr[256]={
1447
static char tabcr[256]={
1449
1448
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1450
1449
0,0,0,0,0,0,0,0,0,0,0,0,1,-7,-1,0,0,0,0,0,0,0,0,-8,
1451
1450
// ! " # $ % & ' ( ) * + , - . /
1463
1462
3, 3, 1, 3, 3, 4,0,0, 3, 0,0,0,-2};
1464
1463
// fi fl ff ffi rt ri % % ffl i j ! ?
1466
static CHAR tabmd[256]={
1465
static char tabmd[256]={
1467
1466
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1468
1467
0,0,0,0,0,0,0,0,0,0,0,0,2,-7,-1,0,0,0,0,0,0,0,0,-8,
1469
1468
// ! " # $ % & ' ( ) * + , - . /
1482
1481
// fi fl ff ffi rt ri % % ffl i j ! ?
1485
// ������� ������������� ��������� ����� � ����������� ��
1486
// ������ ����� �������.
1484
// рЮАКХЖШ ЙНППЕЙРХПНБЙХ ОКНРМНЯРХ АСЙБШ Б ГЮБХЯХЛНЯРХ НР
1485
// ПЮГМШУ РХОНБ ЬПХТРНБ.
1488
// ���� ����� ����� ��� '������'.
1489
static CHAR tabgi[256]={
1487
// еЯКХ ЬПХТР ХЛЕЕР РХО 'ХРЮКХЙ'.
1488
static char tabgi[256]={
1490
1489
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1491
1490
0,0,0,0,0,0,0,0,0,0,0,0,1,-7,-1,0,0,0,0,0,0,0,0,-9,
1492
1491
// ! " # $ % & ' ( ) * + , - . /
1499
1498
3,-2,-2,-2,3,-5,0,-2,0,0,-2,0,1,2,2,-1,-3,-2,2,0,2,-3,2,-1,-4,0,
1500
1499
// a b c d e f g h i j k l m n o p q r s t u v w x y z
1501
1500
0,0,0,0,0,-1,2,3,-4,-1,-2,-1,-2,-1,-1,-1,-2, 0,-2,-1,-1,-1,-3,-2,-3, 1,-2,-3,//123-150 ,0,
1502
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
1501
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
1503
1502
-1,-1,-2, 3, 1, 0,-2, 0,2,3,-1, 6,-2,2,3,2,1,2,2,1,1,2,2,2,2,0,// 151 - 176
1504
// � � � � � � � � � � � � � � � � � � � � � � � � � �
1503
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
1505
1504
2, 3, 0, 2, 2, 3,0,0, 2, 0,0,0,-2,
1506
1505
// fi fl ff ffi rt ri % % ffl i j ! ?
1507
// � � � � � � � � � � � � �
1506
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
1508
1507
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
1509
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
1508
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
1510
1509
-1,-2,-2,-2,-2, 1,1,1,3,1, 5,4,4,0,4,4, // 224 - 239
1511
// � � � � � � � � � � � � � � � �
1510
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
1512
1511
0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0}; // 240 - 255
1513
// � � � � � � � � � � � � � � �
1517
// ����� ���� ���ᨢ� � ���� �� ������.
1518
// ��ਭ� �㪢� ����।�����. ���� ����.
1519
static CHAR tabss[256]={
1512
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
1516
// └═╚╔╔ ╗╓ЦБ ╛═АА╗╒К ╔А╚╗ ХЮ╗ДБ █┘ ┬▓─▀┬┼.
1517
// ≤╗Ю╗╜═ ║Ц╙╒К ╜╔╝╞Ю╔╓╔╚╔╜═. ≤Ю╗ДБ А╔Ю╗Д╜К╘.
1518
static char tabss[256]={
1520
1519
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1521
1520
0,0,0,0,0,0,0,0,0,0,0,0,2,-7,1,0,0,0,0,0,0,0,0,-8,
1522
1521
// ! " # $ % & ' ( ) * + , - . /
1529
1528
4,-1,0,0,3,0,2,1,0,-1,-1,0,3,4,3,-1,-1,1,3,0,4,-2,0,2,-2,2,
1530
1529
// a b c d e f g h i j k l m n o p q r s t u v w x y z
1531
1530
0,0,0,0,0,-3,2,4,-2,-3,3,-2,0, 0, 0,-1,-4,0,0,-2,0, 0,-3,-3,-4, 0,-2,-3,//123-150 ,0,
1532
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
1531
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
1533
1532
-2, 0,-2,-1, 0, 1, 0,-1,1,3,2,6,1,0,4,2,2,4,4, 3,-2,3,3,1,4,0,// 151 - 176
1534
// � � � � � � � � � � � � � � � � � � � � � � � � � �
1533
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
1535
1534
3, 3, 1, 3, 3, 4,0,0, 3, 0,0,0,-2,
1536
1535
// fi fl ff ffi rt ri % % ffl i j ! ?
1537
// � � � � � � � � � � � � �
1536
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
1538
1537
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
1539
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
1538
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
1540
1539
1,1,0,-4,-1,3,0,1,2,0, 0,4, 2,2,2,4, // 224 - 239
1541
// � � � � � � � � � � � � � � � �
1540
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
1542
1541
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 240 - 255
1543
// � � � � � � � � � � � � � � �
1546
// ��ਭ� �㪢� ����।�����. ���� �� ����.
1547
static CHAR tabgs[256]={
1542
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
1545
// ≤╗Ю╗╜═ ║Ц╙╒К ╜╔╝╞Ю╔╓╔╚╔╜═. ≤Ю╗ДБ █┘ А╔Ю╗Д╜К╘.
1546
static char tabgs[256]={
1548
1547
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1549
1548
0,0,0,0,0,0,0,0,0,0,0,0,1,-7,-1,0,0,0,0,0,0,0,0,-11,
1550
1549
// ! " # $ % & ' ( ) * + , - . /
1557
1556
3,0,-1,0,2,-1,3,0,0,0,-1,0,1,3,1,1,0,0,2,0,1,-2,1,0,-3,2,
1558
1557
// a b c d e f g h i j k l m n o p q r s t u v w x y z
1559
1558
0,0,0,0,0,-2,2,4,-4,-2,0,-1,-1,2,2,-1,-2,2,0,-2,1,-1,-3,-5,-3,-1,-2,-3,//123-150 ,0,
1560
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
1559
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
1561
1560
-3, 0,-3,-2, 1,0,-1,0,1,4,2,8,-1,1,4,3,3,6,4, 4, 1,5,4,2,4,0,// 151 - 176
1562
// � � � � � � � � � � � � � � � � � � � � � � � � � �
1561
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
1563
1562
3, 3, 1, 3, -2, 0,0,0, 3, 0,0,0,-2,
1564
1563
// fi fl ff ffi rt ri % % ffl i j ! ?
1565
// � � � � � � � � � � � � �
1564
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
1566
1565
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
1567
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
1566
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
1568
1567
1, 1,-4,-3,-1,2,-0,1,3,-1,-0,5,3,2,3,4, // 224 - 239
1569
// � � � � � � � � � � � � � � � �
1568
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
1570
1569
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 240 - 255
1571
// � � � � � � � � � � � � � � �
1575
// . ��ਭ� �㪢� ����� 祬 ࠧ��� �����.
1576
static CHAR tabcr[256]={
1570
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
1574
// . ≤╗Ю╗╜═ ║Ц╙╒К ║╝╚ЛХ╔ Г╔╛ Ю═╖╛╔Ю ╙╔ё╚О.
1575
static char tabcr[256]={
1577
1576
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1578
1577
0,0,0,0,0,0,0,0,0,0,0,0,1,-7,-1,0,0,0,0,0,0,0,0,-8,
1579
1578
// ! " # $ % & ' ( ) * + , - . /
1586
1585
5,1,1,1,6,1,2,0,0,0,-2,0,5,2,2,2,1,0,6,0,0,-1,3,3,-2,2,
1587
1586
// a b c d e f g h i j k l m n o p q r s t u v w x y z
1588
1587
0,0,0,0,0,1,2,3,-3,-2,2,-2,-1,1,1,-1,-2,2,1,-1,1,-1,-3,-1,-3,-2,-1,-3,//123-150 ,0,
1589
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
1588
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
1590
1589
-2, 0,-2,0, 0,-1,-1,0,0,5,4,7,0,4,4,4,4,5,6, 5, 0,5,4,1,6,0,// 151 - 176
1591
// � � � � � � � � � � � � � � � � � � � � � � � � � �
1590
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
1592
1591
3, 3, 1, 3, 3, 4,0,0, 3, 0,0,0,-2,
1593
1592
// fi fl ff ffi rt ri % % ffl i j ! ?
1594
// � � � � � � � � � � � � �
1593
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
1595
1594
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
1596
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
1595
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
1597
1596
3,-1,-3,-2,1,5,2,3,4,2,2,6,4,4,4,6, // 224 - 239
1598
// � � � � � � � � � � � � � � � �
1597
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
1599
1598
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 240 - 255
1600
// � � � � � � � � � � � � � � �
1603
// . ��ਭ� �㪢� ����� ��� ࠢ�� ࠧ���� �����.
1604
static CHAR tabmd[256]={
1599
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
1602
// . ≤╗Ю╗╜═ ║Ц╙╒К ╛╔╜ЛХ╔ ╗╚╗ Ю═╒╜╝ Ю═╖╛╔ЮЦ ╙╔ё╚О.
1603
static char tabmd[256]={
1605
1604
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1606
1605
0,0,0,0,0,0,0,0,0,0,0,0,2,-7,-1,0,0,0,0,0,0,0,0,-8,
1607
1606
// ! " # $ % & ' ( ) * + , - . /
1614
1613
5,1,0,3,5,-2,3,1,0,0,0,0,8,3,3,2,1,-2,1,0,3,0,6,0,-2,1,
1615
1614
// a b c d e f g h i j k l m n o p q r s t u v w x y z
1616
1615
0,0,0,0,0,2,4,6,-3,0,2,0,-2,7,7,-1,-2,5,3,3,3,-2,-3,-4,-3,-1,-1,0,//123-150 ,0,
1617
// { | } ~ � � � � � � � � � � � � � � � � � � � � � � �
1616
// { | } ~ ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ▀ ▄ █ ▌ ▐ ░ ▒ ▓ ⌠ ■ • √
1618
1617
0,2,0,1,4, 4, 2,3,3,5,3,8,-2,1,4,2,2,5,5,3,2,6,3,1,3,0,// 151 - 176
1619
// � � � � � � � � � � � � � � � � � � � � � � � � � �
1618
// ≈ ≤ ≥ ⌡ ° ² · ÷ ═ ║ ╒ ё ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
1620
1619
3, 3, 1, 3, 3, 4,0,0, 3, 0,0,0,-2,
1621
1620
// fi fl ff ffi rt ri % % ffl i j ! ?
1622
// � � � � � � � � � � � � �
1621
// ╠ ╡ Ё ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫
1623
1622
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,// 190 - 223
1624
// � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
1623
// ╬ © ю а б ц д е ф г х и й к л м н о п я р с т у ж в ь ы з ш э щ ч ъ
1625
1624
1,0,-4,-2,-2,1,-1,0,2,-2,-1,4,2,2,2,0, // 224 - 239
1626
// � � � � � � � � � � � � � � � �
1625
// Ю А Б Ц Д Е Ф Г Х И Й К Л М Н О
1627
1626
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // 240 - 255
1628
// � � � � � � � � � � � � � � �
1627
// П Я Р С Т У Ж В Ь Ы З Ш Э Щ Ч
1630
static INT dens_let(cell *c)
1629
static int16_t dens_let(cell *c)
1635
1634
if (c->dens>100) // 11-10-94 05:59pm Pit for debug
1636
1635
return NOTAPPL; //
1637
1636
if (c->dens==NODENS)