SkAdvancedTypefaceMetrics: factor out GlyphToUnicode

Change-Id: Iedce8c1ea2c405d5ab64ccac353970d5cd2b9d63
Reviewed-on: https://skia-review.googlesource.com/126507
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
diff --git a/tests/PDFGlyphsToUnicodeTest.cpp b/tests/PDFGlyphsToUnicodeTest.cpp
index 332520b..2aeedf0 100644
--- a/tests/PDFGlyphsToUnicodeTest.cpp
+++ b/tests/PDFGlyphsToUnicodeTest.cpp
@@ -74,9 +74,12 @@
     glyphsInSubset.push(0x101);
     glyphToUnicode.push(0x1013);
 
+    SkGlyphID lastGlyphID = SkToU16(glyphToUnicode.count() - 1);
+
     SkDynamicMemoryWStream buffer;
     subset.setAll(glyphsInSubset.begin(), glyphsInSubset.count());
-    SkPDFAppendCmapSections(glyphToUnicode, &subset, &buffer, true, 0, 0xFFFF);
+    SkPDFAppendCmapSections(&glyphToUnicode[0], &subset, &buffer, true, 0,
+                            SkTMin<SkGlyphID>(0xFFFF,  lastGlyphID));
 
     char expectedResult[] =
 "4 beginbfchar\n\
@@ -98,7 +101,8 @@
     // Remove characters and ranges.
     buffer.reset();
 
-    SkPDFAppendCmapSections(glyphToUnicode, &subset, &buffer, true, 8, 0x00FF);
+    SkPDFAppendCmapSections(&glyphToUnicode[0], &subset, &buffer, true, 8,
+                            SkTMin<SkGlyphID>(0x00FF, lastGlyphID));
 
     char expectedResultChop1[] =
 "2 beginbfchar\n\
@@ -116,7 +120,8 @@
     // Remove characters from range to downdrade it to one char.
     buffer.reset();
 
-    SkPDFAppendCmapSections(glyphToUnicode, &subset, &buffer, true, 0x00D, 0x00FE);
+    SkPDFAppendCmapSections(&glyphToUnicode[0], &subset, &buffer, true, 0x00D,
+                            SkTMin<SkGlyphID>(0x00FE, lastGlyphID));
 
     char expectedResultChop2[] =
 "2 beginbfchar\n\
@@ -129,7 +134,8 @@
 
     buffer.reset();
 
-    SkPDFAppendCmapSections(glyphToUnicode, nullptr, &buffer, false, 0xFC, 0x110);
+    SkPDFAppendCmapSections(&glyphToUnicode[0], nullptr, &buffer, false, 0xFC,
+                            SkTMin<SkGlyphID>(0x110, lastGlyphID));
 
     char expectedResultSingleBytes[] =
 "2 beginbfchar\n\
@@ -155,6 +161,7 @@
     for (SkUnichar i = 0; i < 100; ++i) {
       glyphToUnicode.push(i + 29);
     }
+    lastGlyphID = SkToU16(glyphToUnicode.count() - 1);
 
     glyphsInSubset.push(0x2C);
     glyphsInSubset.push(0x44);
@@ -165,7 +172,8 @@
 
     SkDynamicMemoryWStream buffer2;
     subset2.setAll(glyphsInSubset.begin(), glyphsInSubset.count());
-    SkPDFAppendCmapSections(glyphToUnicode, &subset2, &buffer2, true, 0, 0xffff);
+    SkPDFAppendCmapSections(&glyphToUnicode[0], &subset2, &buffer2, true, 0,
+                            SkTMin<SkGlyphID>(0xFFFF, lastGlyphID));
 
     char expectedResult2[] =
 "4 beginbfchar\n\