Documentation / MathType

  • Demos
  • Visit our website
  • Downloads
  • Contact us
  • MathType

    • Wiris Quizzes

      • Learning Lemur

        • CalcMe

          • MathPlayer

            • Store FAQ

              • VPAT for the electronic documentation

                • MathFlow

                  • BF FAQ

                    • Home
                    • MathType
                    • MathType Office Tools
                    • MathType 7 for Windows and Mac
                    • MathType SDK
                    • MathType SDK

                    Application-specific metafile comment convention

                    Reading time: 2min

                    Abstract

                    This document describes a general convention for embedding of data of arbitrary size in a Windows Metafile (WMF).

                    Introduction

                    The Windows Metafile format is Microsoft Windows' native graphics metafile (picture) format and is used in WMF files, on the clipboard, and in OLE objects. Data is embedded in WMF data using the MFCOMMENT escape function. Individual comments are restricted to 32Kb or less.

                    The convention described here allows for breaking the embedded data into multiple comments (or chunks), in order to support embedding data larger than 32Kb limit.

                    This format is used by MathType (starting with MathType 6.0b for Windows) for its MTEF and MathML embedded in WMFs.

                    The AppsMFCC commenting convention

                    An embedded comment may consist of one or more chunks. Each chunk consists of a header followed by the data for the chunk:

                    // Format of AppsMFCC Comment format:
                    #pragma pack(push,1)
                    typedef struct {
                     Char id[8] // Must be "AppsMFCC"
                     Word version // Must be 1
                     DWord totalLen; // Total of data bytes in all comments
                     DWord dataLen; // # of data bytes in this comment (see 'data' below)
                     Char signature[1] // Variable length, null terminated string (see below for full details)
                     // dataLen bytes of data follows (aka the chunk data)
                    }
                     AppsMFCCHeader;
                    #pragma pack(pop)
                    //--------------------------------------------------------------------------------------------------
                    // The total size of the chunk (header and data) must be <= Max comment size.
                    // Max Comment Size (max number bytes allowed in an AppsMFCC comment) ...
                    // for file types that support only a 16-bit comment size (e.g. WMF)
                    #define MAX_APPSMFCC_16_CMT_LEN 0x00007FFE
                    // for file types that support a 32-bit comment size (e.g. EMF)
                    #define MAX_APPSMFCC_32_CMT_LEN 0x7FFFFFFE
                    //--------------------------------------------------------------------------------------------------
                    // Format of signature:
                    // A signature is a variable length, null terminated string of the form:
                    // "<Organization>/<App specific data name>[/<str>]"
                    //
                    // Where:
                    // <Organization> = the name of the organization/company owning the data (e.g. "Wiris")
                    // <App specific data> = the type of (possibly application specific) data this chunk contains
                    // (e.g. "MTEF" or "MathML")
                    // <str> = optional string (i.e. defined by the owner for their own purposes)
                    // None of these elements may contain "/" or "\" unless preceded by "\

                    Rules and Assumptions

                    1. When totalLen == dataLen, the comment is self contained (i.e. all data is in current comment).
                    2. When totalLen > dataLen, more data must be read from subsequent AppsMFCC comments with the same <version#>/<Organization>/<App specific data name> until the entire data block is accumulated.
                    3. When data is stored in multiple AppsMFCC comments the comments will be in order with no intervening AppsMFCC comments.
                    4. When data is stored in multiple AppsMFCC comments the actual amount of data stored in each comment is at the discretion of the writing app (subject to the max restriction above).

                    Was this article helpful?

                    Yes
                    No
                    Give feedback about this article

                    Related Articles

                    • Using MathType with other applications and websites
                    • General techniques for using MathType with other applications and websites
                    • Using MathType with MathJax-enabled applications and websites

                    Application-specific metafile comment convention

                    Abstract Introduction The AppsMFCC commenting convention Rules and Assumptions

                    Making people’s STEM work more meaningful

                    MathType

                    • MathType for Office Tools
                    • MathType for Mac
                    • MathType for Microsoft 365
                    • MathType for Google Workspace
                    • MathType for LMS
                    • MathType for XML Editors
                    • Arabic notation
                    • Our products accessibility
                    • MathType is online

                    WirisQuizzes

                    Learning Lemur

                    Solutions for Education

                    • Blackboard Learn
                    • Brightspace by D2L
                    • Canvas
                    • Google Classroom
                    • Moodle
                    • Schoology

                    Solutions for Publishing Houses

                    Solutions for Technical Writers

                    Solutions for Chemistry

                    Integrations

                    • HTML Editors
                    • MathType in WordPress

                    Pricing

                    Company

                    Careers

                    Blog

                    Contact Us

                    Buy Now

                    Plugin Downloads

                    © Wiris 2025

                    • Cookie Preferences
                    • Cookie Policy
                    • Terms of Use
                    • Privacy Policy / GDPR
                    • Student Data Privacy
                    • Compliance
                    • Powered by Helpjuice
                    Expand