summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2002-06-19 15:57:55 +0000
committerWerner Lemberg <wl@gnu.org>2002-06-19 15:57:55 +0000
commit0bb4a0f93a8a241a3e499f62292b730fb340c339 (patch)
tree460a6d01f39791a773951b2422dfd7e6e6f77f42 /src
parent3afd706dc639a086d14301be1e61c98a68de2c19 (diff)
downloadfreetype2-0bb4a0f93a8a241a3e499f62292b730fb340c339.tar.gz
* src/psaux/t1cmap.c (t1_cmap_custom_char_index,
t1_cmap_custom_char_next): Fix index computation -- indices start with 0 and not with cmap->first. Provide default charmaps. * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdriver.c (PCF_Face_Init), src/pfr/pfrobjs.c (pfr_face_init), src/type1/t1objs (T1_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Implement it.
Diffstat (limited to 'src')
-rw-r--r--src/bdf/bdfdrivr.c12
-rw-r--r--src/pcf/pcfdriver.c4
-rw-r--r--src/pfr/pfrobjs.c4
-rw-r--r--src/psaux/t1cmap.c13
-rw-r--r--src/type1/t1objs.c4
-rw-r--r--src/winfonts/winfnt.c7
6 files changed, 33 insertions, 11 deletions
diff --git a/src/bdf/bdfdrivr.c b/src/bdf/bdfdrivr.c
index 4a97e3d6a..e0e894b18 100644
--- a/src/bdf/bdfdrivr.c
+++ b/src/bdf/bdfdrivr.c
@@ -448,6 +448,10 @@ THE SOFTWARE.
}
error = FT_CMap_New( &bdf_cmap_class, NULL, &charmap, NULL );
+
+ /* Select default charmap */
+ if (root->num_charmaps)
+ root->charmap = root->charmaps[0];
}
#else /* !FT_CONFIG_OPTION_USE_CMAPS */
@@ -481,11 +485,15 @@ THE SOFTWARE.
charmap.face = FT_FACE( face );
- charmap.encoding = ft_encoding_none;
- charmap.platform_id = 0;
+ charmap.encoding = ft_encoding_adobe_standard;
+ charmap.platform_id = 7;
charmap.encoding_id = 0;
error = FT_CMap_New( &bdf_cmap_class, NULL, &charmap, NULL );
+
+ /* Select default charmap */
+ if (root->num_charmaps)
+ root->charmap = root->charmaps[0];
}
#else /* !FT_CONFIG_OPTION_USE_CMAPS */
diff --git a/src/pcf/pcfdriver.c b/src/pcf/pcfdriver.c
index c9e3972bf..c86bbfb8c 100644
--- a/src/pcf/pcfdriver.c
+++ b/src/pcf/pcfdriver.c
@@ -340,6 +340,10 @@ THE SOFTWARE.
}
error = FT_CMap_New( &pcf_cmap_class, NULL, &charmap, NULL );
+
+ /* Select default charmap */
+ if (face->root.num_charmaps)
+ face->root.charmap = face->root.charmaps[0];
}
#else /* !FT_CONFIG_OPTION_USE_CMAPS */
diff --git a/src/pfr/pfrobjs.c b/src/pfr/pfrobjs.c
index 76a35d541..61e9afc00 100644
--- a/src/pfr/pfrobjs.c
+++ b/src/pfr/pfrobjs.c
@@ -175,6 +175,10 @@
charmap.encoding = ft_encoding_unicode;
FT_CMap_New( &pfr_cmap_class_rec, NULL, &charmap, NULL );
+
+ /* Select default charmap */
+ if (root->num_charmaps)
+ root->charmap = root->charmaps[0];
}
}
diff --git a/src/psaux/t1cmap.c b/src/psaux/t1cmap.c
index db3b968d8..0ddd3f5da 100644
--- a/src/psaux/t1cmap.c
+++ b/src/psaux/t1cmap.c
@@ -197,12 +197,11 @@
FT_UInt32 char_code )
{
FT_UInt result = 0;
- FT_UInt32 idx;
- idx = (FT_UInt32)( char_code - cmap->first );
- if ( idx < cmap->count )
- result = cmap->indices[idx];
+ if ( ( char_code >= cmap->first ) &&
+ ( char_code < ( cmap->first + cmap->count ) ) )
+ result = cmap->indices[char_code];
return result;
}
@@ -214,7 +213,6 @@
{
FT_UInt result = 0;
FT_UInt32 char_code = *pchar_code;
- FT_UInt32 idx;
++char_code;
@@ -222,10 +220,9 @@
if ( char_code < cmap->first )
char_code = cmap->first;
- idx = (FT_UInt32)( char_code - cmap->first );
- for ( ; idx < cmap->count; idx++, char_code++ )
+ for ( ; char_code < ( cmap->first + cmap->count ); char_code++ )
{
- result = cmap->indices[idx];
+ result = cmap->indices[char_code];
if ( result != 0 )
goto Exit;
}
diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c
index 2755f254a..5a6008d29 100644
--- a/src/type1/t1objs.c
+++ b/src/type1/t1objs.c
@@ -485,6 +485,10 @@
if ( clazz )
FT_CMap_New( clazz, NULL, &charmap, NULL );
+
+ /* Select default charmap */
+ if (root->num_charmaps)
+ root->charmap = root->charmaps[0];
}
}
diff --git a/src/winfonts/winfnt.c b/src/winfonts/winfnt.c
index b2b44a65f..5344c684f 100644
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -548,7 +548,12 @@
NULL,
&charmap,
NULL );
- if (error) goto Fail;
+ if ( error )
+ goto Fail;
+
+ /* Select default charmap */
+ if ( root->num_charmaps )
+ root->charmap = root->charmaps[0];
}
#else /* !FT_CONFIG_OPTION_USE_CMAPS */