Ejemplo n.º 1
0
        protected internal override void Write(FontFileWriter writer)
        {
            FontFileStream stream = writer.Stream;

            // These two fields are common to versions 0.5 and 1.0
            stream.WriteFixed(versionNo);
            stream.WriteUShort(numGlyphs);

            // Version 1.0 of this table contains more data
            if (versionNo == 0x00010000)
            {
                stream.WriteUShort(maxPoints);
                stream.WriteUShort(maxContours);
                stream.WriteUShort(maxCompositePoints);
                stream.WriteUShort(maxCompositeContours);
                stream.WriteUShort(maxZones);
                stream.WriteUShort(maxTwilightPoints);
                stream.WriteUShort(maxStorage);
                stream.WriteUShort(maxFunctionDefs);
                stream.WriteUShort(maxInstructionDefs);
                stream.WriteUShort(maxStackElements);
                stream.WriteUShort(maxSizeOfInstructions);
                stream.WriteUShort(maxComponentElements);
                stream.WriteUShort(maxComponentDepth);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Writes the offset table that appears at the beginning of
        ///     every TrueType/OpenType font.
        /// </summary>
        private void WriteOffsetTable()
        {
            // sfnt version (0x00010000 for version 1.0).
            stream.WriteFixed(0x00010000);

            // numTables field
            int numTables = tables.Count;

            stream.WriteUShort(numTables);

            // searchRange field ((Maximum power of 2 <= numTables) x 16)
            int maxPower    = MaxPow2(numTables);
            int searchRange = maxPower * 16;

            stream.WriteUShort(searchRange);

            // entrySelector (Log2(maximum power of 2 <= numTables))
            int entrySelector = (int)(Math.Log(maxPower, 2));

            stream.WriteUShort(entrySelector);

            // NumTables x 16-searchRange.
            int rangeShift = numTables * 16 - searchRange;

            stream.WriteUShort(rangeShift);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Writes the contents of the head table to the supplied stream.
        /// </summary>
        /// <param name="writer"></param>
        protected internal override void Write(FontFileWriter writer)
        {
            FontFileStream stream = writer.Stream;

            stream.WriteFixed(versionNo);
            stream.WriteFixed(fontRevision);
            stream.WriteULong(0);
            stream.WriteULong(0x5F0F3CF5);
            stream.WriteUShort(flags);
            stream.WriteUShort(unitsPermEm);
            stream.WriteDateTime((long)(createDate - BaseDate).TotalSeconds);
            stream.WriteDateTime((long)(updateDate - BaseDate).TotalSeconds);
            stream.WriteShort(xMin);
            stream.WriteShort(yMin);
            stream.WriteShort(xMax);
            stream.WriteShort(yMax);
            stream.WriteUShort(macStyle);
            stream.WriteUShort(lowestRecPPEM);
            stream.WriteShort(fontDirectionHint);
            stream.WriteShort(1);
            stream.WriteShort(glyphDataFormat);
        }
Ejemplo n.º 4
0
        protected internal override void Write(FontFileWriter writer)
        {
            FontFileStream stream = writer.Stream;

            stream.WriteFixed(versionNo);
            stream.WriteFWord(ascender);
            stream.WriteFWord(decender);
            stream.WriteFWord(lineGap);
            stream.WriteUFWord(advanceWidthMax);
            stream.WriteFWord(minLeftSideBearing);
            stream.WriteFWord(minRightSideBearing);
            stream.WriteFWord(xMaxExtent);
            stream.WriteShort(caretSlopeRise);
            stream.WriteShort(caretSlopeRun);
            stream.WriteShort(caretOffset);
            stream.WriteShort(0);
            stream.WriteShort(0);
            stream.WriteShort(0);
            stream.WriteShort(0);
            stream.WriteShort(metricDataFormat);
            stream.WriteUShort(numberOfHMetrics);
        }