~ubuntu-branches/ubuntu/trusty/cuneiform/trusty

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/leo/src/leo_size.c

  • Committer: Bazaar Package Importer
  • Author(s): Jakub Wilk, c-assert.diff, slovenian-slv.diff
  • Date: 2011-01-26 21:53:07 UTC
  • mfrom: (5.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20110126215307-62x61mcesr607qb7
Tags: 1.0.0+dfsg-2
* Upload to unstable.
* Explicitly build-depend on pkg-config. Thanks to Stefano Rivera for the
  bug report.
* Add Vcs-* fields.
* Use the standard C assert() macro, rather than custom Cuneiform one.
  [c-assert.diff]
* Pass CFLAGS, CXXFLAGS and LDFLAGS (get from dpkg-buildflags) to cmake
  (closes: #608345). Thanks to Sami Liedes for the bug report.
  + Build depend on dpkg-dev (>= 1.15.7).
* Pass --parallel to dh.
  + Bump debhelper minimum version to 7.4.10.
* Update debian/copyright to the latest DEP-5 version.
* Bump year in debian/copyright.
* Explicitly link to GraphicsMagick (rather than via the ImageMagick
  compatibility layer).
* Don't ship /usr/lib/cuneiform/*.so symlinks. These libraries are
  considered private, at least until #598616 is fixed.
* Rename some private variables in debian/rules to make them lowercase.
* Update patch headers.
* Provide proper ‘build-arch’ and ‘build-indep’ targets in debian/rules.
* Document input format in the manual page (closes: #572061). Thanks to
  Janusz S. Bień for the bug report.
* Use ‘slv’ (rather than ‘slo’) as language code for Slovenian.
  [slovenian-slv.diff]
* Fix package description: Slovenian is supported, Slovak is not.
* Improve documentation of the language (-l) option (closes: #602512).
  Thanks to Jari Aalto for the bug report.
* Install reasons file for vrms.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
Copyright (c) 1993-2008, Cognitive Technologies
3
3
All rights reserved.
4
4
 
5
 
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
 
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
7
 
 
8
 
      * ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
 
        ���� ����������� �� ��������� �����, ���� ������ ������� � �����������
10
 
        ����� �� ��������.
11
 
      * ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
 
        ������ ����������, ������������ ��� ���������������, ������ �����������
13
 
        ��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
 
        ����������� ����� �� ��������.
15
 
      * �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
 
        ���� ������������ � �������� �������� ��������� �/��� �����������
17
 
        ���������, ���������� �� ���� ��, ��� ���������������� �����������
18
 
        ����������.
19
 
 
20
 
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
 
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
 
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
 
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
 
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
 
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
 
������������� ������, ��������� � �������������� ��� ���������� ����������
27
 
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
 
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
 
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
 
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
 
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
 
5
Разрешается повторное распространение и использование как в виде исходного кода,
 
6
так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:
 
7
 
 
8
      * При повторном распространении исходного кода должны оставаться указанное
 
9
        выше уведомление об авторском праве, этот список условий и последующий
 
10
        отказ от гарантий.
 
11
      * При повторном распространении двоичного кода в документации и/или в
 
12
        других материалах, поставляемых при распространении, должны сохраняться
 
13
        указанная выше информация об авторском праве, этот список условий и
 
14
        последующий отказ от гарантий.
 
15
      * Ни название Cognitive Technologies, ни имена ее сотрудников не могут
 
16
        быть использованы в качестве средства поддержки и/или продвижения
 
17
        продуктов, основанных на этом ПО, без предварительного письменного
 
18
        разрешения.
 
19
 
 
20
ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ ЛИЦАМИ "КАК
 
21
ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,
 
22
ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, НО НЕ
 
23
ОГРАНИЧИВАЯСЬ ИМИ. НИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
 
24
МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, НИ В КОЕМ СЛУЧАЕ НЕ
 
25
НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ
 
26
ПОСЛЕДОВАВШИЕ УБЫТКИ, СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПОНЕСЕННЫЕ ВСЛЕДСТВИЕ
 
27
НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ ПОТЕРИ ДАННЫХ, ИЛИ ДАННЫЕ,
 
28
СТАВШИЕ НЕГОДНЫМИ, ИЛИ УБЫТКИ И/ИЛИ ПОТЕРИ ДОХОДОВ, ПОНЕСЕННЫЕ ИЗ-ЗА ДЕЙСТВИЙ
 
29
ТРЕТЬИХ ЛИЦ И/ИЛИ ОТКАЗА ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ,
 
30
НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМИ СЛУЧАЯМИ), НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ДАЖЕ ЕСЛИ ТАКОЙ
 
31
ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ И ПОТЕРЬ.
32
32
 
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:
58
58
 
59
59
#define NO_SIZES0
60
60
//
61
 
//  ��������� �������� - ����������� ������ �������.��������� ����
62
 
//                     ����������� ������
63
 
//  ��������� �������� ������ �������
64
 
//        ( �������� �������,��������� ����)
 
61
//  Получение размеров - стандартная высота больших.маленьких букв
 
62
//                     стандартная ширина
 
63
//  Получение размеров любого символа
 
64
//        ( размеров большой,маленькой букв)
65
65
//
66
 
//  ClearStat();  ������ ������, ��������� ������,
67
 
//                �������� ����������,���������� ������
 
66
//  ClearStat();  начать работу, закончить работу,
 
67
//                очистить статистику,освободить память
68
68
//
69
69
//  AddStat(int name,int width,int height,int valid);
70
 
//      �������� ������ � ������ name,���������,�����������
71
 
//      � ����� ����������
72
 
//   return - ������� ����� �������� �����
 
70
//      добавить символ с именем name,размерами,валидностью
 
71
//      в общую статистику
 
72
//   return - сколько всего символов стало
73
73
//
74
74
//  GetCommonStat(int *sizes,int *probs);
75
 
//      �������� ����������
76
 
//      sizes[0] >0 - ������ ������� �����
77
 
//      probs[0] - "�������" (0-255) (������ ����������)
78
 
//      sizes[1] >0 - ������ ��������� �����
79
 
//      probs[1] - "�������" (0-255) (������  ����������)
80
 
//      sizes[2] >0 - ������
81
 
//      probs[2] - "�������" (0-255) (������  ����������)
 
75
//      получить статистику
 
76
//      sizes[0] >0 - высота большой буквы
 
77
//      probs[0] - "процент" (0-255) (оценка надежности)
 
78
//      sizes[1] >0 - высота маленькой буквы
 
79
//      probs[1] - "процент" (0-255) (оценка  надежности)
 
80
//      sizes[2] >0 - ширина
 
81
//      probs[2] - "процент" (0-255) (оценка  надежности)
82
82
//
83
83
//  AddStatLetter(int name,int width,int height,int valid);
84
 
//      �������� ������ � ������ name,���������,�����������
85
 
//      � ���������� ��� ������� name
86
 
//   return - ������� ����� �������� name �����
 
84
//      добавить символ с именем name,размерами,валидностью
 
85
//      в статистику для символа name
 
86
//   return - сколько всего символов name стало
87
87
//
88
88
//  GetLetStat(int name,int *sizes,int *probs);
89
 
//      �������� ���������� ��� �������
 
89
//      получить статистику для символа
90
90
//  return < 0 - error ( no memory )
91
 
//         >=0 - ������� �������� � ������ name ��������������
92
 
//
93
 
//      sizes[0] >0 - ������ ������� �����
94
 
//      sizes[1] >0 - ������ ������� �����
95
 
//      probs[0] - "�������" (0-255) (������  ����������)
96
 
//      sizes[2] >0 - ������ ��������� �����
97
 
//      sizes[3] >0 - ������ ��������� �����
98
 
//      probs[1] - "�������" (0-255) (������  ����������)
99
 
//
100
 
//
101
 
//  ������ �������������
 
91
//         >=0 - сколько символов с именем name использовалось
 
92
//
 
93
//      sizes[0] >0 - высота большой буквы
 
94
//      sizes[1] >0 - ширина большой буквы
 
95
//      probs[0] - "процент" (0-255) (оценка  надежности)
 
96
//      sizes[2] >0 - высота маленькой буквы
 
97
//      sizes[3] >0 - ширина маленькой буквы
 
98
//      probs[1] - "процент" (0-255) (оценка  надежности)
 
99
//
 
100
//
 
101
//  Пример использования
102
102
/*
103
103
  int comSize[4],prob[4];
104
104
 
105
 
    ClearStat();  // ������ ������, �������� ����������
 
105
    ClearStat();  // начать работу, очистить статистику
106
106
    for(;;)
107
107
        {
108
 
          if(NextSymbol(&name,&width,&height,&valid) == 0)  break; // �������
 
108
          if(NextSymbol(&name,&width,&height,&valid) == 0)  break; // условно
109
109
      NumAll=AddStat(int name,int width,int height,int valid);
110
110
          // if(NumAll > ... ) break;
111
111
      NumLet=AddStatLetter(int name,int width,int height,int valid);
113
113
 
114
114
 
115
115
    GetCommonStat(comSize,prob);
116
 
        if( comSize[0] == 0) printf("���� ������");
117
 
    else if( comSize[1] == 0) printf("������ =%d,������=%d\n",
 
116
        if( comSize[0] == 0) printf("Мало данных");
 
117
    else if( comSize[1] == 0) printf("Высота =%d,ширина=%d\n",
118
118
               comSize[0],comSize[2]);
119
 
        else printf("������ �������=%d,������ ���������=%d,������=%d\n",
 
119
        else printf("Высота большой=%d,высота маленькой=%d,ширина=%d\n",
120
120
               comSize[0],comSize[1],comSize[2]);
121
121
 
122
122
    for(i=1;i<256;i++)
123
123
        {
124
 
         printf("\n������ %c ",(char)i);
 
124
         printf("\nСимвол %c ",(char)i);
125
125
         j=GetLetStat(i,comSize,prob);
126
126
         if( j< 0) printf("Error %d",j);
127
 
     if( comSize[0] == 0) printf("���� ������");
128
 
     else if( comSize[2] == 0) printf("������ =%d,������=%d\n",
 
127
     if( comSize[0] == 0) printf("Мало данных");
 
128
     else if( comSize[2] == 0) printf("Высота =%d,ширина=%d\n",
129
129
               comSize[0],comSize[1]);
130
 
         else printf("������ �������=%d,������ ������� %d;������ ���������=%d,������=%d",
 
130
         else printf("Высота большой=%d,ширина большой %d;Высота маленькой=%d,ширина=%d",
131
131
               comSize[0],comSize[1],comSize[2],comSize[3]);
132
132
    }
133
133
 
134
 
        // ����� ��������� ��� �������
 
134
        // можно повторять при желании
135
135
    ...
136
136
        {
137
137
     NumLet=AddStatLetter(int name,int width,int height,int valid);
140
140
        GetLetStat(int name,int *sizes4,int *ocenka2);
141
141
        ....
142
142
 
143
 
    ClearStat(); // ��� ��������, ���������� ������
 
143
    ClearStat(); // все очистить, освободить память
144
144
*/
145
145
//
146
146
 
200
200
        allLetter=0;
201
201
}
202
202
////////////////////
203
 
//            russian ������
 
203
//            russian ДдЦцЩщ
204
204
static char *nonStandard="\x84\xA4\x96\xE6\x99\xE9";
205
 
LEO_FUNC(Int32) LEO_AddStat(Int32 name,Int32 width,Int32 height,Int32 valid)
 
205
LEO_FUNC(int32_t) LEO_AddStat(int32_t name,int32_t width,int32_t height,int32_t valid)
206
206
{
207
207
          // add only good
208
208
        if( ( valid & LEO_VALID_FINAL ) == 0)
209
209
                 return allCount;
210
 
    //name = stdAnsiToAscii((Word8)name);
 
210
    //name = stdAnsiToAscii((uchar)name);
211
211
        if( width  < 0 || width  >= MAX_WIDTH ||
212
212
                height < 0 || height >= MAX_HEIGHT   )
213
213
          return allCount;
306
306
        return allCount;
307
307
}
308
308
///////////////////
309
 
LEO_FUNC(Int32) LEO_GetCommonStat(Int32 *sizes,Int32 *ocenka)
 
309
LEO_FUNC(int32_t) LEO_GetCommonStat(int32_t *sizes,int32_t *ocenka)
310
310
{
311
311
        return GetStat(sizes,allCount,allWidthes,allHeights,ocenka);
312
312
}
313
313
////////////////////
314
314
 
315
315
 
316
 
LEO_FUNC(Int32) LEO_AddStatLetter(Int32 name,Int32 width,Int32 height,Int32 valid)
 
316
LEO_FUNC(int32_t) LEO_AddStatLetter(int32_t name,int32_t width,int32_t height,int32_t valid)
317
317
{
318
318
 
319
319
        if(name < 0 || name > 255 ) return 0;
320
 
//name = stdAnsiToAscii((Word8)name);
 
320
//name = stdAnsiToAscii((uchar)name);
321
321
          // add only good
322
322
        if( ( valid & LEO_VALID_FINAL ) == 0)
323
323
                 return letCount[name];
351
351
        return letCount[name];
352
352
}
353
353
//////////////
354
 
#define UNIQ_RUS "\x85\xa0\xa1\xa5"   // "����"
355
 
#define HIGH_LET "\x90\x93\x94\xe0\xe3\xe4"   // "������"
 
354
#define UNIQ_RUS "\x85\xa0\xa1\xa5"   // "Еабе"
 
355
#define HIGH_LET "\x90\x93\x94\xe0\xe3\xe4"   // "РУФруф"
356
356
static int ClusterAnalyze(int name,int count,int all,LetInfo *lInfo,
357
357
                                                  int *mysteck,
358
358
                                                  int NumClus,int *size,int *ocenka)
390
390
 wid=ww[j];
391
391
 
392
392
 // who is next ? - for standard russian only !
393
 
 // use dos-coding  "����"  (��- by 130!)
 
393
 // use dos-coding  "Еабе"  (АБ- by 130!)
394
394
 if( name >= 130 && strchr(UNIQ_RUS,name) == NULL)
395
395
 {
396
396
        for(i=0,jj=-1;i<NumClus;i++)
500
500
//  sizes4 - [0]=heiBig,[1]=widBig,[2]=heiSmall,[3]=widSmall
501
501
//
502
502
//int GetLetStat(int name,int *sizes4,int *ocenka2)
503
 
LEO_FUNC(Int32) LEO_GetLetStat(Int32 name,Int32 *sizes4,Int32 *ocenka2)
 
503
LEO_FUNC(int32_t) LEO_GetLetStat(int32_t name,int32_t *sizes4,int32_t *ocenka2)
504
504
{
505
505
int i;
506
506
int *mysteck;
509
509
    memset(ocenka2,0,2*sizeof(int));
510
510
 
511
511
        if( name < 0 || name > 255 ) return 0;
512
 
//name = stdAnsiToAscii((Word8)name);
 
512
//name = stdAnsiToAscii((uchar)name);
513
513
         //  symbols not enouph ?
514
514
    if( letCount[name] < MIN_STAT_ONE ) return 0;
515
515
        if( letInfo == NULL ) return 0;
661
661
        8, 24,// }
662
662
        1,127,// ~
663
663
        1,127,//        0x07f
664
 
       35, 75,// �
665
 
       35, 74,// �
666
 
       33, 71,// � jurnal 7 kegl
667
 
       28, 74,// � futuris 10 kegl
668
 
       33, 69,// �
669
 
       35, 71,// �
670
 
       40, 90,// �
671
 
       33, 70,// �
672
 
       34, 75,// �
673
 
       35, 68,// �
674
 
       35, 75,// �
675
 
       37, 75,// �
676
 
       33, 88,// �
677
 
       33, 75,// � 81 kudryash 14 kegl cursiv
678
 
       35, 85,// �
679
 
       33, 80,// �
680
 
       33, 72,// � bodoni halfbold 12 kegl
681
 
       35, 75,// �
682
 
       37, 75,// �
683
 
       35, 69,// � lower bound corr from UFA stend
684
 
       32, 78,// � UFA : �뫮 39,78
685
 
       37, 81,// �
686
 
       32, 67,// �
687
 
       32, 69,// �
688
 
       37, 97,//� changed
689
 
       32, 89,// �
690
 
       38, 76,// �  changed
691
 
       37, 86,// �
692
 
       35, 69,// �
693
 
       34, 69,// �
694
 
       37, 88,// �
695
 
       35, 75,// �
696
 
       42, 75,// �
697
 
       32, 60,// �
698
 
       37, 75,// �
699
 
       33, 84,// �
700
 
       42, 75,// �
701
 
       38, 75,// �  7 kegl
702
 
       39, 98,// �
703
 
       37, 77,// � changed
704
 
       33, 75,// �
705
 
       35, 70,// �
706
 
       41, 82,// � changed 45,82 26-12-1994 for RUS_ENG
707
 
       45, 75,// �
708
 
       55, 75,// �
709
 
       33, 75,// �
710
 
       41, 85,// �
711
 
       33, 75,// �
712
 
        1,127,// �
713
 
       24, 58,// �
714
 
       32, 68,// �
715
 
       32, 68,// �
716
 
       51, 80,// �
717
 
       44, 80,// �
718
 
       40, 80,// �
719
 
       36, 80,// �
720
 
       36, 80,// �
721
 
       38, 90,// �
722
 
        2, 48,// �
723
 
        8, 40,// �
724
 
        2, 26,// �
725
 
       27, 72,// �
726
 
        1,127,// �
727
 
        1,127,// �
728
 
        1,127,// �
729
 
        1,127,// �
730
 
       51,100,// � serbian - n
731
 
        1,127,// �
732
 
       51,110,// � serbian - l
733
 
        1,127,// �
734
 
       38, 88,// �
735
 
       37, 72,// �
736
 
        1,127,// �
737
 
        1,127,// �
738
 
        1,127,// �
739
 
       51,100,// � serbian - N
740
 
        1,127,// �
741
 
       51,110,// � serbian - L
742
 
        1,127,// �
743
 
        1,127,// �
744
 
        1,127,// �
745
 
        1,127,// �
746
 
        1,127,// �
747
 
        1,127,// �
748
 
        1,127,// �
749
 
        1,127,// �
750
 
        1,127,// �
751
 
        1,127,// �
752
 
        1,127,// �
753
 
        1,127,// �
754
 
        1,127,// �
755
 
        1,127,// �
756
 
        1,127,// �
757
 
        1,127,// �
758
 
        1,127,// �
759
 
       32, 66,// �
760
 
       30, 72,// �
761
 
       33, 76,// � , 37
762
 
       34, 92,// �
763
 
       28, 79,// �  lazurski small kegl
764
 
       32, 68,// �  changed cune17/18 & UKRAINIAN PAPERS
765
 
       42, 86,// �
766
 
       36, 69,// �
767
 
       42, 75,// �
768
 
       48, 97,// �
769
 
       45, 88,// �    jurnal 7 kegl
770
 
       52, 75,// �
771
 
       51, 94,// �
772
 
       33, 75,// � lower bound up     & ERECT
773
 
       42, 75,// �
774
 
       34, 93,// � lower bound up
775
 
       40, 75,// �
776
 
       32, 54,// � cursiv d
777
 
       36, 57,// � cursiv d tail down & ERECT
778
 
        1,127,// �
779
 
        1,127,// �
780
 
        1,127,// �
 
664
       35, 75,// Ђ
 
665
       35, 74,// Ѓ
 
666
       33, 71,// ‚ jurnal 7 kegl
 
667
       28, 74,// ѓ futuris 10 kegl
 
668
       33, 69,// „
 
669
       35, 71,// …
 
670
       40, 90,// †
 
671
       33, 70,// ‡
 
672
       34, 75,// €
 
673
       35, 68,// ‰
 
674
       35, 75,// Љ
 
675
       37, 75,// ‹
 
676
       33, 88,// Њ
 
677
       33, 75,// Ќ 81 kudryash 14 kegl cursiv
 
678
       35, 85,// Ћ
 
679
       33, 80,// Џ
 
680
       33, 72,// ђ bodoni halfbold 12 kegl
 
681
       35, 75,// ‘
 
682
       37, 75,// ’
 
683
       35, 69,// “ lower bound corr from UFA stend
 
684
       32, 78,// ” UFA : Ўл«® 39,78
 
685
       37, 81,// •
 
686
       32, 67,// –
 
687
       32, 69,// —
 
688
       37, 97,//� changed
 
689
       32, 89,// ™
 
690
       38, 76,// љ  changed
 
691
       37, 86,// ›
 
692
       35, 69,// њ
 
693
       34, 69,// ќ
 
694
       37, 88,// ћ
 
695
       35, 75,// џ
 
696
       42, 75,//  
 
697
       32, 60,// Ў
 
698
       37, 75,// ў
 
699
       33, 84,// Ј
 
700
       42, 75,// ¤
 
701
       38, 75,// Ґ  7 kegl
 
702
       39, 98,// ¦
 
703
       37, 77,// § changed
 
704
       33, 75,// Ё
 
705
       35, 70,// ©
 
706
       41, 82,// Є changed 45,82 26-12-1994 for RUS_ENG
 
707
       45, 75,// «
 
708
       55, 75,// ¬
 
709
       33, 75,// ­
 
710
       41, 85,// ®
 
711
       33, 75,// Ї
 
712
        1,127,// °
 
713
       24, 58,// ±
 
714
       32, 68,// І
 
715
       32, 68,// і
 
716
       51, 80,// ґ
 
717
       44, 80,// µ
 
718
       40, 80,// ¶
 
719
       36, 80,// ·
 
720
       36, 80,// ё
 
721
       38, 90,// №
 
722
        2, 48,// є
 
723
        8, 40,// »
 
724
        2, 26,// ј
 
725
       27, 72,// Ѕ
 
726
        1,127,// ѕ
 
727
        1,127,// ї
 
728
        1,127,// А
 
729
        1,127,// Б
 
730
       51,100,// В serbian - n
 
731
        1,127,// Г
 
732
       51,110,// Д serbian - l
 
733
        1,127,// Е
 
734
       38, 88,// Ж
 
735
       37, 72,// З
 
736
        1,127,// И
 
737
        1,127,// Й
 
738
        1,127,// К
 
739
       51,100,// Л serbian - N
 
740
        1,127,// М
 
741
       51,110,// Н serbian - L
 
742
        1,127,// О
 
743
        1,127,// П
 
744
        1,127,// Р
 
745
        1,127,// С
 
746
        1,127,// Т
 
747
        1,127,// У
 
748
        1,127,// Ф
 
749
        1,127,// Х
 
750
        1,127,// Ц
 
751
        1,127,// Ч
 
752
        1,127,// Ш
 
753
        1,127,// Щ
 
754
        1,127,// Ъ
 
755
        1,127,// Ы
 
756
        1,127,// Ь
 
757
        1,127,// Э
 
758
        1,127,// Ю
 
759
       32, 66,// Я
 
760
       30, 72,// а
 
761
       33, 76,// б , 37
 
762
       34, 92,// в
 
763
       28, 79,// г  lazurski small kegl
 
764
       32, 68,// д  changed cune17/18 & UKRAINIAN PAPERS
 
765
       42, 86,// е
 
766
       36, 69,// ж
 
767
       42, 75,// з
 
768
       48, 97,// и
 
769
       45, 88,// й    jurnal 7 kegl
 
770
       52, 75,// к
 
771
       51, 94,// л
 
772
       33, 75,// м lower bound up     & ERECT
 
773
       42, 75,// н
 
774
       34, 93,// о lower bound up
 
775
       40, 75,// п
 
776
       32, 54,// р cursiv d
 
777
       36, 57,// с cursiv d tail down & ERECT
 
778
        1,127,// т
 
779
        1,127,// у
 
780
        1,127,// ф
781
781
       77, 94,// cursiv m
782
 
        1,127,// �
783
 
       50, 82,// � cursiv u
784
 
       28, 56,// � cursiv ee
785
 
        1,127,// �
786
 
        1,127,// �
787
 
        1,127,// �
788
 
        1,127,// �
789
 
       41, 76,// � cursiv a
790
 
        1,127,// �
 
782
        1,127,// ц
 
783
       50, 82,// ч cursiv u
 
784
       28, 56,// ш cursiv ee
 
785
        1,127,// щ
 
786
        1,127,// ъ
 
787
        1,127,// ы
 
788
        1,127,// ь
 
789
       41, 76,// э cursiv a
 
790
        1,127,// ю
791
791
        1,127 //
792
792
              };
793
793
 
794
 
Int32 leo_narrow, leo_narrow_pen;
795
 
extern Word8 leo_alpha_type;
 
794
int32_t leo_narrow, leo_narrow_pen;
 
795
extern uchar leo_alpha_type;
796
796
#include "alphaset.h"
797
797
 
798
798
void leo_sizes_init_stat(void)
801
801
return;
802
802
}
803
803
 
804
 
Word8 leo_proport_penalty(Word8 let,Word8 prolet, Int32 w, Int32 h)
 
804
uchar leo_proport_penalty(uchar let,uchar prolet, int32_t w, int32_t h)
805
805
{
806
 
Int32 comSizes[4], prob[4], wid, hei, pr, pr1, prop, prp;
807
 
Word8 name;
808
 
Int32 pmin=0, pmax=255;
 
806
int32_t comSizes[4], prob[4], wid, hei, pr, pr1, prop, prp;
 
807
uchar name;
 
808
int32_t pmin=0, pmax=255;
809
809
 
810
810
#ifdef NO_SIZES
811
811
return 0;
815
815
 
816
816
if( let )
817
817
    {
818
 
    name = stdAnsiToAscii((Word8)let);
819
 
    if( memchr("�",let,1) )
 
818
    name = stdAnsiToAscii((uchar)let);
 
819
    if( memchr("№",let,1) )
820
820
        name=let;
821
821
    pmin=letters_prop_table_rus[name].pmin;
822
822
    pmax=letters_prop_table_rus[name].pmax;
823
 
    if( LEO_GetLetStat((Int32)let, comSizes,prob)>=0 && comSizes[0] && comSizes[2])
 
823
    if( LEO_GetLetStat((int32_t)let, comSizes,prob)>=0 && comSizes[0] && comSizes[2])
824
824
        { //   normal statistic                             && not empty
825
825
        hei = MIN(comSizes[0],comSizes[2]);
826
826
        wid = MAX(comSizes[1],comSizes[3]);
868
868
                        }
869
869
                    }
870
870
                }
871
 
            if( pr<pmin ) // ���� const 255,255-75 ,const 0, 60-255, const 255
 
871
            if( pr<pmin ) // было const 255,255-75 ,const 0, 60-255, const 255
872
872
                {
873
873
                if( leo_narrow>5 && leo_narrow_pen>1 || leo_narrow>10 )
874
874
                    pr=(pmin+pr)/2;
875
875
                return 128*(256-(256*pr)/pmin)/256;
876
876
                //return 255-255*((2*256*pr)/pmin-256)/256;
877
877
                }
878
 
            if( pr>pmax ) // ����� const 255, 255-0, const 0 ,0-255, const 255
 
878
            if( pr>pmax ) // стало const 255, 255-0, const 0 ,0-255, const 255
879
879
                return 10+255*2*((256*pr)/pmax-256)/256;
880
880
            }
881
881
        }
935
935
    h<w &&pr1<45 && !( pmax && w>wid && w*100/wid>120 && prp>pmax) )
936
936
    return 0;
937
937
 
938
 
return (Word8)((pr1*255)/100);  // large prop
 
938
return (uchar)((pr1*255)/100);  // large prop
939
939
}
940
940
 
941
941
 
942
 
Word8 leo_sizes_penalty( Int32 w, Int32 h)
 
942
uchar leo_sizes_penalty( int32_t w, int32_t h)
943
943
{
944
 
Int32 comSizes[4], prob[4], wid, hei, pr;
 
944
int32_t comSizes[4], prob[4], wid, hei, pr;
945
945
#ifdef NO_SIZES
946
946
return 0;
947
947
#endif
967
967
            if( h*2<=hei  )
968
968
                return 100;
969
969
            if( h*4<=hei*3 )
970
 
                return (Word8)(100*(hei*3-4*h)/hei);
 
970
                return (uchar)(100*(hei*3-4*h)/hei);
971
971
            }
972
972
        wid = comSizes[2];
973
973
        if( prob[2] >=100 && pr>60 && (h*2<=hei||w*2<=wid) && h*w*4<=hei*wid*3  )
975
975
            if( h*w*4<=hei*wid  )
976
976
                return 100;
977
977
            if( h*w*4<=hei*wid*3 )
978
 
                return (Word8)(50*(hei*wid*3-4*h*w)/(hei*wid));
 
978
                return (uchar)(50*(hei*wid*3-4*h*w)/(hei*wid));
979
979
            }
980
980
        }
981
981