more work on boundaries and unit tests

This commit is contained in:
modest-as
2018-04-13 00:18:38 +01:00
parent d65f50dfd1
commit 05da4d0726
10 changed files with 167 additions and 281 deletions

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace UglyToad.PdfPig.Tests
{
internal class DecimalComparer : IEqualityComparer<decimal>
{
private readonly decimal precision;
public DecimalComparer(decimal precision)
{
this.precision = precision;
}
public bool Equals(decimal x, decimal y)
{
return Math.Abs(x - y) < precision;
}
public int GetHashCode(decimal obj)
{
return obj.GetHashCode();
}
}
}

View File

@@ -82,7 +82,8 @@
}
Assert.Equal(theirLetter, myLetter);
Assert.Equal(theirX, myX, 2);
Assert.True(Math.Abs(theirX - myX) < 2);
index++;
}

View File

@@ -37,6 +37,41 @@
}
}
[Fact]
public void HasCorrectLetterBoundingBoxes()
{
using (var document = PdfDocument.Open(GetFilename()))
{
var page = document.GetPage(1);
var comparer = new DecimalComparer(3m);
Assert.Equal("I", page.Letters[0].Value);
Assert.Equal(90.1m, page.Letters[0].Rectangle.BottomLeft.X, comparer);
Assert.Equal(709.2m, page.Letters[0].Rectangle.BottomLeft.Y, comparer);
Assert.Equal(94.0m, page.Letters[0].Rectangle.TopRight.X, comparer);
Assert.Equal(719.89m, page.Letters[0].Rectangle.TopRight.Y, comparer);
Assert.Equal("a", page.Letters[5].Value);
Assert.Equal(114.5m, page.Letters[5].Rectangle.BottomLeft.X, comparer);
Assert.Equal(709.2m, page.Letters[5].Rectangle.BottomLeft.Y, comparer);
Assert.Equal(119.82m, page.Letters[5].Rectangle.TopRight.X, comparer);
Assert.Equal(719.89m, page.Letters[5].Rectangle.TopRight.Y, comparer);
Assert.Equal("f", page.Letters[16].Value);
Assert.Equal(169.9m, page.Letters[16].Rectangle.BottomLeft.X, comparer);
Assert.Equal(709.2m, page.Letters[16].Rectangle.BottomLeft.Y, comparer);
Assert.Equal(176.89m, page.Letters[16].Rectangle.TopRight.X, comparer);
Assert.Equal(719.89m, page.Letters[16].Rectangle.TopRight.Y, comparer);
}
}
[Fact]
public void GetsCorrectPageTextIgnoringHiddenCharacters()
{

View File

@@ -0,0 +1,65 @@
namespace UglyToad.PdfPig.Tests.Integration
{
using System;
using System.IO;
using System.Linq;
using Content;
using Xunit;
public class Type0FontTests
{
private static string GetFilename()
{
var documentFolder = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", "..", "..", "Integration", "Documents"));
return Path.Combine(documentFolder, "Type0 Font.pdf");
}
[Fact]
public void HasCorrectNumberOfPages()
{
var file = GetFilename();
using (var document = PdfDocument.Open(File.ReadAllBytes(file)))
{
Assert.Equal(1, document.NumberOfPages);
}
}
[Fact]
public void HasCorrectPageSize()
{
using (var document = PdfDocument.Open(GetFilename()))
{
var page = document.GetPage(1);
Assert.Equal(PageSize.Letter, page.Size);
}
}
[Fact]
public void GetsCorrectPageTextIgnoringHiddenCharacters()
{
using (var document = PdfDocument.Open(GetFilename()))
{
var page = document.GetPage(1);
var text = string.Join(string.Empty, page.Letters.Select(x => x.Value));
Assert.True(text?.Contains("Powder River Examiner"));
}
}
[Fact]
public void HasLetterWidthsAndHeights()
{
using (var document = PdfDocument.Open(GetFilename()))
{
var page = document.GetPage(1);
Assert.False((bool) page.Letters.Any(x => x.Rectangle.Width == 0));
Assert.False((bool) page.Letters.Any(x => x.Rectangle.Height == 0));
}
}
}
}

View File

@@ -8,20 +8,8 @@
</PropertyGroup>
<ItemGroup>
<None Remove="Fonts\TrueType\google-simple-doc.ttf" />
<None Remove="Fonts\TrueType\Roboto-Regular.ttf" />
<None Remove="Integration\Documents\FarmerMac.pdf" />
<None Remove="Integration\Documents\Font Size Test - from google chrome print pdf.pdf" />
<None Remove="Integration\Documents\Font Size Test - from libre office.pdf" />
<None Remove="Integration\Documents\ICML03-081.pdf" />
<None Remove="Integration\Documents\Judgement Document.pdf" />
<None Remove="Integration\Documents\Multiple Page - from Mortality Statistics.pdf" />
<None Remove="Integration\Documents\Single Page Form Content - from itext 1_1.pdf" />
<None Remove="Integration\Documents\Single Page Non Latin - from acrobat distiller.pdf" />
<None Remove="Integration\Documents\Single Page Simple - from google drive.pdf" />
<None Remove="Integration\Documents\Single Page Simple - from open office.pdf" />
<None Remove="Integration\Documents\Single Page Type 1 Font.pdf" />
<None Remove="Integration\Documents\Two Page Text Only - from libre office.pdf" />
<None Remove="Fonts\TrueType\*" />
<None Remove="Integration\Documents\*" />
</ItemGroup>
<ItemGroup>
@@ -31,40 +19,7 @@
<EmbeddedResource Include="Fonts\TrueType\Roboto-Regular.ttf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<Content Include="Integration\Documents\FarmerMac.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Font Size Test - from libre office.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Font Size Test - from google chrome print pdf.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\ICML03-081.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Judgement Document.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Multiple Page - from Mortality Statistics.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Single Page Non Latin - from acrobat distiller.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Single Page Simple - from google drive.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Single Page Form Content - from itext 1_1.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Single Page Simple - from open office.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Single Page Type 1 Font.pdf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Integration\Documents\Two Page Text Only - from libre office.pdf">
<Content Include="Integration\Documents\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
@@ -80,10 +35,4 @@
<ProjectReference Include="..\UglyToad.PdfPig\UglyToad.PdfPig.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="Integration\Documents\2006_Swedish_Touring_Car_Championship.pdf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -27,8 +27,6 @@
[NotNull]
public ToUnicodeCMap ToUnicode { get; set; }
private readonly TransformationMatrix fontMatrix = TransformationMatrix.FromValues(0.001m, 0, 0, 0.001m, 0, 0);
public TrueTypeSimpleFont(NameToken name,
FontDescriptor descriptor,
[CanBeNull] CMap toUnicodeCMap,
@@ -82,7 +80,7 @@
public PdfRectangle GetBoundingBox(int characterCode)
{
return fontMatrix.Transform(GetBoundingBoxInGlyphSpace(characterCode));
return GetFontMatrix().Transform(GetBoundingBoxInGlyphSpace(characterCode));
}
private PdfRectangle GetBoundingBoxInGlyphSpace(int characterCode)
@@ -104,8 +102,14 @@
public TransformationMatrix GetFontMatrix()
{
// TODO: should this also use units per em?
return fontMatrix;
var scale = 1000m;
if (font?.HeaderTable != null)
{
scale = font.HeaderTable.UnitsPerEm;
}
return TransformationMatrix.FromValues(1m / scale, 0, 0, 1m / scale, 0, 0);
}
}
}

View File

@@ -7,21 +7,25 @@
private readonly int[] advancedWidths;
private readonly short[] leftSideBearings;
private readonly int metricCount;
public string Tag => TrueTypeHeaderTable.Hmtx;
public TrueTypeHeaderTable DirectoryTable { get; }
public HorizontalMetricsTable(TrueTypeHeaderTable directoryTable, int[] advancedWidths, short[] leftSideBearings)
public HorizontalMetricsTable(TrueTypeHeaderTable directoryTable, int[] advancedWidths, short[] leftSideBearings, int metricCount)
{
this.advancedWidths = advancedWidths;
this.leftSideBearings = leftSideBearings;
this.metricCount = metricCount;
DirectoryTable = directoryTable;
}
public static HorizontalMetricsTable Load(TrueTypeDataBytes data, TrueTypeHeaderTable table, TableRegister tableRegister)
{
var metricCount = tableRegister.HorizontalHeaderTable.NumberOfHeaderMetrics;
var glyphCount = tableRegister.MaximumProfileTable.NumberOfGlyphs;
var metricCount = tableRegister.HorizontalHeaderTable.NumberOfHeaderMetrics;
data.Seek(table.Offset);
@@ -44,7 +48,19 @@
leftSideBearings[metricCount + i] = data.ReadSignedShort();
}
return new HorizontalMetricsTable(table, advancedWidths, leftSideBearings);
return new HorizontalMetricsTable(table, advancedWidths, leftSideBearings, metricCount);
}
public int GetAdvanceWidth(int index)
{
if (index < metricCount)
{
return advancedWidths[index];
}
// monospaced fonts may not have a width for every glyph
// the last one is for subsequent glyphs
return advancedWidths[advancedWidths.Length - 1];
}
}
}

View File

@@ -15,6 +15,7 @@
public HeaderTable HeaderTable { get; }
public CMapTable CMapTable { get; }
public GlyphDataTable GlyphTable { get; }
public TableRegister TableRegister { get; }
public TrueTypeFont(decimal version, IReadOnlyDictionary<string, TrueTypeHeaderTable> tableHeaders, TableRegister tableRegister)
{
@@ -25,6 +26,7 @@
Version = version;
TableHeaders = tableHeaders;
TableRegister = tableRegister;
HeaderTable = tableRegister.HeaderTable;
CMapTable = tableRegister.CMapTable;
GlyphTable = tableRegister.GlyphDataTable;

View File

@@ -12,7 +12,7 @@
<PackageTags>PDF;Reader;Document;Adobe;PDFBox;PdfPig</PackageTags>
<RepositoryUrl>https://github.com/UglyToad/PdfPig</RepositoryUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Version>0.0.1</Version>
<Version>0.0.5</Version>
<AssemblyVersion>0.0.1.3</AssemblyVersion>
<FileVersion>0.0.1.3</FileVersion>
<PackageIconUrl>https://raw.githubusercontent.com/UglyToad/PdfPig/master/documentation/pdfpig.png</PackageIconUrl>
@@ -20,115 +20,9 @@
</PropertyGroup>
<ItemGroup>
<None Remove="Resources\AdobeFontMetrics\Courier-Bold.afm" />
<None Remove="Resources\AdobeFontMetrics\Courier-BoldOblique.afm" />
<None Remove="Resources\AdobeFontMetrics\Courier-Oblique.afm" />
<None Remove="Resources\AdobeFontMetrics\Courier.afm" />
<None Remove="Resources\AdobeFontMetrics\Helvetica-Bold.afm" />
<None Remove="Resources\AdobeFontMetrics\Helvetica-BoldOblique.afm" />
<None Remove="Resources\AdobeFontMetrics\Helvetica-Oblique.afm" />
<None Remove="Resources\AdobeFontMetrics\Helvetica.afm" />
<None Remove="Resources\AdobeFontMetrics\MustRead.html" />
<None Remove="Resources\AdobeFontMetrics\Symbol.afm" />
<None Remove="Resources\AdobeFontMetrics\Times-Bold.afm" />
<None Remove="Resources\AdobeFontMetrics\Times-BoldItalic.afm" />
<None Remove="Resources\AdobeFontMetrics\Times-Italic.afm" />
<None Remove="Resources\AdobeFontMetrics\Times-Roman.afm" />
<None Remove="Resources\AdobeFontMetrics\ZapfDingbats.afm" />
<None Remove="Resources\CMap\83pv-RKSJ-H" />
<None Remove="Resources\CMap\90ms-RKSJ-H" />
<None Remove="Resources\CMap\90ms-RKSJ-V" />
<None Remove="Resources\CMap\90msp-RKSJ-H" />
<None Remove="Resources\CMap\90msp-RKSJ-V" />
<None Remove="Resources\CMap\90pv-RKSJ-H" />
<None Remove="Resources\CMap\90pv-RKSJ-V" />
<None Remove="Resources\CMap\Add-RKSJ-H" />
<None Remove="Resources\CMap\Add-RKSJ-V" />
<None Remove="Resources\CMap\Adobe-CNS1-0" />
<None Remove="Resources\CMap\Adobe-CNS1-1" />
<None Remove="Resources\CMap\Adobe-CNS1-2" />
<None Remove="Resources\CMap\Adobe-CNS1-3" />
<None Remove="Resources\CMap\Adobe-CNS1-4" />
<None Remove="Resources\CMap\Adobe-CNS1-5" />
<None Remove="Resources\CMap\Adobe-CNS1-6" />
<None Remove="Resources\CMap\Adobe-CNS1-UCS2" />
<None Remove="Resources\CMap\Adobe-GB1-0" />
<None Remove="Resources\CMap\Adobe-GB1-1" />
<None Remove="Resources\CMap\Adobe-GB1-2" />
<None Remove="Resources\CMap\Adobe-GB1-3" />
<None Remove="Resources\CMap\Adobe-GB1-4" />
<None Remove="Resources\CMap\Adobe-GB1-5" />
<None Remove="Resources\CMap\Adobe-GB1-UCS2" />
<None Remove="Resources\CMap\Adobe-Japan1-0" />
<None Remove="Resources\CMap\Adobe-Japan1-1" />
<None Remove="Resources\CMap\Adobe-Japan1-2" />
<None Remove="Resources\CMap\Adobe-Japan1-3" />
<None Remove="Resources\CMap\Adobe-Japan1-4" />
<None Remove="Resources\CMap\Adobe-Japan1-5" />
<None Remove="Resources\CMap\Adobe-Japan1-6" />
<None Remove="Resources\CMap\Adobe-Japan1-UCS2" />
<None Remove="Resources\CMap\Adobe-Japan2-0" />
<None Remove="Resources\CMap\Adobe-Korea1-0" />
<None Remove="Resources\CMap\Adobe-Korea1-1" />
<None Remove="Resources\CMap\Adobe-Korea1-2" />
<None Remove="Resources\CMap\Adobe-Korea1-UCS2" />
<None Remove="Resources\CMap\B5pc-H" />
<None Remove="Resources\CMap\B5pc-V" />
<None Remove="Resources\CMap\CNS-EUC-H" />
<None Remove="Resources\CMap\CNS-EUC-V" />
<None Remove="Resources\CMap\ETen-B5-H" />
<None Remove="Resources\CMap\ETen-B5-V" />
<None Remove="Resources\CMap\ETenms-B5-H" />
<None Remove="Resources\CMap\ETenms-B5-V" />
<None Remove="Resources\CMap\EUC-H" />
<None Remove="Resources\CMap\EUC-V" />
<None Remove="Resources\CMap\Ext-RKSJ-H" />
<None Remove="Resources\CMap\Ext-RKSJ-V" />
<None Remove="Resources\CMap\GB-EUC-H" />
<None Remove="Resources\CMap\GB-EUC-V" />
<None Remove="Resources\CMap\GBK-EUC-H" />
<None Remove="Resources\CMap\GBK-EUC-V" />
<None Remove="Resources\CMap\GBK2K-H" />
<None Remove="Resources\CMap\GBK2K-V" />
<None Remove="Resources\CMap\GBKp-EUC-H" />
<None Remove="Resources\CMap\GBKp-EUC-V" />
<None Remove="Resources\CMap\GBpc-EUC-H" />
<None Remove="Resources\CMap\GBpc-EUC-V" />
<None Remove="Resources\CMap\H" />
<None Remove="Resources\CMap\HKscs-B5-H" />
<None Remove="Resources\CMap\HKscs-B5-V" />
<None Remove="Resources\CMap\Identity-H" />
<None Remove="Resources\CMap\Identity-V" />
<None Remove="Resources\CMap\KSC-EUC-H" />
<None Remove="Resources\CMap\KSC-EUC-V" />
<None Remove="Resources\CMap\KSCms-UHC-H" />
<None Remove="Resources\CMap\KSCms-UHC-HW-H" />
<None Remove="Resources\CMap\KSCms-UHC-HW-V" />
<None Remove="Resources\CMap\KSCms-UHC-V" />
<None Remove="Resources\CMap\KSCpc-EUC-H" />
<None Remove="Resources\CMap\KSCpc-EUC-V" />
<None Remove="Resources\CMap\UniCNS-UCS2-H" />
<None Remove="Resources\CMap\UniCNS-UCS2-V" />
<None Remove="Resources\CMap\UniCNS-UTF16-H" />
<None Remove="Resources\CMap\UniCNS-UTF16-V" />
<None Remove="Resources\CMap\UniGB-UCS2-H" />
<None Remove="Resources\CMap\UniGB-UCS2-V" />
<None Remove="Resources\CMap\UniGB-UTF16-H" />
<None Remove="Resources\CMap\UniGB-UTF16-V" />
<None Remove="Resources\CMap\UniJIS-UCS2-H" />
<None Remove="Resources\CMap\UniJIS-UCS2-HW-H" />
<None Remove="Resources\CMap\UniJIS-UCS2-HW-V" />
<None Remove="Resources\CMap\UniJIS-UCS2-V" />
<None Remove="Resources\CMap\UniJIS-UTF16-H" />
<None Remove="Resources\CMap\UniJIS-UTF16-V" />
<None Remove="Resources\CMap\UniKS-UCS2-H" />
<None Remove="Resources\CMap\UniKS-UCS2-V" />
<None Remove="Resources\CMap\UniKS-UTF16-H" />
<None Remove="Resources\CMap\UniKS-UTF16-V" />
<None Remove="Resources\CMap\V" />
<None Remove="Resources\GlyphList\additional" />
<None Remove="Resources\GlyphList\glyphlist" />
<None Remove="Resources\GlyphList\zapfdingbats" />
<None Remove="Resources\AdobeFontMetrics\*" />
<None Remove="Resources\CMap\*" />
<None Remove="Resources\GlyphList\*" />
</ItemGroup>
<ItemGroup>
@@ -138,114 +32,9 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\AdobeFontMetrics\Courier-Bold.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Courier-BoldOblique.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Courier-Oblique.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Courier.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Helvetica-Bold.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Helvetica-BoldOblique.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Helvetica-Oblique.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Helvetica.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Symbol.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Times-Bold.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Times-BoldItalic.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Times-Italic.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\Times-Roman.afm" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\ZapfDingbats.afm" />
<EmbeddedResource Include="Resources\CMap\83pv-RKSJ-H" />
<EmbeddedResource Include="Resources\CMap\90ms-RKSJ-H" />
<EmbeddedResource Include="Resources\CMap\90ms-RKSJ-V" />
<EmbeddedResource Include="Resources\CMap\90msp-RKSJ-H" />
<EmbeddedResource Include="Resources\CMap\90msp-RKSJ-V" />
<EmbeddedResource Include="Resources\CMap\90pv-RKSJ-H" />
<EmbeddedResource Include="Resources\CMap\90pv-RKSJ-V" />
<EmbeddedResource Include="Resources\CMap\Add-RKSJ-H" />
<EmbeddedResource Include="Resources\CMap\Add-RKSJ-V" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-0" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-1" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-2" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-3" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-4" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-5" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-6" />
<EmbeddedResource Include="Resources\CMap\Adobe-CNS1-UCS2" />
<EmbeddedResource Include="Resources\CMap\Adobe-GB1-0" />
<EmbeddedResource Include="Resources\CMap\Adobe-GB1-1" />
<EmbeddedResource Include="Resources\CMap\Adobe-GB1-2" />
<EmbeddedResource Include="Resources\CMap\Adobe-GB1-3" />
<EmbeddedResource Include="Resources\CMap\Adobe-GB1-4" />
<EmbeddedResource Include="Resources\CMap\Adobe-GB1-5" />
<EmbeddedResource Include="Resources\CMap\Adobe-GB1-UCS2" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-0" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-1" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-2" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-3" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-4" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-5" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-6" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan1-UCS2" />
<EmbeddedResource Include="Resources\CMap\Adobe-Japan2-0" />
<EmbeddedResource Include="Resources\CMap\Adobe-Korea1-0" />
<EmbeddedResource Include="Resources\CMap\Adobe-Korea1-1" />
<EmbeddedResource Include="Resources\CMap\Adobe-Korea1-2" />
<EmbeddedResource Include="Resources\CMap\Adobe-Korea1-UCS2" />
<EmbeddedResource Include="Resources\CMap\B5pc-H" />
<EmbeddedResource Include="Resources\CMap\B5pc-V" />
<EmbeddedResource Include="Resources\CMap\CNS-EUC-H" />
<EmbeddedResource Include="Resources\CMap\CNS-EUC-V" />
<EmbeddedResource Include="Resources\CMap\ETen-B5-H" />
<EmbeddedResource Include="Resources\CMap\ETen-B5-V" />
<EmbeddedResource Include="Resources\CMap\ETenms-B5-H" />
<EmbeddedResource Include="Resources\CMap\ETenms-B5-V" />
<EmbeddedResource Include="Resources\CMap\EUC-H" />
<EmbeddedResource Include="Resources\CMap\EUC-V" />
<EmbeddedResource Include="Resources\CMap\Ext-RKSJ-H" />
<EmbeddedResource Include="Resources\CMap\Ext-RKSJ-V" />
<EmbeddedResource Include="Resources\CMap\GB-EUC-H" />
<EmbeddedResource Include="Resources\CMap\GB-EUC-V" />
<EmbeddedResource Include="Resources\CMap\GBK-EUC-H" />
<EmbeddedResource Include="Resources\CMap\GBK-EUC-V" />
<EmbeddedResource Include="Resources\CMap\GBK2K-H" />
<EmbeddedResource Include="Resources\CMap\GBK2K-V" />
<EmbeddedResource Include="Resources\CMap\GBKp-EUC-H" />
<EmbeddedResource Include="Resources\CMap\GBKp-EUC-V" />
<EmbeddedResource Include="Resources\CMap\GBpc-EUC-H" />
<EmbeddedResource Include="Resources\CMap\GBpc-EUC-V" />
<EmbeddedResource Include="Resources\CMap\H" />
<EmbeddedResource Include="Resources\CMap\HKscs-B5-H" />
<EmbeddedResource Include="Resources\CMap\HKscs-B5-V" />
<EmbeddedResource Include="Resources\CMap\Identity-H" />
<EmbeddedResource Include="Resources\CMap\Identity-V" />
<EmbeddedResource Include="Resources\CMap\KSC-EUC-H" />
<EmbeddedResource Include="Resources\CMap\KSC-EUC-V" />
<EmbeddedResource Include="Resources\CMap\KSCms-UHC-H" />
<EmbeddedResource Include="Resources\CMap\KSCms-UHC-HW-H" />
<EmbeddedResource Include="Resources\CMap\KSCms-UHC-HW-V" />
<EmbeddedResource Include="Resources\CMap\KSCms-UHC-V" />
<EmbeddedResource Include="Resources\CMap\KSCpc-EUC-H" />
<EmbeddedResource Include="Resources\CMap\KSCpc-EUC-V" />
<EmbeddedResource Include="Resources\CMap\UniCNS-UCS2-H" />
<EmbeddedResource Include="Resources\CMap\UniCNS-UCS2-V" />
<EmbeddedResource Include="Resources\CMap\UniCNS-UTF16-H" />
<EmbeddedResource Include="Resources\CMap\UniCNS-UTF16-V" />
<EmbeddedResource Include="Resources\CMap\UniGB-UCS2-H" />
<EmbeddedResource Include="Resources\CMap\UniGB-UCS2-V" />
<EmbeddedResource Include="Resources\CMap\UniGB-UTF16-H" />
<EmbeddedResource Include="Resources\CMap\UniGB-UTF16-V" />
<EmbeddedResource Include="Resources\CMap\UniJIS-UCS2-H" />
<EmbeddedResource Include="Resources\CMap\UniJIS-UCS2-HW-H" />
<EmbeddedResource Include="Resources\CMap\UniJIS-UCS2-HW-V" />
<EmbeddedResource Include="Resources\CMap\UniJIS-UCS2-V" />
<EmbeddedResource Include="Resources\CMap\UniJIS-UTF16-H" />
<EmbeddedResource Include="Resources\CMap\UniJIS-UTF16-V" />
<EmbeddedResource Include="Resources\CMap\UniKS-UCS2-H" />
<EmbeddedResource Include="Resources\CMap\UniKS-UCS2-V" />
<EmbeddedResource Include="Resources\CMap\UniKS-UTF16-H" />
<EmbeddedResource Include="Resources\CMap\UniKS-UTF16-V" />
<EmbeddedResource Include="Resources\CMap\V" />
<EmbeddedResource Include="Resources\GlyphList\additional" />
<EmbeddedResource Include="Resources\GlyphList\glyphlist" />
<EmbeddedResource Include="Resources\GlyphList\zapfdingbats" />
<EmbeddedResource Include="Resources\AdobeFontMetrics\*" />
<EmbeddedResource Include="Resources\CMap\*" />
<EmbeddedResource Include="Resources\GlyphList\*" />
</ItemGroup>
</Project>