Glyph Designer Binary Export Format


  • As well as outputting the data as a text based file, there is also a binary based file format.

    Header

    The first three bytes of the header are the file identifier and are always set to 66, 77, 70 (BMF). The fourth byte is the version which is currently 3.

    After the header are a number of blocks based on the tags described above.

    Block type 1: info

    Field Size Type Pos Comment
    fontsize 2 int 0
    bitField 1 bits 2 bit 0:smooth bit 1:unicode bit 2:italic bit 3:bold bit 4:fixedHeight bits 5-7:reservered
    charSet 1 uint 3
    stretchH 2 uint 4
    aa 1 uint 6
    paddingUp 2 uint 7
    paddingRight 1 uint 8
    paddingDown 1 uint 9
    paddingLeft 1 uint 10
    spacingHoriz 1 uint 11
    spacingVert 1 uint 12
    outline 1 uint 13
    fontName n+1 string 14 null terminated string with length n

    Block type 2: common

    Field Size Type Pos Comment
    lineHeight 2 uint 0
    base 2 uint 2
    scaleW 2 uint 4
    scaleH 2 uint 6
    pages 2 uint 8
    bitField 1 bits 10 bits 0-6:reserved, bit 7:packed

    Block type 3: pages

    Field Size Type Pos Comment
    pageNames p*(n+1) strings 0 null terminated strings, each with length n

    Block type 4: chars

    Field Size Type Pos Comment
    id 4 uint 0+c*20 these fields are repeated until all characters have been described
    x 2 uint 4+c*20
    y 2 uint 6+c*20
    width 2 uint 8+c*20
    height 2 uint 10+c*20
    xoffset 2 uint 12+c*20
    yoffset 2 uint 14+c*20
    xadvance 2 uint 16+c*20
    page 1 uint 18+c*20
    chnl 1 uint 19+c*20

    The number of characters in the file can be calculated by taking the size of the block and dividing it with the size of the charInfo structure, i.e. numChars = charsBlock.blockSize/20


  • 1
    Posts
    507
    Views
    Log in to reply

Internal error.

Oops! Looks like something went wrong!