summaryrefslogtreecommitdiff
path: root/x11-fonts/ttmkfdir/files/patch-ttf.cpp
blob: 7718aea50169da99c85d9e639dba697cb8990086 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--- ttf.cpp	2003-01-08 00:25:25.000000000 -0500
+++ ttf.cpp	2012-12-07 12:34:54.000000000 -0500
@@ -51,20 +51,27 @@
 bool
 Face::MappingPresent (int cmapidx, NumericMapping *m, int enc_size, int start_code, bool enc_comp)
 {
-    int idx, missing = 0;
+    int idx;
+    unsigned int missing = 0, bail_at, msize;
+
     FT_Set_Charmap (face, face->charmaps[cmapidx]);
 
-    for (unsigned int i = start_code; i < m->size (); i++) {
+    msize = m->size();
+    if (enc_size <= 256) {
+       bail_at = int (cmdline::instance()->option ("max-missing"));
+    } else {
+       bail_at = ((int (cmdline::instance()->option ("max-missing-percentage"))
+& enc_comp)*enc_size)/100;
+    }
+
+    for (unsigned int i = start_code; i < msize && missing < bail_at; i++) {
 	if ((*m)[i] < 0) 
 	    continue;
 	if ((idx = FT_Get_Char_Index (face, (*m)[i])) == 0)
 	    missing++;
     }
-    if (enc_size <= 256) {
-        return (missing <= int (cmdline::instance()->option ("max-missing")));
-    } else {
-        return ((100 * missing/enc_size) <= int (cmdline::instance()->option ("max-missing-percentage")) & enc_comp);
-    }
+
+    return missing < bail_at;
 }
 
 Face::Face (const std::string &filename)
@@ -239,7 +246,7 @@
 	for (i = 0; i < n; i++) {
 	    if ((fterror = FT_Get_Sfnt_Name (face, i, &NamePtr)) != FT_Err_Ok) {
                     std::cout << "Warning: Can't SFNT name : " << FileName << "(" << fterror << ")" << std::endl;
-	            return;
+	            return NULL;
             };
             platform = NamePtr.platform_id;
             encoding = NamePtr.encoding_id;
@@ -483,7 +490,7 @@
 const char *
 Face::PanoseWeight (void) const
 {
-    static char *panose_weight_latin[] = {
+    static const char *panose_weight_latin[] = {
 	"any",
 	"no fit",
 	"very light",
@@ -548,7 +555,7 @@
 const char *
 Face::PanoseWidth (void) const
 {
-    static char *panose_spacing_latin_text [] = {
+    static const char *panose_spacing_latin_text [] = {
 	"any",
 	"no fit",
 	"old style",
@@ -561,7 +568,7 @@
 	"monospaced",
     };
     
-    static char *panose_spacing_latin_decorative [] = {
+    static const char *panose_spacing_latin_decorative [] = {
 	"any",
 	"no fit",
 	"super condensed",