Beispiel #1
0
        /// <summary>
        /// Reads a <see cref="StreamFontMetrics"/> from the specified stream.
        /// </summary>
        /// <param name="path">The file path.</param>
        /// <returns>a <see cref="StreamFontMetrics"/>.</returns>
        public static FileFontMetrics[] LoadFontCollection(string path)
        {
            using FileStream fs = File.OpenRead(path);
            long startPos  = fs.Position;
            var  reader    = new BigEndianBinaryReader(fs, true);
            var  ttcHeader = TtcHeader.Read(reader);
            var  fonts     = new FileFontMetrics[(int)ttcHeader.NumFonts];

            for (int i = 0; i < ttcHeader.NumFonts; ++i)
            {
                fs.Position = startPos + ttcHeader.OffsetTable[i];
                var description = FontDescription.LoadDescription(fs);
                fonts[i] = new FileFontMetrics(description, path, ttcHeader.OffsetTable[i]);
            }

            return(fonts);
        }
Beispiel #2
0
 public FileFontInstance(string path, long offset)
     : this(FontDescription.LoadDescription(path), path, offset)
 {
 }
Beispiel #3
0
 public FileFontInstance(string path)
 {
     this.Description = FontDescription.LoadDescription(path);
     this.font        = new Lazy <Fonts.FontInstance>(() => FontInstance.LoadFont(path));
 }
Beispiel #4
0
 public FileFontMetrics(string path, long offset)
     : this(FontDescription.LoadDescription(path), path, offset)
 {
 }