This file is indexed.

/usr/share/doc/libfreetype6/design/design-2.html is in libfreetype6-dev 2.8.1-2ubuntu2.

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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">

<head>
  <meta http-equiv="Content-Type"
        content="text/html; charset=utf-8">
  <meta http-equiv="Content-Style-Type"
        content="text/css">
  <meta http-equiv="Content-Script-Type"
        content="text/javascript">
  <meta name="description"
        content="FreeType Documentation">
  <meta name="Author"
        content="David Turner">

  <link rel="icon"
        href="../image/favicon_-90.ico">
  <link rel="shortcut icon"
        href="../image/favicon_-90.ico">
  <link rel="stylesheet"
        type="text/css"
        href="../css/freetype2_-90.css">

  <script type="text/javascript"
          src="../../../js/jquery-1.11.0.min.js">
  </script>
  <script type="text/javascript"
          src="../../../js/jquery.ba-resize.min.js">
  </script>
  <script type="text/javascript"
          src="../../../js/freetype2.js">
  </script>

  <title>FreeType Design / I</title>
</head>


<body>

<div id="top"
     class="bar">
  <h1><a href="http://freetype.org/index.html">FreeType</a>
    Design&nbsp;/&nbsp;I</h1>
</div>


<div id="wrapper">

<div class="colmask leftmenu">
  <div class="colright">
    <div class="col1wrap">
      <div class="col1">


        <!-- ************************************************** -->

        <div id="components-and-apis">
          <h2>I. Components and APIs</h2>

          <p>It is better to describe FreeType&nbsp;2 as a collection
            of <em>components</em>.  Each one of them is a more or
            less abstract part of the library that is in charge of one
            specific task.  We will now explain the connections and
            relationships between them.</p>

          <p>A first brief description of this system of components
            could be as follows.</p>

          <ul>
            <li>
              <p>Client applications typically call the
                FreeType&nbsp;2 <b>high-level API</b>, whose functions
                are implemented in a single component called
                the <em>Base Layer</em>.</p>
            </li>
            <li>
              <p>Depending on the context or the task, the base layer
                then calls one or more <em>module</em> components to
                perform the work.  In most cases, the client
                application doesn't need to know which module was
                called.</p>
            </li>
            <li>
              <p>The base layer also contains a set of routines that
                are used for generic things like memory allocation,
                list processing, I/O stream parsing, fixed-point
                computation, etc.  These functions can also be called
                by a module at any time, and they form what is called
                the <b>low-level base API</b>.</p>
            </li>
          </ul>

          <p>This is illustrated by the following graphics (note that
            component entry points are represented as colored
            triangles).</p>

          <center>
            <img src="basic-design.png"
                 width="394"
                 height="313"
                 alt="Basic FreeType design">
          </center>

          <p>A few additional things must be added to complete this
            picture.</p>

          <ul>
            <li>
              <p>Some parts of the base layer can be replaced for
                specific builds of the library, and can thus be
                considered as components themselves.  This is the case
                for the <tt>ftsystem</tt> component, which is in
                charge of implementing memory management and input
                stream access, as well as <tt>ftinit</tt>, which is in
                charge of library initialization (i.e., implementing
                the <a href="../reference/ft2-base_interface.html#FT_Init_FreeType"><code>FT_Init_FreeType</code></a>
                function).</p>
            </li>
            <li>
              <p>FreeType&nbsp;2 comes also with a set of <em>optional
                  components</em>, which can be used either as a
                  convenience layer for client applications (e.g.,
                  the <tt>ftglyph</tt> component, used to provide a
                  simple API to manage glyph images independently of
                  their internal representation), or to access
                  format-specific features (e.g., the
                <tt>ftmm</tt> component used to access and manage
                Multiple Masters and OpenType variations fonts).</p>
            </li>
            <li>
              <p>A module is capable of calling functions provided by
                another module.  This is very useful to share code and
                tables between several font driver modules (for
                example, the <tt>truetype</tt> and <tt>cff</tt>
                modules both use the routines provided by
                the <tt>sfnt</tt> module).</p>
            </li>
            <li>
              <p>Finally, FreeType provides <em>services</em>, which
                are a more light-weight way to access certain features
                across multiple modules, or to access some
                functionality provided by a single module.</p>

              <p>Services are internal to FreeType; similar to
                modules, it is necessary to &lsquo;load&rsquo; a
                service, which can fail if the service's module is not
                available.</p>

              <p>An example for a service provided by a single module
                is &lsquo;winfonts&rsquo; (see
                file <tt>svwinfnt.h</tt>), which allows access to the
                header of Windows bitmap fonts.  An example for a
                service provided by multiple modules is
                &lsquo;multi-masters&rsquo; (see file <tt>svmm.h</tt>)
                to manage the abovementioned <tt>ftmm</tt> component
                across the <tt>truetype</tt>, <tt>type1</tt>,
                and <tt>cff</tt> modules.</p>
            </li>
          </ul>

          <p>The following graphics shows the additional components
            (without services).</p>

          <center>
            <img src="detailed-design.png"
                 width="390"
                 height="429"
                 alt="Detailed FreeType design">
          </center>

          <p>Please take note of the following important points.</p>

          <ul>
            <li>
              <p>An optional component can use either the high-level
                or base API.  This is the case of <tt>ftglyph</tt> in
                the above picture.</p>
            </li>
            <li>
              <p>Some optional components can use module-specific
                interfaces or services ignored by the base layer.  In
                the above example, <tt>ftmm</tt> directly accesses the
                Type&nbsp;1 and TrueType modules to set and query
                data.</p>
            </li>
            <li>
              <p>A replaceable component can provide a function of the
                high-level API.  For example, <tt>ftinit</tt> provides
                <tt>FT_Init_FreeType</tt> to client applications.</p>
            </li>
          </ul>
        </div>

         <!-- ************************************************** -->

        <div class="updated">
          <p>Last update: 13-May-2017</p>
        </div>
      </div>
    </div>


    <!-- ************************************************** -->

    <div class="col2">
    </div>
  </div>
</div>


<!-- ************************************************** -->

<div id="TOC">
  <ul>
    <li class="funding">
      <p><a href="https://pledgie.com/campaigns/24434">
        <img alt="Click here to lend your support to the FreeType project and make a donation at pledgie.com!"
             src="https://pledgie.com/campaigns/24434.png?skin_name=chrome"
             border="0"
             align="middle">
      </a></p>

      <p><a href="https://flattr.com/submit/auto?fid=mq2xxp&amp;url=https%3A%2F%2Fwww.freetype.org"
         target="_blank">
        <img class="with-border"
             src="https://button.flattr.com/flattr-badge-large.png"
             alt="Flattr this"
             title="Flattr this"
             border="0"
             align="middle">
      </a></p>
    </li>
    <li class="primary">
      <a href="http://freetype.org/index.html">Home</a>
    </li>
    <li class="primary">
      <a href="http://freetype.org/index.html#news">News</a>
    </li>
    <li class="primary">
      <a href="../index.html">Overview</a>
    </li>
    <li class="primary">
      <a href="../documentation.html">Documentation</a>
    </li>
    <li class="primary">
      <a href="http://freetype.org/developer.html">Development</a>
    </li>
    <li class="primary">
      <a href="http://freetype.org/contact.html"
         class="emphasis">Contact</a>
    </li>

    <li>
      &nbsp; <!-- separate primary from secondary entries -->
    </li>

    <li class="secondary">
      <a href="index.html">FreeType Design</a>
    </li>
    <li class="tertiary">
      <a href="design-1.html">Introduction</a>
    </li>
    <li class="tertiary">
      <a href="design-2.html" class="current">Components and APIs</a>
    </li>
    <li class="tertiary">
      <a href="design-3.html">Public Objects and Classes</a>
    </li>
    <li class="tertiary">
      <a href="design-4.html">Internal Objects and Classes</a>
    </li>
    <li class="tertiary">
      <a href="design-5.html">Module Classes</a>
    </li>
    <li class="tertiary">
      <a href="design-6.html">Interfaces and Services</a>
    </li>
  </ul>
</div>

</div> <!-- id="wrapper" -->

<div id="TOC-bottom">
</div>

</body>
</html>