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));
        }
示例#3
0
        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);
        }
示例#4
0
        public void ReadCcfOutlineType()
        {
            var writer = new BigEndianBinaryWriter();

            writer.WriteCffFileHeader(0, 0, 0, 0);
            Assert.Throws <Exceptions.InvalidFontFileException>(
                () =>
            {
                var reader = new FontReader(writer.GetStream());
            });
        }
示例#5
0
        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);
        }
示例#7
0
        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);
        }