[poppler] poppler/poppler: CMap.cc,1.2,1.3
Marco Pesenti Gritti
marco at freedesktop.org
Fri Sep 16 11:37:31 PDT 2005
Update of /cvs/poppler/poppler/poppler
In directory gabe:/tmp/cvs-serv5624/poppler
Modified Files:
CMap.cc
Log Message:
2005-09-16 Marco Pesenti Gritti <mpg at redhat.com>
* poppler/CMap.cc:
Improvements from xpdf 3.01
Index: CMap.cc
===================================================================
RCS file: /cvs/poppler/poppler/poppler/CMap.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CMap.cc 27 Aug 2005 08:43:43 -0000 1.2
+++ CMap.cc 16 Sep 2005 18:37:29 -0000 1.3
@@ -49,7 +49,7 @@
PSTokenizer *pst;
char tok1[256], tok2[256], tok3[256];
int n1, n2, n3;
- Guint start, end;
+ Guint start, end, code;
if (!(f = globalParams->findCMapFile(collectionA, cMapNameA))) {
@@ -99,6 +99,30 @@
}
}
pst->getToken(tok1, sizeof(tok1), &n1);
+ } else if (!strcmp(tok2, "begincidchar")) {
+ while (pst->getToken(tok1, sizeof(tok1), &n1)) {
+ if (!strcmp(tok1, "endcidchar")) {
+ break;
+ }
+ if (!pst->getToken(tok2, sizeof(tok2), &n2) ||
+ !strcmp(tok2, "endcidchar")) {
+ error(-1, "Illegal entry in cidchar block in CMap");
+ break;
+ }
+ if (!(tok1[0] == '<' && tok1[n1 - 1] == '>' &&
+ n1 >= 4 && (n1 & 1) == 0)) {
+ error(-1, "Illegal entry in cidchar block in CMap");
+ continue;
+ }
+ tok1[n1 - 1] = '\0';
+ if (sscanf(tok1 + 1, "%x", &code) != 1) {
+ error(-1, "Illegal entry in cidchar block in CMap");
+ continue;
+ }
+ n1 = (n1 - 2) / 2;
+ cmap->addCIDs(code, code, n1, (CID)atoi(tok2));
+ }
+ pst->getToken(tok1, sizeof(tok1), &n1);
} else if (!strcmp(tok2, "begincidrange")) {
while (pst->getToken(tok1, sizeof(tok1), &n1)) {
if (!strcmp(tok1, "endcidrange")) {
@@ -234,7 +258,7 @@
for (i = nBytes - 1; i >= 1; --i) {
byte = (start >> (8 * i)) & 0xff;
if (!vec[byte].isVector) {
- error(-1, "Invalid CID (%*x - %*x) in CMap",
+ error(-1, "Invalid CID (%0*x - %0*x) in CMap",
2*nBytes, start, 2*nBytes, end);
return;
}
@@ -243,7 +267,7 @@
cid = firstCID;
for (byte = (int)(start & 0xff); byte <= (int)(end & 0xff); ++byte) {
if (vec[byte].isVector) {
- error(-1, "Invalid CID (%*x - %*x) in CMap",
+ error(-1, "Invalid CID (%0*x - %0*x) in CMap",
2*nBytes, start, 2*nBytes, end);
} else {
vec[byte].cid = cid;
More information about the poppler
mailing list