/usr/share/doc/xgridfit/html/variables.html is in xgridfit-doc 2.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Xgridfit</title>
<link rel="stylesheet" href="oeg.css" media="screen" type="text/css" />
<link rel="stylesheet" href="parchment.css" media="screen"
          type="text/css" title="parchment" />
<link rel="alternate stylesheet" href="legible.css" media="screen"
          type="text/css" title="legible" />
<style type="text/css" media="print"> @import "oeg.print.css"; </style>
<meta name="AUTHOR" content="Peter S. Baker" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div id="jumplist">
      <a href="http://sourceforge.net"><img src="" width="125" height="37" border="0" alt="SourceForge.net Logo" /></a>
      <a href="http://xgridfit.sourceforge.net/">Home Page</a>
      <a href="http://sourceforge.net/projects/xgridfit">Project Page</a>
      <a href="http://sourceforge.net/project/showfiles.php?group_id=159705">Download</a>
      <a href="http://xgridfit.cvs.sourceforge.net/xgridfit/xgridfit/">CVS repository</a>
<hr/>
      <a href="#local">Local Variables</a>
      <a href="#global">Global Variables</a>
      <a href="#graphics">Graphics Variables</a>
      <a href="#reserving">Reserving Variable Space</a>
</div>
<div id="content">
          <h1>Variables</h1>
          <p>
                    In TrueType programming, most of the work you'd normally
                    expect variables to do is handled by control values, which
                    are great for storing and manipulating
                    the fixed-point numbers that measure distance on the raster
                    grid. If you need storage for some other kind of number, or
                    temporary storage for a fixed-point number, you may wish to
                    use an Xgridfit variable.
          </p>
          <p>
                    Variables are Xgridfit's way of providing access to the
                    TrueType "Storage Area," which stores 32-bit numbers and no
                    other data types (such as strings). Any of the <a
                              href="types.html">number types</a> known to
                    TrueType can be stored there; but TrueType provides no way
                    to store type information with these numbers, or to check
                    types. Think of variables as handy places to store numbers
                    temporarily, but don't expect the sorts of conveniences
                    provided by the variables of general-purpose programming
                    languages such as Java and Python.
          </p>
          <p>
                    All Xgridfit variables must be declared before they are
                    used. You must assign a value to a variable before you can
                    read it. In addition, you must initialize the storage area
                    for your font by estimating the number of variables that are
                    likely to be in use at any one time.
          </p>
          <p>
                    It is a simple matter to write to a variable. You can
                    reference the variable by name in the <tt>target</tt>
                    attribute of the <set-equal> element, or you can
                    reference it in the <tt>result-to</tt> attribute of any of
                    the elements that have it, including <round>,
                    <measure-distance> and <get-coordinate>. When
                    you call a function that returns a value, you may store the
                    return value in a variable via the <tt>result-to</tt>
                    attribute of the <call-function> element.
          </p>
          <p>
                    Once a variable has been written to, you can access the
                    value by referencing the variable by name in almost any
                    attribute that accepts a number value--for example, the
                    <tt>num</tt> attribute of the <point> element. A
                    variable can also be used anywhere in an <a
                              href="expression.html">expression</a>.
          </p>
          <h2 id="local">Local Variables</h2>
          <p>
                    Local variables are those which are visible only within the
                    <pre-program>, glyph program, or function where they
                    are declared. Local variables are temporary: a variable
                    declared within a glyph program exists only while the glyph
                    program is running, and afterwards the storage location it
                    occupied is freed for other uses. The same is true of
                    variables declared within functions and the
                    <pre-program>.
          </p>
          <p>
                    Local variables must be declared in
                    <variable> elements at the top of the
                    <pre-program>, after the <param>
                    elements element in a function, or with the
                    <constant>, <range>, <set> and
                    <line> elements at the beginning of a glyph
                    program. You cannot declare variables within
                    smaller scopes (such as if-blocks and
                    with-blocks). The variable declarations for the
                    asterisk in Junicode-Bold look like this:
          </p>
<pre>
  <variable name="up-x"/>
  <variable name="up-y"/>
  <variable name="down-x"/>
  <variable name="down-y"/>
  <variable name="half-min"/>
</pre>
          <p>
	    The TrueType engine stores no type information at all: The
	    declaration merely signals to the engine how many spaces
	    will be required in the Storage Area and associates names
	    with spaces. It is possible to initialize a variable by
	    including a <tt>value</tt> attribute in the declaration:
          </p>
<pre>
  <variable name="v" value="50"/>
</pre>
          <h2 id="global">Global Variables</h2>
          <p>
	    A global variable is one that is visible anywhere that
	    programming is allowed: in the <pre-program> and in
	    any function or glyph program. It must be declared in top
	    level of he program, as a child of <xgridfit>:
          </p>
<pre>
  <variable name="global-var"/>
</pre>
          <p>
	    A global variable should be initialized in the
	    <pre-program>, and after that its value may be read
	    by glyph programs and functions. It cannot be initialized
	    with a <tt>value</tt> attribute. If a glyph program or
	    function alters a global variable, or if you attempt to
	    use a global variable to make one glyph program
	    communicate with another, you are in <i>terra
	    incognita</i>: the specifications are not informative
	    about the way variables are handled in such situations. It
	    seems a poor idea, in any case, to try to make glyph
	    programs communicate with each other, since it is
	    impossible to predict the order in which they will be run.
          </p>
          <h2 id="graphics">Graphics Variables</h2>
          <p>
                    Several pre-declared variables can be used to query the
                    graphics state or (usually) to set a graphics variable.
                    These are detailed in the section of this documentation
                    on the <a href="graphics.html">Graphics State</a>.
          </p>
          <h2 id="reserving">Reserving Variable Space</h2>
          <p>
	    Xgridfit reserves twenty-four spaces in the Storage Area
	    for its own purposes. By default it reserves forty more
	    spaces for variables. You may change this number with a
	    <default> element:
          </p>
<pre>
  <default type="max-storage" value = "80"/>
</pre>
          <p>
                    In figuring the number of spaces you need to reserve, start
                    with the 24 that Xgridfit requires, then add the number of
                    global variables, the largest number of variables declared
                    in any one glyph program, and the largest number of
                    variables declared in any one function. If one function with
                    variables calls another function with variables, you will
                    have to increase the number accordingly.
          </p>
          
</div>
</body>
</html>
 |