public void LoadFontDescription_GetNameById() { var c1 = new CultureInfo(1034); // spanish - international var c2 = new CultureInfo(3082); // spanish - traditional var writer = new BigEndianBinaryWriter(); writer.WriteTrueTypeFileHeader(1, 0, 0, 0); writer.WriteTableHeader("name", 0, 28, 999); writer.WriteNameTable( (KnownNameIds.FullFontName, "name_c1", c1), (KnownNameIds.FontSubfamilyName, "sub_c1", c1), (KnownNameIds.FontFamilyName, "fam_c1", c1), (KnownNameIds.FullFontName, "name_c2", c2), (KnownNameIds.FontSubfamilyName, "sub_c2", c2), (KnownNameIds.FontFamilyName, "fam_c2", c2)); var description = FontDescription.LoadDescription(writer.GetStream()); Assert.Equal("name_c1", description.GetNameById(c1, KnownNameIds.FullFontName)); Assert.Equal("sub_c1", description.GetNameById(c1, KnownNameIds.FontSubfamilyName)); Assert.Equal("fam_c1", description.GetNameById(c1, KnownNameIds.FontFamilyName)); Assert.Equal("name_c2", description.GetNameById(c2, KnownNameIds.FullFontName)); Assert.Equal("sub_c2", description.GetNameById(c2, KnownNameIds.FontSubfamilyName)); Assert.Equal("fam_c2", description.GetNameById(c2, KnownNameIds.FontFamilyName)); }
public void LoadFontDescription_CultureNamePriority_Exactmatch() { var usCulture = new CultureInfo(0x0409); var c1 = new CultureInfo(1034); // spanish - international var c2 = new CultureInfo(3082); // spanish - traditional var writer = new BigEndianBinaryWriter(); writer.WriteTrueTypeFileHeader(1, 0, 0, 0); writer.WriteTableHeader("name", 0, 28, 999); writer.WriteNameTable( (WellKnownIds.NameIds.FullFontName, "name_c1", c1), (WellKnownIds.NameIds.FontSubfamilyName, "sub_c1", c1), (WellKnownIds.NameIds.FontFamilyName, "fam_c1", c1), (WellKnownIds.NameIds.FullFontName, "name_c2", c2), (WellKnownIds.NameIds.FontSubfamilyName, "sub_c2", c2), (WellKnownIds.NameIds.FontFamilyName, "fam_c2", c2), (WellKnownIds.NameIds.FullFontName, "name_us", usCulture), (WellKnownIds.NameIds.FontSubfamilyName, "sub_us", usCulture), (WellKnownIds.NameIds.FontFamilyName, "fam_us", usCulture)); var description = FontDescription.LoadDescription(writer.GetStream()); // unknown culture shoudl prioritise US, but missing so will return first Assert.Equal("name_c2", description.FontName(c2)); Assert.Equal("sub_c2", description.FontSubFamilyName(c2)); Assert.Equal("fam_c2", description.FontFamily(c2)); }
public void ReadTrueTypeOutlineType() { var writer = new BigEndianBinaryWriter(); writer.WriteTrueTypeFileHeader(0, 0, 0, 0); var reader = new FontReader(writer.GetStream()); Assert.Equal(FontReader.OutlineTypes.TrueType, reader.OutlineType); }
public void ReadCcfOutlineType() { var writer = new BigEndianBinaryWriter(); writer.WriteCffFileHeader(0, 0, 0, 0); Assert.Throws <Exceptions.InvalidFontFileException>( () => { var reader = new FontReader(writer.GetStream()); }); }
public void ReadTableHeaders() { var writer = new BigEndianBinaryWriter(); writer.WriteTrueTypeFileHeader(2, 0, 0, 0); writer.WriteTableHeader("name", 0, 10, 0); writer.WriteTableHeader("cmap", 0, 1, 0); var reader = new FontReader(writer.GetStream()); Assert.Equal(2, reader.Headers.Count); }
public void LoadFontDescription() { var writer = new BigEndianBinaryWriter(); writer.WriteTrueTypeFileHeader(1, 0, 0, 0); writer.WriteTableHeader("name", 0, 28, 999); writer.WriteNameTable( new Dictionary <WellKnownIds.NameIds, string> { { WellKnownIds.NameIds.FullFontName, "name" }, { WellKnownIds.NameIds.FontSubfamilyName, "sub" }, { WellKnownIds.NameIds.FontFamilyName, "fam" } }); var description = FontDescription.LoadDescription(writer.GetStream()); Assert.Equal("name", description.FontNameInvariantCulture); Assert.Equal("sub", description.FontSubFamilyNameInvariantCulture); Assert.Equal("fam", description.FontFamilyInvariantCulture); }
public void ReadCMapTable() { var writer = new BigEndianBinaryWriter(); writer.WriteTrueTypeFileHeader(new TableHeader("cmap", 0, 0, 20)); writer.WriteCMapTable( new[] { new Fonts.Tables.General.CMap.Format0SubTable( 0, WellKnownIds.PlatformIDs.Macintosh, 1, new byte[] { 2, 9 }) }); var reader = new FontReader(writer.GetStream()); CMapTable cmap = reader.GetTable <CMapTable>(); Assert.NotNull(cmap); }