404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.137.143.141: ~ $
<!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>

Filemanager

Name Type Size Permission Actions
basic-design.png File 1.82 KB 0644
design-1.html File 7.35 KB 0644
design-2.html File 9.66 KB 0644
design-3.html File 16.94 KB 0644
design-4.html File 15.4 KB 0644
design-5.html File 18.71 KB 0644
design-6.html File 11.93 KB 0644
detailed-design.png File 2.23 KB 0644
index.html File 6.5 KB 0644
library-model.png File 1.64 KB 0644
simple-model.png File 1.58 KB 0644