home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / gnu / os-include / diskfont / diskfonttag.h < prev    next >
C/C++ Source or Header  |  1993-10-15  |  13KB  |  293 lines

  1. #ifndef  DISKFONT_DISKFONTTAG_H
  2. #define  DISKFONT_DISKFONTTAG_H
  3. /*
  4. **    $VER: diskfonttag.h 10.4 (14.7.92)
  5. **    Includes Release 40.15
  6. **
  7. **    diskfonttag.h -- tag definitions for .otag files
  8. **
  9. **    (C) Copyright 1990-1992 Robert R. Burns
  10. **        All Rights Reserved
  11. */
  12. #ifndef    EXEC_TYPES_H
  13. #include    "exec/types.h"
  14. #endif
  15.  
  16. #ifndef    UTILITY_TAGITEM_H
  17. #include    "utility/tagitem.h"
  18. #endif
  19.  
  20. /* Level 0 entries never appear in the .otag tag list, but appear in font
  21.  * specifications */
  22. #define  OT_Level0    TAG_USER
  23. /* Level 1 entries are required to exist in the .otag tag list */
  24. #define  OT_Level1    (TAG_USER | 0x1000)
  25. /* Level 2 entries are optional typeface metric tags */
  26. #define  OT_Level2    (TAG_USER | 0x2000)
  27. /* Level 3 entries are required for some OT_Engines */
  28. #define  OT_Level3    (TAG_USER | 0x3000)
  29. /* Indirect entries are at (tag address + data offset) */
  30. #define  OT_Indirect    0x8000
  31.  
  32.  
  33. /********************************************************************/
  34. /* font specification and inquiry tags */
  35.  
  36. /* !  tags flagged with an exclaimation mark are valid for
  37.  *    specification.
  38.  *  ? tags flagged with a question mark are valid for inquiry
  39.  *
  40.  * fixed binary numbers are encoded as 16 bits of integer and
  41.  * 16 bits of fraction.  Negative values are indicated by twos
  42.  * complement of all 32 bits.
  43.  */
  44.  
  45. /* !  OT_DeviceDPI specifies the target device dots per inch -- X DPI is
  46.  *    in the high word, Y DPI in the low word. */
  47. #define  OT_DeviceDPI    (OT_Level0 | 0x01)    /* == TA_DeviceDPI */
  48.  
  49. /* !  OT_DotSize specifies the target device dot size as a percent of
  50.  *    it's resolution-implied size -- X percent in high word, Y percent
  51.  *    in low word. */
  52. #define  OT_DotSize    (OT_Level0 | 0x02)
  53.  
  54. /* !  OT_PointHeight specifies the requested point height of a typeface,
  55.  *    specifically, the height and nominal width of the em-square.
  56.  *    The point referred to here is 1/72".  It is encoded as a fixed
  57.  *    binary number. */
  58. #define  OT_PointHeight    (OT_Level0 | 0x08)
  59.  
  60. /* !  OT_SetFactor specifies the requested set width of a typeface.
  61.  *    It distorts the width of the em-square from that specified by
  62.  *    OT_PointHeight.  To compensate for a device with different
  63.  *    horizontal and vertical resolutions, OT_DeviceDPI should be used
  64.  *    instead.    For a normal aspect ratio, set to 1.0 (encoded as
  65.  *    0x00010000).  This is the default value. */
  66. #define  OT_SetFactor    (OT_Level0 | 0x09)
  67.  
  68. /* !  OT_Shear... specifies the Sine and Cosine of the vertical stroke
  69.  *    angle, as two fixed point binary fractions.  Both must be specified:
  70.  *    first the Sine and then the Cosine.  Setting the sine component
  71.  *    changes the Shear to an undefined value, setting the cosine
  72.  *    component completes the Shear change to the new composite value.
  73.  *    For no shear, set to 0.0, 1.0 (encoded as 0x00000000, 0x00010000).
  74.  *    This is the default value. */
  75. #define  OT_ShearSin    (OT_Level0 | 0x0a)
  76. #define  OT_ShearCos    (OT_Level0 | 0x0b)
  77.  
  78. /* !  OT_Rotate... specifies the Sine and Cosine of the baselin rotation
  79.  *    angle, as two fixed point binary fractions.  Both must be specified:
  80.  *    first the Sine and then the Cosine.  Setting the sine component
  81.  *    changes the Shear to an undefined value, setting the cosine
  82.  *    component completes the Shear change to the new composite value.
  83.  *    For no shear, set to 0.0, 1.0 (encoded as 0x00000000, 0x00010000).
  84.  *    This is the default value. */
  85. #define  OT_RotateSin    (OT_Level0 | 0x0c)
  86. #define  OT_RotateCos    (OT_Level0 | 0x0d)
  87.  
  88. /* !  OT_Embolden... specifies values to algorithimically embolden -- or,
  89.  *    when negative, lighten -- the glyph.  It is encoded as a fixed point
  90.  *    binary fraction of the em-square.  The X and Y components can be
  91.  *    changed indendently.  For normal characters, set to 0.0, 0.0
  92.  *    (encoded as 0x00000000, 0x00000000).  This is the default value. */
  93. #define  OT_EmboldenX    (OT_Level0 | 0x0e)
  94. #define  OT_EmboldenY    (OT_Level0 | 0x0f)
  95.  
  96. /* !  OT_PointSize is an old method of specifying the point size,
  97.  *    encoded as (points * 16). */
  98. #define  OT_PointSize    (OT_Level0 | 0x10)
  99.  
  100. /* !  OT_GlyphCode specifies the glyph (character) code to use with
  101.  *    subsequent operations.  For example, this is the code for an
  102.  *    OT_Glyph inquiry */
  103. #define  OT_GlyphCode    (OT_Level0 | 0x11)
  104.  
  105. /* !  OT_GlyphCode2 specifies the second glyph code.  For example,
  106.  *    this is the right glyph of the two glyphs of an OT_KernPair
  107.  *    inquiry */
  108. #define  OT_GlyphCode2    (OT_Level0 | 0x12)
  109.  
  110. /* !  OT_GlyphWidth specifies a specific width for a glyph.
  111.  *    It sets a specific escapement (advance) width for subsequent
  112.  *    glyphs.  It is encoded as a fixed binary fraction of the em-square.
  113.  *    To revert to using the font-defined escapement for each glyph, set
  114.  *    to 0.0 (encoded as 0x00000000).  This is the default value. */
  115. #define  OT_GlyphWidth    (OT_Level0 | 0x13)
  116.  
  117. /* !  OT_OTagPath and
  118.  * !  OT_OTagList specify the selected typeface.  Both must be specified:
  119.  *    first the Path and then the List.  Setting the path name changes
  120.  *    changes the typeface to an undefined value, providing the List
  121.  *    completes the typeface selection to the new typeface.  OTagPath
  122.  *    is the null terminated full file path of the .otag file associated
  123.  *    with the typeface.  OTagList is a memory copy of the processed
  124.  *    contents of that .otag file (i.e. with indirections resolved).
  125.  *    There are no default values for the typeface. */
  126. #define  OT_OTagPath    (OT_Level0 | OT_Indirect | 0x14)
  127. #define  OT_OTagList    (OT_Level0 | OT_Indirect | 0x15)
  128.  
  129. /*  ? OT_GlyphMap supplies a read-only struct GlyphMap pointer that
  130.  *    describes a bitmap for a glyph with the current attributes. */
  131. #define  OT_GlyphMap    (OT_Level0 | OT_Indirect | 0x20)
  132.  
  133. /*  ? OT_WidthList supplies a read-only struct MinList of struct
  134.  *    GlyphWidthEntry nodes for glyphs that are defined from GlyphCode
  135.  *    to GlyphCode2, inclusive.  The widths are represented as fixed
  136.  *    binary fractions of the em-square, ignoring any effect of
  137.  *    SetFactor or GlyphWidth.    A width would need to be converted to
  138.  *    a distance along the baseline in device units by the
  139.  *    application. */
  140. #define  OT_WidthList    (OT_Level0 | OT_Indirect | 0x21)
  141.  
  142. /*  ? OT_...KernPair supplies the kern adjustment to be added to the
  143.  *    current position after placement of the GlyphCode glyph and
  144.  *    before placement of the GlyphCode2 glyph.  Text kern pairs are
  145.  *    for rendering body text.    Display kern pairs are generally
  146.  *    tighter values for display (e.g. headline) purposes.  The
  147.  *    adjustment is represented as a fixed binary fraction of the
  148.  *    em-square, ignoring any effect of SetFactor.  This number would
  149.  *    need to be converted to a distance along the baseline in device
  150.  *    units by the application. */
  151. #define  OT_TextKernPair (OT_Level0 | OT_Indirect | 0x22)
  152. #define  OT_DesignKernPair (OT_Level0 | OT_Indirect | 0x23)
  153.  
  154. /*  ? OT_Underlined is an unsigned word which is used to request
  155.  *    algorithimic underlining for the engine when rendering the glyph.
  156.  *    Bullet.library currently does not support this tag, though it
  157.  *    may be used by other engines in the future.  The default for
  158.  *    any engine which supports this tag must be OTUL_None.  Engines which
  159.  *    do not support this tag should return an appropriate OTERR value.
  160.  *
  161.  *    As of V39, diskfont.library will request underlining if specified
  162.  *    in the TextAttr, or TTextAttr passed to OpenDiskFont().  Diskfont
  163.  *    will first request Broken underlining (like the Text() function
  164.  *    does when SetSoftStyle() is used), and then Solid underlining if
  165.  *    the engine returns an error.  If the engine returns an error for
  166.  *    both, then diskfont.library attempts to find, or create the best
  167.  *    non-underlined font that it can. */
  168. #define  OT_UnderLined        (OT_Level0 | 0x24)
  169.  
  170. #define  OTUL_None        0
  171. #define  OTUL_Solid        1
  172. #define  OTUL_Broken        2
  173. #define  OTUL_DoubleSolid    3
  174. #define  OUTL_DoubleBroken    4
  175.  
  176. /*  ? OT_StrikeThrough is a boolean which is used to request
  177.  *    algorithimic strike through when rendering the glyph.
  178.  *    Bullet.library currently does not support this tag, though it
  179.  *    may be used by other engines in the f