[PATCH] fontsub: Improve CreateFontPackage() stub for TTFCFP_SUBSET case
Nikolay Sivov
nsivov at codeweavers.com
Thu Apr 28 12:44:22 CDT 2016
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
For https://bugs.winehq.org/show_bug.cgi?id=40517
dlls/fontsub/main.c | 13 ++++++++++++-
include/fontsub.h | 26 ++++++++++++++++++++++++--
2 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/dlls/fontsub/main.c b/dlls/fontsub/main.c
index b78bd58..a0a6032 100644
--- a/dlls/fontsub/main.c
+++ b/dlls/fontsub/main.c
@@ -50,5 +50,16 @@ ULONG __cdecl CreateFontPackage(const unsigned char *src, const ULONG src_len, u
written, flags, face_index, format, lang, platform, encoding, keep_list, keep_len, allocproc,
reallocproc, freeproc, reserved);
- return ERR_GENERIC;
+ if (format != TTFCFP_SUBSET)
+ return ERR_GENERIC;
+
+ *dest = allocproc(src_len);
+ if (!*dest)
+ return ERR_MEM;
+
+ memcpy(*dest, src, src_len);
+ *dest_len = src_len;
+ *written = src_len;
+
+ return NO_ERROR;
}
diff --git a/include/fontsub.h b/include/fontsub.h
index 6fc7793..aa83f03 100644
--- a/include/fontsub.h
+++ b/include/fontsub.h
@@ -27,14 +27,36 @@ typedef void *(__cdecl *CFP_ALLOCPROC)(size_t);
typedef void *(__cdecl *CFP_REALLOCPROC)(void *, size_t);
typedef void (__cdecl *CFP_FREEPROC)(void *);
+#define TTFCFP_SUBSET 0
+#define TTFCFP_SUBSET1 1
+#define TTFCFP_DELTA 2
+
+#define TTFCFP_UNICODE_PLATFORMID 0
+#define TTFCFP_APPLE_PLATFORMID 1
+#define TTFCFP_ISO_PLATFORMID 2
+#define TTFCFP_MS_PLATFORMID 3
+
+#define TTFCFP_STD_MAC_CHAR_SET 0
+#define TTFCFP_SYMBOL_CHAR_SET 0
+#define TTFCFP_UNICODE_CHAR_SET 1
+#define TTFCFP_DONT_CARE 0xffff
+
+#define TTFCFP_LANG_KEEP_ALL 0
+
+#define TTFCFP_FLAGS_SUBSET 0x0001
+#define TTFCFP_FLAGS_COMPRESS 0x0002
+#define TTFCFP_FLAGS_TTC 0x0004
+#define TTFCFP_FLAGS_GLYPHLIST 0x0008
+
+#define ERR_GENERIC 1000
+#define ERR_MEM 1005
+
ULONG __cdecl CreateFontPackage(const unsigned char *src, const ULONG src_len, unsigned char **dest,
ULONG *dest_len, ULONG *written, const unsigned short flags, const unsigned short face_index,
const unsigned short format, const unsigned short lang, const unsigned short platform,
const unsigned short encoding, const unsigned short *keep_list, const unsigned short keep_len,
CFP_ALLOCPROC allocproc, CFP_REALLOCPROC reallocproc, CFP_FREEPROC freeproc, void *reserved);
-#define ERR_GENERIC 1000
-
#ifdef __cplusplus
}
#endif
--
2.8.0.rc3
More information about the wine-patches
mailing list