Erich E. Hoover : wineps.drv: Add support for PostScript Format 2 custom glyph names.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Sep 15 09:50:50 CDT 2015
Module: wine
Branch: master
Commit: d79de513f754dd7572b6fe3f3b7bfe51dafd1dec
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d79de513f754dd7572b6fe3f3b7bfe51dafd1dec
Author: Erich E. Hoover <erich.e.hoover at wine-staging.com>
Date: Thu Sep 3 16:24:45 2015 -0600
wineps.drv: Add support for PostScript Format 2 custom glyph names.
---
dlls/wineps.drv/download.c | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/dlls/wineps.drv/download.c b/dlls/wineps.drv/download.c
index 7b99b33..30eb0db 100644
--- a/dlls/wineps.drv/download.c
+++ b/dlls/wineps.drv/download.c
@@ -644,6 +644,35 @@ static int get_post2_name_index(BYTE *post2header, DWORD size, WORD index)
return GET_BE_WORD(post2header + offset);
}
+static void get_post2_custom_glyph_name(BYTE *post2header, DWORD size, WORD index, char *name)
+{
+ USHORT numberOfGlyphs = GET_BE_WORD(post2header);
+ int i, name_offset = (1 + numberOfGlyphs) * sizeof(USHORT);
+ BYTE name_length = 0;
+
+ for(i = 0; i <= index; i++)
+ {
+ name_offset += name_length;
+ if(name_offset + sizeof(BYTE) > size)
+ {
+ FIXME("Pascal name offset '%d' exceeds PostScript Format 2 table size (%d)\n",
+ name_offset + sizeof(BYTE), size);
+ return;
+ }
+ name_length = (post2header + name_offset)[0];
+ if(name_offset + name_length > size)
+ {
+ FIXME("Pascal name offset '%d' exceeds PostScript Format 2 table size (%d)\n",
+ name_offset + name_length, size);
+ return;
+ }
+ name_offset += sizeof(BYTE);
+ }
+ name_length = min(name_length, MAX_G_NAME);
+ memcpy(name, post2header + name_offset, name_length);
+ name[name_length] = 0;
+}
+
void get_glyph_name(HDC hdc, WORD index, char *name)
{
struct
@@ -703,7 +732,7 @@ void get_glyph_name(HDC hdc, WORD index, char *name)
else if(glyphNameIndex < 258)
get_standard_glyph_name(glyphNameIndex, name);
else
- FIXME("PostScript Format 2 custom glyphs are currently unsupported.\n");
+ get_post2_custom_glyph_name(post2header, size, glyphNameIndex - 258, name);
}
else
FIXME("PostScript Format %d.%d glyph names are currently unsupported.\n",
More information about the wine-cvs
mailing list