コード例 #1
0
 def __AddChar(self, dstBuffer: List[int], bitmapFontChar: BitmapFontChar) -> None:
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, bitmapFontChar.Id)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, bitmapFontChar.X)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, bitmapFontChar.Y)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, bitmapFontChar.WidthPx)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, bitmapFontChar.HeightPx)
     FormatPluginFontBasicKerningUtil.AddEncodedInt32(dstBuffer, bitmapFontChar.XOffsetPx)
     FormatPluginFontBasicKerningUtil.AddEncodedInt32(dstBuffer, bitmapFontChar.YOffsetPx)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt16(dstBuffer, bitmapFontChar.XAdvancePx)
コード例 #2
0
    def __AddKernings(self, dstBuffer: List[int], kernings: List[BitmapFontKerning]) -> None:
        # Sort the kernings by first to ensure we always write the data in the same order
        sortedKernings = list(kernings)
        sortedKernings.sort(key=lambda entry: entry.First)

        FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, len(sortedKernings))
        for entry in sortedKernings:
            self.__AddKerning(dstBuffer, entry)
コード例 #3
0
    def __AddChars(self, dstBuffer: List[int], chars: List[BitmapFontChar]) -> None:
        # Sort the chars by id to ensure we always write the data in the same order
        sortedChars = list(chars)
        sortedChars.sort(key=lambda entry: entry.Id)

        FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, len(sortedChars))
        for ch in sortedChars:
            self.__AddChar(dstBuffer, ch)
コード例 #4
0
    def Process(self, basicFont: BasicFont, outputFilename: str) -> None:

        dst = [] # type: List[int]
        offsetSize = self.__WriteHeader(dst)
        sizeOfHeader = len(dst)

        self.__WriteRanges(dst, basicFont.Ranges)
        self.__WriteRangeGlyphKernings(dst, basicFont.BasicGlyphKerning)
        self.__WriteDescription(dst, basicFont)
        FormatPluginFontBasicKerningUtil.AddString(dst, basicFont.Name)
        FormatPluginFontBasicKerningUtil.AddString(dst, basicFont.Header.PathName)

        # Write the number of bytes that were written to the extended header
        bytesWritten = len(dst) - sizeOfHeader
        FormatPluginFontBasicKerningUtil.SetUInt32(dst, offsetSize, bytesWritten)

        content = bytearray(dst)
        finalOutputFilename = '{}.{}'.format(outputFilename, 'fbk')
        IOUtil.WriteBinaryFileIfChanged(finalOutputFilename, content)
コード例 #5
0
    def __WriteContent(self, dstBuffer: List[int], bitmapFont: BitmapFont) -> None:
        FormatPluginFontBasicKerningUtil.AddString(dstBuffer, bitmapFont.Name)
        FormatPluginFontBasicKerningUtil.AddEncodedUInt16(dstBuffer, bitmapFont.Size)
        FormatPluginFontBasicKerningUtil.AddEncodedUInt16(dstBuffer, bitmapFont.LineSpacingPx)
        FormatPluginFontBasicKerningUtil.AddEncodedUInt16(dstBuffer, bitmapFont.BaseLinePx)
        FormatPluginFontBasicKerningUtil.AddString(dstBuffer, bitmapFont.TextureName)
        FormatPluginFontBasicKerningUtil.AddEncodedBitmapFontType(dstBuffer, bitmapFont.FontType)

        self.__AddChars(dstBuffer, bitmapFont.Chars)
        self.__AddKernings(dstBuffer, bitmapFont.Kernings)
コード例 #6
0
 def __WriteHeader(self, dstBuffer: List[int]) -> int:
     FormatPluginFontBasicKerningUtil.AddUInt32(dstBuffer, 0x004E4246)
     FormatPluginFontBasicKerningUtil.AddUInt32(dstBuffer, 1)
     offset = len(dstBuffer)
     FormatPluginFontBasicKerningUtil.AddUInt32(dstBuffer, 0)
     return offset
コード例 #7
0
 def __AddKerning(self, dstBuffer: List[int], bitmapFontKerning: BitmapFontKerning) -> None:
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, bitmapFontKerning.First)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dstBuffer, bitmapFontKerning.Second)
     FormatPluginFontBasicKerningUtil.AddEncodedInt32(dstBuffer, bitmapFontKerning.AmountPx)
コード例 #8
0
 def __WriteRange(self, dst: List[int], range: BasicFontGlyphRange) -> None:
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, range.From)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, range.Length)
コード例 #9
0
 def __WriteRanges(self, dst: List[int], ranges: List[BasicFontGlyphRange]) -> None:
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, len(ranges))
     for range in ranges:
         self.__WriteRange(dst, range)
コード例 #10
0
 def __WriteGlyphKerning(self, dst: List[int], kerning: BasicFontGlyphKerning) -> None:
     FormatPluginFontBasicKerningUtil.AddEncodedInt32(dst, kerning.OffsetX)
     FormatPluginFontBasicKerningUtil.AddEncodedInt32(dst, kerning.OffsetY)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, kerning.LayoutWidth)
コード例 #11
0
 def __WriteRangeGlyphKernings(self, dst: List[int], kernings: List[BasicFontGlyphKerning]) -> None:
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, len(kernings))
     for kerning in kernings:
         self.__WriteGlyphKerning(dst, kerning)
コード例 #12
0
 def __WriteDescription(self, dst: List[int], basicFont: BasicFont) -> None:
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, basicFont.Header.LineSpacing)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, basicFont.Header.BaseLine)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, basicFont.Header.MaxGlyphLeadingOverdrawArea.X)
     FormatPluginFontBasicKerningUtil.AddEncodedUInt32(dst, basicFont.Header.MaxGlyphLeadingOverdrawArea.Y)