diff --git a/.gitignore b/.gitignore
index 06d1bbfc..56fef459 100644
--- a/.gitignore
+++ b/.gitignore
@@ -241,3 +241,5 @@ _Pvt_Extensions
# FAKE - F# Make
.fake/
+/src/CodeCoverage/OpenCover.4.6.519
+/src/test-results.xml
diff --git a/src/CodeCoverage/CodeCoverage.cmd b/src/CodeCoverage/CodeCoverage.cmd
new file mode 100644
index 00000000..a6c3a55b
--- /dev/null
+++ b/src/CodeCoverage/CodeCoverage.cmd
@@ -0,0 +1,15 @@
+@echo off
+
+cd src\CodeCoverage
+
+nuget restore packages.config -PackagesDirectory .
+
+cd ..
+
+dotnet restore UglyToad.Pdf.sln
+dotnet build UglyToad.Pdf.sln --no-incremental -c debug /p:codecov=true
+
+rem The -threshold options prevents this taking ages...
+CodeCoverage\OpenCover.4.6.519\tools\OpenCover.Console.exe -target:"dotnet.exe" -targetargs:"test UglyToad.Pdf.Tests\UglyToad.Pdf.Tests.csproj --no-build -c debug" -register:user -output:.\test-results.xml -hideskipped:All -returntargetcode -oldStyle -filter:"+[UglyToad.Pdf*]* -[UglyToad.Pdf.Tests*]*"
+
+if %errorlevel% neq 0 exit /b %errorlevel%
diff --git a/src/CodeCoverage/nuget.exe b/src/CodeCoverage/nuget.exe
new file mode 100644
index 00000000..a34c3675
Binary files /dev/null and b/src/CodeCoverage/nuget.exe differ
diff --git a/src/CodeCoverage/packages.config b/src/CodeCoverage/packages.config
new file mode 100644
index 00000000..973b7f81
--- /dev/null
+++ b/src/CodeCoverage/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/UglyToad.Pdf/Fonts/TrueType/Tables/IndexToLocationTable.cs b/src/UglyToad.Pdf/Fonts/TrueType/Tables/IndexToLocationTable.cs
new file mode 100644
index 00000000..2790ae9a
--- /dev/null
+++ b/src/UglyToad.Pdf/Fonts/TrueType/Tables/IndexToLocationTable.cs
@@ -0,0 +1,29 @@
+namespace UglyToad.Pdf.Fonts.TrueType.Tables
+{
+ ///
+ /// Stores the offset to the glyph locations relative to the start of the glyph data table.
+ /// Index zero points to the "missing character" which is used for characters not provided by the font.
+ /// The number of glpyhs in this table should match the maximum profile table.
+ ///
+ internal class IndexToLocationTable : ITable
+ {
+ public string Tag => TrueTypeHeaderTable.Loca;
+
+ public TrueTypeHeaderTable DirectoryTable { get; }
+
+ public long[] GlyphOffsets { get; }
+
+ public IndexToLocationTable(TrueTypeHeaderTable directoryTable, long[] glyphOffsets)
+ {
+ DirectoryTable = directoryTable;
+ GlyphOffsets = glyphOffsets;
+ }
+
+ public static IndexToLocationTable Load(TrueTypeDataBytes data, TrueTypeHeaderTable table)
+ {
+ data.Seek(table.Offset);
+
+ return null;
+ }
+ }
+}