[type42] Fix glyph access.
This is a severe bug: We've missed one level of indirection, as described in the Type 42 specification. As a result, ftview sometimes showed incorrect glyphs for given glyph names, and even displayed `error 0x0006' (invalid argument!) in case the number of glyph indices differed between the Type 42 font and the embedded TTF. Apparently, noone ever noticed it; this shows how much Type 42 fonts are in use... * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index to embedded TTF's glyph index.
This commit is contained in:
parent
e5f4469359
commit
bd75a517dc
17
ChangeLog
17
ChangeLog
|
@ -1,3 +1,20 @@
|
|||
2015-08-08 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[type42] Fix glyph access.
|
||||
|
||||
This is a severe bug: We've missed one level of indirection, as
|
||||
described in the Type 42 specification. As a result, ftview
|
||||
sometimes showed incorrect glyphs for given glyph names, and even
|
||||
displayed `error 0x0006' (invalid argument!) in case the number of
|
||||
glyph indices differed between the Type 42 font and the embedded
|
||||
TTF.
|
||||
|
||||
Apparently, noone ever noticed it; this shows how much Type 42 fonts
|
||||
are in use...
|
||||
|
||||
* src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
|
||||
to embedded TTF's glyph index.
|
||||
|
||||
2015-08-08 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[type42] Minor clean-up.
|
||||
|
|
13
docs/CHANGES
13
docs/CHANGES
|
@ -8,6 +8,10 @@ CHANGES BETWEEN 2.6 and 2.6.1
|
|||
you are using CFFs; otherwise you get cropped glyphs with GUI
|
||||
interfaces like GTK or Qt.
|
||||
|
||||
- Accessing Type 42 fonts returned incorrect results if the glyph
|
||||
order of the embedded TrueType font differs from the glyph order
|
||||
of the Type 42 charstrings table.
|
||||
|
||||
|
||||
II. IMPORTANT CHANGES
|
||||
|
||||
|
@ -30,6 +34,15 @@ CHANGES BETWEEN 2.6 and 2.6.1
|
|||
don't need any change to the source code.
|
||||
|
||||
|
||||
III. MISCELLANEOUS
|
||||
|
||||
- The auto-hinter's Arabic script support has been enhanced.
|
||||
|
||||
- The TrueType bytecode interpreter now runs slightly faster.
|
||||
|
||||
- Improved support for builds with cmake.
|
||||
|
||||
|
||||
======================================================================
|
||||
|
||||
CHANGES BETWEEN 2.5.5 and 2.6
|
||||
|
|
|
@ -652,11 +652,16 @@
|
|||
FT_Error error;
|
||||
T42_GlyphSlot t42slot = (T42_GlyphSlot)glyph;
|
||||
T42_Size t42size = (T42_Size)size;
|
||||
T42_Face t42face = (T42_Face)size->face;
|
||||
FT_Driver_Class ttclazz = ((T42_Driver)glyph->face->driver)->ttclazz;
|
||||
|
||||
|
||||
FT_TRACE1(( "T42_GlyphSlot_Load: glyph index %d\n", glyph_index ));
|
||||
|
||||
/* map T42 glyph index to embedded TTF's glyph index */
|
||||
glyph_index = (FT_UInt)ft_atol(
|
||||
(const char *)t42face->type1.charstrings[glyph_index] );
|
||||
|
||||
t42_glyphslot_clear( t42slot->ttslot );
|
||||
error = ttclazz->load_glyph( t42slot->ttslot,
|
||||
t42size->ttsize,
|
||||
|
|
Loading…
Reference in New Issue