diff options
author | arthurhsu@google.com <arthurhsu@google.com@672e30a5-4c29-85ac-ac6d-611c735e0a51> | 2012-02-28 03:19:21 +0000 |
---|---|---|
committer | arthurhsu@google.com <arthurhsu@google.com@672e30a5-4c29-85ac-ac6d-611c735e0a51> | 2012-02-28 03:19:21 +0000 |
commit | 127cef2a54a5b6e6777761d550c1ec90e736383f (patch) | |
tree | 6219d606da70cd1f721eca15df6f0559f5ca1d6e | |
parent | 8f7575736031a19220e1a36ab2eb21c6d447dfef (diff) | |
download | src-127cef2a54a5b6e6777761d550c1ec90e736383f.tar.gz |
Work around Apple MacOS X Lion AppleMyungjo font bug.
git-svn-id: http://sfntly.googlecode.com/svn/trunk/cpp/src@128 672e30a5-4c29-85ac-ac6d-611c735e0a51
-rw-r--r-- | sample/chromium/subsetter_impl.cc | 5 | ||||
-rw-r--r-- | sfntly/table/bitmap/index_sub_table_format1.cc | 3 | ||||
-rw-r--r-- | sfntly/table/bitmap/index_sub_table_format2.cc | 3 | ||||
-rw-r--r-- | sfntly/table/bitmap/index_sub_table_format3.cc | 3 | ||||
-rw-r--r-- | sfntly/table/bitmap/index_sub_table_format4.cc | 3 | ||||
-rw-r--r-- | sfntly/table/bitmap/index_sub_table_format5.cc | 3 |
6 files changed, 20 insertions, 0 deletions
diff --git a/sample/chromium/subsetter_impl.cc b/sample/chromium/subsetter_impl.cc index 7e7cf61..3708f44 100644 --- a/sample/chromium/subsetter_impl.cc +++ b/sample/chromium/subsetter_impl.cc @@ -313,6 +313,11 @@ bool InitializeBitmapBuilder(EbdtTable::Builder* ebdt, EblcTable::Builder* eblc, IntegerList removed_indexes; BitmapGlyphInfoMap info_map; for (size_t j = 0; j < index_builders->size(); ++j) { + if ((*index_builders)[j] == NULL) { + // Subtable is malformed, let's just skip it. + removed_indexes.push_back(j); + continue; + } int32_t first_glyph_id = (*index_builders)[j]->first_glyph_index(); int32_t last_glyph_id = (*index_builders)[j]->last_glyph_index(); if (!HasOverlap(first_glyph_id, last_glyph_id, glyph_ids)) { diff --git a/sfntly/table/bitmap/index_sub_table_format1.cc b/sfntly/table/bitmap/index_sub_table_format1.cc index db73723..5199e18 100644 --- a/sfntly/table/bitmap/index_sub_table_format1.cc +++ b/sfntly/table/bitmap/index_sub_table_format1.cc @@ -121,6 +121,9 @@ IndexSubTableFormat1::Builder::CreateBuilder(ReadableFontData* data, ReadableFontDataPtr new_data; new_data.Attach(down_cast<ReadableFontData*>( data->Slice(index_sub_table_offset, length))); + if (new_data == NULL) { + return NULL; + } IndexSubTableFormat1BuilderPtr output = new IndexSubTableFormat1::Builder(new_data, first_glyph_index, diff --git a/sfntly/table/bitmap/index_sub_table_format2.cc b/sfntly/table/bitmap/index_sub_table_format2.cc index b3bffda..ce73e9b 100644 --- a/sfntly/table/bitmap/index_sub_table_format2.cc +++ b/sfntly/table/bitmap/index_sub_table_format2.cc @@ -139,6 +139,9 @@ IndexSubTableFormat2::Builder::CreateBuilder(ReadableFontData* data, ReadableFontDataPtr new_data; new_data.Attach(down_cast<ReadableFontData*>( data->Slice(index_sub_table_offset, length))); + if (new_data == NULL) { + return NULL; + } IndexSubTableFormat2BuilderPtr output = new IndexSubTableFormat2::Builder(new_data, first_glyph_index, diff --git a/sfntly/table/bitmap/index_sub_table_format3.cc b/sfntly/table/bitmap/index_sub_table_format3.cc index b3e418f..e2679b7 100644 --- a/sfntly/table/bitmap/index_sub_table_format3.cc +++ b/sfntly/table/bitmap/index_sub_table_format3.cc @@ -134,6 +134,9 @@ IndexSubTableFormat3::Builder::CreateBuilder(ReadableFontData* data, ReadableFontDataPtr new_data; new_data.Attach(down_cast<ReadableFontData*>( data->Slice(index_sub_table_offset, length))); + if (new_data == NULL) { + return NULL; + } IndexSubTableFormat3BuilderPtr output = new IndexSubTableFormat3::Builder(new_data, first_glyph_index, diff --git a/sfntly/table/bitmap/index_sub_table_format4.cc b/sfntly/table/bitmap/index_sub_table_format4.cc index 23f3e47..5baa2a5 100644 --- a/sfntly/table/bitmap/index_sub_table_format4.cc +++ b/sfntly/table/bitmap/index_sub_table_format4.cc @@ -168,6 +168,9 @@ IndexSubTableFormat4::Builder::CreateBuilder(ReadableFontData* data, ReadableFontDataPtr new_data; new_data.Attach(down_cast<ReadableFontData*>( data->Slice(index_sub_table_offset, length))); + if (new_data == NULL) { + return NULL; + } IndexSubTableFormat4BuilderPtr output = new IndexSubTableFormat4::Builder(new_data, first_glyph_index, diff --git a/sfntly/table/bitmap/index_sub_table_format5.cc b/sfntly/table/bitmap/index_sub_table_format5.cc index b4ab1b8..0ca21fe 100644 --- a/sfntly/table/bitmap/index_sub_table_format5.cc +++ b/sfntly/table/bitmap/index_sub_table_format5.cc @@ -141,6 +141,9 @@ IndexSubTableFormat5::Builder::CreateBuilder(ReadableFontData* data, ReadableFontDataPtr new_data; new_data.Attach(down_cast<ReadableFontData*>( data->Slice(index_sub_table_offset, length))); + if (new_data == NULL) { + return NULL; + } IndexSubTableFormat5BuilderPtr output = new IndexSubTableFormat5::Builder(new_data, first_glyph_index, |