- Change to cmake configuration (was using ./configure) - Change to doxygen documentation generation (was using THTML) - Run the test suite - Remove compatibility with older EPEL (Group tags, BuildRoot tag, etc.) - New sub-packages: root-multiproc, root-cling, root-r, root-r-tools, root-geocad, root-tmva-python, root-tmva-r, root-tmva-gui, root-cli, root-notebook and root-rootaas - New subpackage for EPEL7: root-python34 - Dropped sub-packages: root-cint, root-reflex, root-cintex, root-ruby
97 lines
3.5 KiB
Diff
97 lines
3.5 KiB
Diff
diff -ur root-6.06.02.orig/graf2d/mathtext/src/fontembedps.cxx root-6.06.02/graf2d/mathtext/src/fontembedps.cxx
|
|
--- root-6.06.02.orig/graf2d/mathtext/src/fontembedps.cxx 2016-03-03 10:36:03.000000000 +0100
|
|
+++ root-6.06.02/graf2d/mathtext/src/fontembedps.cxx 2016-03-20 14:52:11.268005800 +0100
|
|
@@ -30,14 +30,14 @@
|
|
#ifndef LITTLE_ENDIAN
|
|
#define LITTLE_ENDIAN 1
|
|
#endif // LITTLE_ENDIAN
|
|
-#include "Byteswap.h"
|
|
-#define bswap_16(x) Rbswap_16((x))
|
|
-#define bswap_32(x) Rbswap_32((x))
|
|
#else // R__BYTESWAP
|
|
#ifdef LITTLE_ENDIAN
|
|
#undef LITTLE_ENDIAN
|
|
#endif // LITTLE_ENDIAN
|
|
#endif // R__BYTESWAP
|
|
+#include "Byteswap.h"
|
|
+#define bswap_16(x) Rbswap_16((x))
|
|
+#define bswap_32(x) Rbswap_32((x))
|
|
|
|
// References:
|
|
//
|
|
@@ -236,29 +236,26 @@
|
|
if(magic_number[0] == '\200') {
|
|
// IBM PC format printer font binary
|
|
|
|
- // FIXME: Maybe the real name can be parsed out of the
|
|
- // file
|
|
- font_name = "";
|
|
-
|
|
struct pfb_segment_header_s segment_header;
|
|
size_t offset = 0;
|
|
|
|
- segment_header.type = 0;
|
|
+ // The two char elements of struct
|
|
+ // pfb_segment_header_s are most likely aligned to
|
|
+ // larger than 1 byte boundaries, so copy all the
|
|
+ // elements individually
|
|
+ segment_header.always_128 = font_data[offset];
|
|
+ segment_header.type = font_data[offset + 1];
|
|
+
|
|
while (segment_header.type != TYPE_EOF) {
|
|
- // The two char elements of struct
|
|
- // pfb_segment_header_s are most likely aligned to
|
|
- // larger than 1 byte boundaries, so copy all the
|
|
- // elements individually
|
|
- segment_header.always_128 = font_data[offset];
|
|
- segment_header.type = font_data[offset + 1];
|
|
memcpy(&segment_header.length, &font_data[offset + 2],
|
|
sizeof(unsigned int));
|
|
offset += sizeof(unsigned int) + 2;
|
|
-#ifdef LITTLE_ENDIAN
|
|
+#ifndef LITTLE_ENDIAN
|
|
segment_header.length =
|
|
bswap_32(segment_header.length);
|
|
#endif // LITTLE_ENDIAN
|
|
char *buffer = new char[segment_header.length];
|
|
+ char *fname;
|
|
|
|
memcpy(buffer, &font_data[offset],
|
|
segment_header.length);
|
|
@@ -278,6 +275,26 @@
|
|
buffer[segment_header.length - 1] = '\n';
|
|
}
|
|
ret.append(buffer, segment_header.length);
|
|
+
|
|
+ fname = (char*)memmem(buffer, segment_header.length,
|
|
+ "/FontName", 9);
|
|
+ if (fname) {
|
|
+ fname += 9;
|
|
+ while (fname < buffer + segment_header.length &&
|
|
+ isspace(*fname)) {
|
|
+ fname++;
|
|
+ }
|
|
+ if (fname < buffer + segment_header.length &&
|
|
+ *fname == '/') {
|
|
+ fname++;
|
|
+ }
|
|
+ int len = 0;
|
|
+ while (fname + len < buffer + segment_header.length &&
|
|
+ isgraph(*(fname + len))) {
|
|
+ len++;
|
|
+ }
|
|
+ font_name.assign(fname, len);
|
|
+ }
|
|
break;
|
|
case TYPE_BINARY:
|
|
append_asciihex(
|
|
@@ -289,6 +306,9 @@
|
|
}
|
|
|
|
delete [] buffer;
|
|
+
|
|
+ segment_header.always_128 = font_data[offset];
|
|
+ segment_header.type = font_data[offset + 1];
|
|
}
|
|
|
|
return ret;
|