freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Git][freetype/freetype][gsoc-anurag-docs-2023] 6 commits: [docs] Migrat


From: Anurag Thakur (@AdbhutDev)
Subject: [Git][freetype/freetype][gsoc-anurag-docs-2023] 6 commits: [docs] Migrate docs/INSTALL to Markdown
Date: Tue, 01 Aug 2023 14:51:54 +0000

Anurag Thakur pushed to branch gsoc-anurag-docs-2023 at FreeType / FreeType

Commits:

  • c0ceb054
    by Anurag Thakur at 2023-08-01T20:20:22+05:30
    [docs] Migrate docs/INSTALL to Markdown
    
  • a0c8d795
    by Anurag Thakur at 2023-08-01T20:20:27+05:30
    [docs] Migrate all INSTALL files to Markdown
    
  • 2534761e
    by Anurag Thakur at 2023-08-01T20:20:27+05:30
    [docs] Add documentation on adding new modules to FreeType
    
  • 760d6921
    by Anurag Thakur at 2023-08-01T20:20:27+05:30
    [docs] Add documentation on compiling FreeType on an Android Device
    
  • 981bf755
    by Anurag Thakur at 2023-08-01T20:20:27+05:30
    [docs] Add documentation on FreeType development, benchmarking
    
  • 5c2e0117
    by Anurag Thakur at 2023-08-01T20:20:27+05:30
    [docs] Add documentation on FreeType smooth raster algorithm
    

17 changed files:

Changes:

  • README.md
    ... ... @@ -153,7 +153,7 @@ and accept it fully.
    153 153
     [Releases]: https://download.savannah.gnu.org/releases/freetype/
    
    154 154
     [API]: https://freetype.org/freetype2/docs/reference/index.html
    
    155 155
     
    
    156
    -[INSTALL]: ./docs/INSTALL
    
    156
    +[INSTALL]: ./docs/INSTALL.md
    
    157 157
     [CHANGES]: ./docs/CHANGES
    
    158 158
     [LICENSE]: ./LICENSE.TXT
    
    159 159
     [DOCGUIDE]: ./docs/DOCGUIDE
    

  • docs/.gitignore
    ... ... @@ -5,6 +5,18 @@ reference/
    5 5
     *.html
    
    6 6
     *.md
    
    7 7
     
    
    8
    +!INSTALL.md
    
    9
    +!INSTALL_ANY.md
    
    10
    +!INSTALL_CROSS.md
    
    11
    +!INSTALL_GNU.md
    
    12
    +!INSTALL_MAC.md
    
    13
    +!INSTALL_UNIX.md
    
    14
    +!INSTALL_VMS.md
    
    15
    +!INSTALL_ANDROID.md
    
    16
    +!MODIFYING.md
    
    17
    +!DEVELOPING.md
    
    18
    +!Raster_Algorithm.md
    
    19
    +
    
    8 20
     # MkDocs Config file
    
    9 21
     mkdocs.yml
    
    10 22
     
    

  • docs/DEVELOPING.md
    1
    +TODO: Add details on setting up a development environment, benchmarking and debugging freetype on various platforms

  • docs/INSTALL deleted
    1
    -
    
    2
    -There are  several ways  to build the  FreeType library,  depending on
    
    3
    -your system and the level of  customization you need.  Here is a short
    
    4
    -overview of the documentation available:
    
    5
    -
    
    6
    -
    
    7
    -I. Prerequisites and dependencies
    
    8
    -=================================
    
    9
    -
    
    10
    -  FreeType is a low level C library  that only depends on the standard
    
    11
    -  C library with very few platform-dependent optimizations utilized at
    
    12
    -  build time.  Any  C99-compliant compiler  should be able  to compile
    
    13
    -  FreeType.  System libraries,  such as  zlib,  Gzip,  bzip2,  Brotli,
    
    14
    -  and libpng,  might  be  used  to handle  compressed fonts  or decode
    
    15
    -  embedded PNG glyphs.
    
    16
    -
    
    17
    -  FreeType  auto-configuration scripts  should be  able to detect  the
    
    18
    -  prerequisites if the necessary headers are available  at the default
    
    19
    -  locations.  Otherwise,  modify  `include/freetype/config/ftoption.h`
    
    20
    -  to control how the FreeType library gets built.  Normally, you don't
    
    21
    -  need to change anything.
    
    22
    -
    
    23
    -  Applications have very limited control over FreeType's behaviour  at
    
    24
    -  run-time;  look at the documentation of function `FT_Property_Set`.
    
    25
    -
    
    26
    -
    
    27
    -II. Normal installation and upgrades
    
    28
    -====================================
    
    29
    -
    
    30
    -  1. Unix and Unix-like systems
    
    31
    -
    
    32
    -    This also includes MacOS, Cygwin, MinGW + MSYS, Mingw-w64 + MSYS2,
    
    33
    -    and possibly other, similar environments.
    
    34
    -
    
    35
    -    Please read `INSTALL.UNIX` to install or upgrade FreeType  2 on  a
    
    36
    -    Unix system.   Note  that  you  *need*  GNU  Make   for  automatic
    
    37
    -    compilation,  since other make tools won't work (this includes BSD
    
    38
    -    Make).
    
    39
    -
    
    40
    -    GNU Make VERSION 3.81 OR NEWER IS NEEDED!
    
    41
    -
    
    42
    -
    
    43
    -  2. Other systems using GNU Make
    
    44
    -
    
    45
    -    On some  non-Unix platforms, it  is possible to build  the library
    
    46
    -    using only  the GNU Make utility.   Note that *NO OTHER  MAKE TOOL
    
    47
    -    WILL  WORK*[1]!   This  methods   supports  several  compilers  on
    
    48
    -    Windows, OS/2, and BeOS,  including MinGW* (without MSYS*), Visual
    
    49
    -    C++, Borland C++, and more.
    
    50
    -
    
    51
    -    Instructions are provided in the file `INSTALL.GNU`.
    
    52
    -
    
    53
    -
    
    54
    -  3. Other build tools and platforms.
    
    55
    -
    
    56
    -    A few other tools  can be used  to build FreeType.  You  can  find
    
    57
    -    the  corresponding instruction files  in  the FreeType root folder
    
    58
    -    or the builds/ sub-folder.
    
    59
    -
    
    60
    -      CMake   :: see `CMakeLists.txt` for more information
    
    61
    -      Meson   :: see `meson.build` for more information
    
    62
    -      MSBuild :: see `builds/windows/vc2010/freetype.vcxproj`
    
    63
    -      MMS     :: see `vms_make.com` and `docs/INSTALL.VMS`
    
    64
    -
    
    65
    -
    
    66
    -  4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
    
    67
    -
    
    68
    -    We provide a  small number of 'project files'  for various IDEs to
    
    69
    -    automatically build  the library as  well.  Note that  these files
    
    70
    -    are not actively supported by FreeType developers,  they can break
    
    71
    -    or become obsolete.
    
    72
    -
    
    73
    -    To find them, have a  look at the content of the `builds/<system>`
    
    74
    -    directory, where <system> stands for your OS or environment.
    
    75
    -
    
    76
    -
    
    77
    -  5. From you own IDE, or own Makefiles
    
    78
    -
    
    79
    -    If  you  want  to  create   your  own  project  file,  follow  the
    
    80
    -    instructions   given  in  the   `INSTALL.ANY`  document   of  this
    
    81
    -    directory.
    
    82
    -
    
    83
    -
    
    84
    -III. Custom builds of the library
    
    85
    -=================================
    
    86
    -
    
    87
    -  Customizing the compilation  of FreeType is easy, and  allows you to
    
    88
    -  select only the components of  the font engine that you really need.
    
    89
    -  For more details read the file `CUSTOMIZE`.
    
    90
    -
    
    91
    -
    
    92
    -----------------------------------------------------------------------
    
    93
    -
    
    94
    -[1] make++, a make tool written in Perl, has sufficient support of GNU
    
    95
    -    make extensions to build FreeType.  See
    
    96
    -
    
    97
    -      https://makepp.sourceforge.net
    
    98
    -
    
    99
    -    for more information;  you need version 2.0 or newer, and you must
    
    100
    -    pass option `--norc-substitution`.
    
    101
    -
    
    102
    -----------------------------------------------------------------------
    
    103
    -
    
    104
    -Copyright (C) 2000-2023 by
    
    105
    -David Turner, Robert Wilhelm, and Werner Lemberg.
    
    106
    -
    
    107
    -This  file is  part of  the FreeType  project, and  may only  be used,
    
    108
    -modified,  and distributed  under the  terms of  the  FreeType project
    
    109
    -license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    110
    -this file you  indicate that you have read  the license and understand
    
    111
    -and accept it fully.
    
    112
    -
    
    113
    -
    
    114
    ---- end of INSTALL ---

  • docs/INSTALL.CROSS deleted
    1
    -This document contains instructions on how to cross-build the FreeType
    
    2
    -library on Unix systems, for example, building binaries for Linux/MIPS
    
    3
    -on  FreeBSD/i386.  Before  reading this  document, please  consult the
    
    4
    -file  `INSTALL.UNIX' for  required tools  and the  basic self-building
    
    5
    -procedure.
    
    6
    -
    
    7
    -
    
    8
    -  1. Required Tools
    
    9
    -  -----------------
    
    10
    -
    
    11
    -    For self-building the FreeType library  on a Unix system, GNU Make
    
    12
    -    3.81 or newer  is required.  `INSTALL.UNIX' contains  hints how to
    
    13
    -    check the installed `make'.
    
    14
    -
    
    15
    -    The GNU C  compiler to cross-build the target  system is required.
    
    16
    -    Currently, using a non-GNU cross  compiler is untested.  The cross
    
    17
    -    compiler is  expected to be  installed with a system  prefix.  For
    
    18
    -    example, if  your building system  is FreeBSD/i386 and  the target
    
    19
    -    system is Linux/MIPS, the cross  compiler should be installed with
    
    20
    -    the name `mips-ip22-linuxelf-gcc'.
    
    21
    -
    
    22
    -    A C  compiler for a self-build  is required also, to  build a tool
    
    23
    -    (`apinames') that is executed during the build procedure.  Non-GNU
    
    24
    -    self compilers are acceptable, but such a setup is untested.
    
    25
    -
    
    26
    -
    
    27
    -  2. Configuration
    
    28
    -  ----------------
    
    29
    -
    
    30
    -    2.1. Building and target system
    
    31
    -
    
    32
    -      To configure  a cross-build,  the options  `--host=<system>' and
    
    33
    -      `--build=<system>'  must be  passed to  the `configure'  script.
    
    34
    -      For example, if your build system is FreeBSD/i386 and the target
    
    35
    -      system is Linux/MIPS, say
    
    36
    -
    
    37
    -        ./configure \
    
    38
    -          --build=i386-unknown-freebsd \
    
    39
    -          --host=mips-ip22-linuxelf \
    
    40
    -          [other options]
    
    41
    -
    
    42
    -      It should  be noted that `--host=<system>'  specifies the system
    
    43
    -      where the built binaries will  be executed, not the system where
    
    44
    -      the build actually happens.   Older versions of GNU autoconf use
    
    45
    -      the option  pair `--host=' and `--target='.  This  is broken and
    
    46
    -      doesn't work.  Similarly, an explicit CC specification like
    
    47
    -
    
    48
    -        env CC=mips-ip22-linux-gcc ./configure                 # BAD
    
    49
    -
    
    50
    -      or
    
    51
    -
    
    52
    -        env CC=/usr/local/mips-ip22-linux/bin/gcc ./configure  # BAD
    
    53
    -
    
    54
    -      doesn't   work  either;  such   a  configuration   confuses  the
    
    55
    -      `configure' script while  trying to find the cross  and native C
    
    56
    -      compilers.
    
    57
    -
    
    58
    -
    
    59
    -    2.2. The prefix to install FreeType2
    
    60
    -
    
    61
    -      Setting `--prefix=<prefix>'  properly is important.   The prefix
    
    62
    -      to  install  FreeType2  is written  into  the  `freetype-config'
    
    63
    -      script and `freetype2.pc' configuration file.
    
    64
    -
    
    65
    -      If  the built  FreeType  2 library  is  used as  a  part of  the
    
    66
    -      cross-building system,  the prefix  is expected to  be different
    
    67
    -      from  the self-building  system.  For  example, a  configuration
    
    68
    -      with   `--prefix=/usr/local'   installs    binaries   into   the
    
    69
    -      system-wide `/usr/local' directory, which then can't be executed
    
    70
    -      due  to the  incorrect architecture.   This causes  confusion in
    
    71
    -      configuration of all applications  that use FreeType2.  Instead,
    
    72
    -      use a prefix  to install the cross-build into  a separate system
    
    73
    -      tree, for example, `--prefix=/usr/local/mips-ip22-linux/'.
    
    74
    -
    
    75
    -      On the other hand, if the built  FreeType 2 library is used as a
    
    76
    -      part of the target system,  the prefix to install should reflect
    
    77
    -      the file system structure of the target system.
    
    78
    -
    
    79
    -
    
    80
    -    2.3. Library dependencies
    
    81
    -
    
    82
    -      FreeType normally depends on external libraries like `libpng' or
    
    83
    -      `libharfbuzz'.   The  easiest case  is  to  deactivate all  such
    
    84
    -      dependencies  using the  `--without-XXX' configuration  options.
    
    85
    -      However, if you  want to use those libraries,  you should ensure
    
    86
    -      that  they  are available  both  on  the  target system  and  as
    
    87
    -      (cross-compiled) libraries on the build system.
    
    88
    -
    
    89
    -      FreeType uses  `pkg-config' to find  most of the  libraries; the
    
    90
    -      other libraries it links to  are expected in the standard system
    
    91
    -      directories.   Since the  default pkg-config's  meta-information
    
    92
    -      files (like `harfbuzz.pc') of the build platform don't work, use
    
    93
    -      one of the two possible solutions below.
    
    94
    -
    
    95
    -        o Use pkg-config's meta-information files that are adjusted to
    
    96
    -          cross-compile  and  cross-link  with the  target  platform's
    
    97
    -          libraries.  Make sure those files are found before the build
    
    98
    -          system's default files.  Example:
    
    99
    -
    
    100
    -            ./configure \
    
    101
    -              --build=i386-unknown-freebsd \
    
    102
    -              --host=mips-ip22-linuxelf \
    
    103
    -              PKG_CONFIG_LIBDIR="/usr/local/mips-ip22-linux/lib/pkgconfig" \
    
    104
    -              [other options]
    
    105
    -
    
    106
    -          See the manpage of `pkg-config' for more details.
    
    107
    -
    
    108
    -        o Set variables like LIBPNG_LIBS  as additional options to the
    
    109
    -          `configure' script, overriding the values `pkg-config' would
    
    110
    -          provide.  `configure --help' shows the available environment
    
    111
    -          variables.  Example:
    
    112
    -
    
    113
    -            ./configure \
    
    114
    -              --build=i386-unknown-freebsd \
    
    115
    -              --host=mips-ip22-linuxelf \
    
    116
    -              LIBPNG_CFLAGS="-I/usr/local/mips-ip22-linux/include" \
    
    117
    -              LIBPNG_LIBS="-L/usr/local/mips-ip22-linux/lib -lpng12" \
    
    118
    -              [other options]
    
    119
    -
    
    120
    -
    
    121
    -  3. Building command
    
    122
    -  -------------------
    
    123
    -
    
    124
    -    If  the  configuration  finishes successfully,  invoking  GNU make
    
    125
    -    builds FreeType2.  Just say
    
    126
    -
    
    127
    -      make
    
    128
    -
    
    129
    -    or
    
    130
    -
    
    131
    -      gmake
    
    132
    -
    
    133
    -    depending on the name the GNU make binary actually has.
    
    134
    -
    
    135
    -
    
    136
    -  4. Installation
    
    137
    -  ---------------
    
    138
    -
    
    139
    -    Saying
    
    140
    -
    
    141
    -      make install
    
    142
    -
    
    143
    -    as usual to install FreeType2 into the directory tree specified by
    
    144
    -    the argument of the `--prefix' option.
    
    145
    -
    
    146
    -    As noted in section 2.2,  FreeType2  is sometimes configured to be
    
    147
    -    installed  into the  system directory  of the  target  system, and
    
    148
    -    should  not be installed  in the  cross-building system.   In such
    
    149
    -    cases, the  make variable `DESTDIR'  is useful to change  the root
    
    150
    -    directory in the installation.  For example, after
    
    151
    -
    
    152
    -      make DESTDIR=/mnt/target_system_root/ install
    
    153
    -
    
    154
    -    the built FreeType2 library files are installed into the directory
    
    155
    -    `/mnt/target_system_root/<prefix_in_configure>/lib'.
    
    156
    -
    
    157
    -
    
    158
    -  5. TODO
    
    159
    -  -------
    
    160
    -
    
    161
    -    Cross building between Cygwin (or MSys) and Unix must be tested.
    
    162
    -
    
    163
    -
    
    164
    -----------------------------------------------------------------------
    
    165
    -
    
    166
    -Copyright (C) 2006-2023 by
    
    167
    -suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg.
    
    168
    -
    
    169
    -
    
    170
    -This  file is  part of  the FreeType  project, and  may only  be used,
    
    171
    -modified,  and distributed  under the  terms of  the  FreeType project
    
    172
    -license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    173
    -this file you  indicate that you have read  the license and understand
    
    174
    -and accept it fully.
    
    175
    -
    
    176
    -
    
    177
    ---- end of INSTALL.CROSS ---

  • docs/INSTALL.GNU deleted
    1
    -This document contains instructions how  to build the FreeType library
    
    2
    -on non-Unix systems with  the help of GNU Make.  Note  that if you are
    
    3
    -running  Cygwin  or  MinGW/MSYS  in Windows,  you  should  follow  the
    
    4
    -instructions in the file `INSTALL.UNIX' instead.
    
    5
    -
    
    6
    -
    
    7
    -  FreeType 2 includes a powerful and flexible build system that allows
    
    8
    -  you to  easily compile it on  a great variety of  platforms from the
    
    9
    -  command line.  To do so, just follow these simple instructions.
    
    10
    -
    
    11
    -  1. Install GNU Make
    
    12
    -  -------------------
    
    13
    -
    
    14
    -    The FreeType 2 build system relies on many features special to GNU
    
    15
    -    Make.
    
    16
    -
    
    17
    -    NEARLY ALL OTHER MAKE TOOLS  FAIL, INCLUDING `BSD MAKE', SO REALLY
    
    18
    -    INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM!
    
    19
    -
    
    20
    -    Note that  make++, a  make tool written  in Perl,  supports enough
    
    21
    -    features of GNU make to compile FreeType.  See
    
    22
    -
    
    23
    -      https://makepp.sourceforge.net
    
    24
    -
    
    25
    -    for more information;  you need version 2.0 or newer, and you must
    
    26
    -    pass option `--norc-substitution'.
    
    27
    -
    
    28
    -    Make sure that you are invoking GNU Make from the command line, by
    
    29
    -    typing something like:
    
    30
    -
    
    31
    -      make -v
    
    32
    -
    
    33
    -    to display its version number.
    
    34
    -
    
    35
    -    VERSION 3.81 OR NEWER IS NEEDED!
    
    36
    -
    
    37
    -
    
    38
    -  2. Invoke `make'
    
    39
    -  ----------------
    
    40
    -
    
    41
    -    Go to  the root  directory of FreeType  2, then simply  invoke GNU
    
    42
    -    Make from the command line.   This will launch the FreeType 2 host
    
    43
    -    platform  detection routines.   A summary  will be  displayed, for
    
    44
    -    example, on Win32.
    
    45
    -
    
    46
    -
    
    47
    -      ==============================================================
    
    48
    -      FreeType build system -- automatic system detection
    
    49
    -
    
    50
    -      The following settings are used:
    
    51
    -
    
    52
    -        platform                     windows
    
    53
    -        compiler                     gcc
    
    54
    -        configuration directory      .\builds\windows
    
    55
    -        configuration rules          .\builds\windows\w32-gcc.mk
    
    56
    -
    
    57
    -      If this does not correspond to your system or settings please
    
    58
    -      remove the file 'config.mk' from this directory then read the
    
    59
    -      INSTALL file for help.
    
    60
    -
    
    61
    -      Otherwise, simply type 'make' again to build the library
    
    62
    -      or 'make refdoc' to build the API reference (the latter needs
    
    63
    -      Python >= 3.5).
    
    64
    -      =============================================================
    
    65
    -
    
    66
    -
    
    67
    -    If the detected settings correspond to your platform and compiler,
    
    68
    -    skip to step 5.  Note that if your platform is completely alien to
    
    69
    -    the build system, the detected platform will be `ansi'.
    
    70
    -
    
    71
    -
    
    72
    -  3. Configure the build system for a different compiler
    
    73
    -  ------------------------------------------------------
    
    74
    -
    
    75
    -    If the build system correctly detected your platform, but you want
    
    76
    -    to use a different compiler  than the one specified in the summary
    
    77
    -    (for most platforms, gcc is the default compiler), invoke GNU Make
    
    78
    -    with
    
    79
    -
    
    80
    -      make setup <compiler>
    
    81
    -
    
    82
    -    Examples:
    
    83
    -
    
    84
    -      to use Visual C++ on Win32, type:  `make setup visualc'
    
    85
    -      to use Borland C++ on Win32, type  `make setup bcc32'
    
    86
    -      to use Watcom C++ on Win32, type   `make setup watcom'
    
    87
    -      to use Intel C++ on Win32, type    `make setup intelc'
    
    88
    -      to use LCC-Win32 on Win32, type:   `make setup lcc'
    
    89
    -      to use Watcom C++ on OS/2, type    `make setup watcom'
    
    90
    -      to use VisualAge C++ on OS/2, type `make setup visualage'
    
    91
    -
    
    92
    -    The  <compiler> name to  use is  platform-dependent.  The  list of
    
    93
    -    available  compilers for  your  system is  available  in the  file
    
    94
    -    `builds/<system>/detect.mk'.
    
    95
    -
    
    96
    -    If you  are satisfied  by the new  configuration summary,  skip to
    
    97
    -    step 5.
    
    98
    -
    
    99
    -
    
    100
    -  3a. Use clang instead of gcc
    
    101
    -  ----------------------------
    
    102
    -
    
    103
    -    The `clang'  compiler can  use FreeType's setup  for `gcc';  it is
    
    104
    -    sufficient to set the `CC' variable, for example
    
    105
    -
    
    106
    -      make CC=clang
    
    107
    -
    
    108
    -
    
    109
    -  3b. Compiling with a C++ compiler
    
    110
    -  ---------------------------------
    
    111
    -
    
    112
    -    FreeType can be built with a C++ compiler, for example
    
    113
    -
    
    114
    -      make CC="g++"
    
    115
    -
    
    116
    -    If `clang++' should  be used it is necessary to  also override the
    
    117
    -    `ANSIFLAGS' variable:
    
    118
    -
    
    119
    -      make CC="clang++" ANSIFLAGS=""
    
    120
    -
    
    121
    -
    
    122
    -  4. Configure the build system for an unknown platform/compiler
    
    123
    -  --------------------------------------------------------------
    
    124
    -
    
    125
    -    The auto-detection/setup  phase of the build system  copies a file
    
    126
    -    to the current directory under the name `config.mk'.
    
    127
    -
    
    128
    -    For    example,    on    OS/2+gcc,    it   would    simply    copy
    
    129
    -    `builds/os2/os2-gcc.mk' to `./config.mk'.
    
    130
    -
    
    131
    -    If for  some reason your  platform isn't correctly  detected, copy
    
    132
    -    manually the configuration sub-makefile to `./config.mk' and go to
    
    133
    -    step 5.
    
    134
    -
    
    135
    -    Note  that  this file  is  a  sub-Makefile  used to  specify  Make
    
    136
    -    variables  for compiler  and linker  invocation during  the build.
    
    137
    -    You can  easily create your own  version from one  of the existing
    
    138
    -    configuration files,  then copy it to the  current directory under
    
    139
    -    the name `./config.mk'.
    
    140
    -
    
    141
    -
    
    142
    -  5. Build the library
    
    143
    -  --------------------
    
    144
    -
    
    145
    -    The auto-detection/setup  phase should have  copied a file  in the
    
    146
    -    current  directory,  called  `./config.mk'.   This  file  contains
    
    147
    -    definitions of various Make  variables used to invoke the compiler
    
    148
    -    and linker during the build.  [It has also generated a file called
    
    149
    -    `ftmodule.h'   in  the  objects   directory  (which   is  normally
    
    150
    -    `<toplevel>/objs/');  please read  the  file `docs/CUSTOMIZE'  for
    
    151
    -    customization of FreeType.]
    
    152
    -
    
    153
    -    To  launch  the build,  simply  invoke  GNU  Make again:  The  top
    
    154
    -    Makefile will detect the configuration file and run the build with
    
    155
    -    it.  If you have used variables in  step 3, you must use  the same
    
    156
    -    variables here, too.
    
    157
    -
    
    158
    -
    
    159
    -  Final note
    
    160
    -
    
    161
    -    The above instructions build a  _statically_ linked library of the
    
    162
    -    font engine in the `objs' directory.   On Windows, you can build a
    
    163
    -    DLL  either  with  MinGW  (within an  MSYS  shell,  following  the
    
    164
    -    instructions in `INSTALL.UNIX'), or you  use one of the Visual C++
    
    165
    -    project files; see  the  subdirectories  of `builds/windows'.  For
    
    166
    -    everything else,  you are on  your own,  and you might  follow the
    
    167
    -    instructions in `INSTALL.ANY' to create your own Makefiles.
    
    168
    -
    
    169
    -----------------------------------------------------------------------
    
    170
    -
    
    171
    -Copyright (C) 2003-2023 by
    
    172
    -David Turner, Robert Wilhelm, and Werner Lemberg.
    
    173
    -
    
    174
    -This  file is  part of  the FreeType  project, and  may only  be used,
    
    175
    -modified,  and distributed  under the  terms of  the  FreeType project
    
    176
    -license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    177
    -this file you  indicate that you have read  the license and understand
    
    178
    -and accept it fully.
    
    179
    -
    
    180
    -
    
    181
    ---- end of INSTALL.GNU ---

  • docs/INSTALL.UNIX deleted
    1
    -This  document contains  instructions  on how  to  build the  FreeType
    
    2
    -library on Unix  systems.  This also works for  emulations like Cygwin
    
    3
    -or MSys on Win32:
    
    4
    -
    
    5
    -
    
    6
    -  1. Ensure that you are using GNU Make
    
    7
    -  -------------------------------------
    
    8
    -
    
    9
    -    The FreeType build system  _exclusively_ works with GNU Make.  You
    
    10
    -    will  not be  able to  compile the  library with  the instructions
    
    11
    -    below using any other alternative (including BSD Make).
    
    12
    -
    
    13
    -    Check that you have GNU make by running the command:
    
    14
    -
    
    15
    -       make -v
    
    16
    -
    
    17
    -    This should dump some text that begins with:
    
    18
    -
    
    19
    -       GNU Make  <version number>
    
    20
    -       Copyright (C) <year> Free Software Foundation Inc.
    
    21
    -
    
    22
    -    Note that version  3.81 or higher is *required* or the  build will
    
    23
    -    fail.
    
    24
    -
    
    25
    -    It is also fine to have GNU Make under another name (e.g. 'gmake')
    
    26
    -    if you use the MAKE variable as described below.
    
    27
    -
    
    28
    -    As  a  special exception,  'makepp'  can  also  be used  to  build
    
    29
    -    FreeType 2.  See the file docs/MAKEPP for details.
    
    30
    -
    
    31
    -    For builds  with `cmake' please check file `CMakeLists.txt';  this
    
    32
    -    is a contributed file not directly supported by the FreeType team.
    
    33
    -
    
    34
    -
    
    35
    -  2. Regenerate the configure script if needed
    
    36
    -  --------------------------------------------
    
    37
    -
    
    38
    -    This only applies if you  are building a git snapshot or checkout,
    
    39
    -    *not* if you grabbed the sources of an official release.
    
    40
    -
    
    41
    -    You  need  to invoke  the  `autogen.sh'  script  in the  top-level
    
    42
    -    directory  in order  to  create the  `configure'  script for  your
    
    43
    -    platform.  Normally, this simply means typing:
    
    44
    -
    
    45
    -      sh autogen.sh
    
    46
    -
    
    47
    -    In case of problems, you may  need to install or upgrade Automake,
    
    48
    -    Autoconf or Libtool.  See  `README.git' in the top-level directory
    
    49
    -    for more information.
    
    50
    -
    
    51
    -
    
    52
    -  3. Build and install the library
    
    53
    -  --------------------------------
    
    54
    -
    
    55
    -    Say
    
    56
    -
    
    57
    -      ./configure --help
    
    58
    -
    
    59
    -    to see  the list of  possible configuration options  and important
    
    60
    -    environment  variables.  The ./configure script  will detect  some
    
    61
    -    prerequisite  system  libraries  (libpng, brotli, etc.)  if  their
    
    62
    -    headers are available at the default locations.
    
    63
    -
    
    64
    -    The following  should work  on all Unix  systems where  the `make'
    
    65
    -    command invokes GNU Make:
    
    66
    -
    
    67
    -      ./configure [options]
    
    68
    -      make
    
    69
    -      make install           (as root)
    
    70
    -
    
    71
    -    The default installation path  is `/usr/local'.  It can be changed
    
    72
    -    with the `--prefix=<path>' option.  Example:
    
    73
    -
    
    74
    -      ./configure --prefix=/usr
    
    75
    -
    
    76
    -    When using  a different command  to invoke GNU Make,  use the MAKE
    
    77
    -    variable.  For example,  if `gmake' is the command  to use on your
    
    78
    -    system, do something like:
    
    79
    -
    
    80
    -       MAKE=gmake ./configure [options]
    
    81
    -       gmake
    
    82
    -       gmake install            (as root)
    
    83
    -
    
    84
    -    If  this still doesn't  work, there  must be  a problem  with your
    
    85
    -    system (e.g., you are using a very old version of GNU Make).
    
    86
    -
    
    87
    -    For library identification, FreeType's `configure' script uses the
    
    88
    -    `pkg-config' interface: Assuming it  needs library `foo', it calls
    
    89
    -    the  `pkg-config' program  to find  information on  library `foo',
    
    90
    -    which in turn  looks for a `foo.pc' file installed  at the system.
    
    91
    -    Some platforms,  however, don't come with  `pkg-support'; you then
    
    92
    -    have  to  use environment  variables  as  described by  `configure
    
    93
    -    --help'.  Example:
    
    94
    -
    
    95
    -      LIBPNG_CFLAGS="-I/path/to/libpng/include/directory" \
    
    96
    -      LIBPNG_LIBS="-L/path/to/libpng/lib/directory" \
    
    97
    -      configure ...
    
    98
    -
    
    99
    -    It  is possible  to  compile FreeType  in  a different  directory.
    
    100
    -    Assuming the FreeType source  files in directory `/src/freetype' a
    
    101
    -    compilation in directory `foo' works as follows:
    
    102
    -
    
    103
    -      cd foo
    
    104
    -      /src/freetype/configure [options]
    
    105
    -      make
    
    106
    -      make install
    
    107
    -
    
    108
    -
    
    109
    -  3.1 Interdependency with HarfBuzz
    
    110
    -  .................................
    
    111
    -
    
    112
    -    Note that there  is a chicken-and-egg problem  currently since the
    
    113
    -    HarfBuzz library  (used by the  auto-hinter to improve  support of
    
    114
    -    OpenType  fonts)  depends on  FreeType,  which  can be  solved  as
    
    115
    -    follows in case HarfBuzz is not yet installed on your system.
    
    116
    -
    
    117
    -    1. Call    FreeType's     `configure'    script     with    option
    
    118
    -       `--without-harfbuzz', then compile and install FreeType.
    
    119
    -
    
    120
    -    2. Compile and install HarfBuzz.
    
    121
    -
    
    122
    -    3. Call    FreeType's    `configure'   script    without    option
    
    123
    -       `--without-harfbuzz' (after  executing `make  distclean'), then
    
    124
    -       compile and install FreeType again.
    
    125
    -
    
    126
    -
    
    127
    -----------------------------------------------------------------------
    
    128
    -
    
    129
    -Copyright (C) 2003-2023 by
    
    130
    -David Turner, Robert Wilhelm, and Werner Lemberg.
    
    131
    -
    
    132
    -This  file is  part of  the FreeType  project, and  may only  be used,
    
    133
    -modified,  and distributed  under the  terms of  the  FreeType project
    
    134
    -license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    135
    -this file you  indicate that you have read  the license and understand
    
    136
    -and accept it fully.
    
    137
    -
    
    138
    -
    
    139
    ---- end of INSTALL.UNIX ---

  • docs/INSTALL.md
    1
    +# Building FreeType
    
    2
    +
    
    3
    +There are several ways to build the FreeType library, depending on
    
    4
    +your system and the level of customization you need. Here is a short
    
    5
    +overview of the documentation available:
    
    6
    +
    
    7
    +
    
    8
    +## A. Prerequisites and dependencies
    
    9
    +
    
    10
    +FreeType is a low level C library that only depends on the standard
    
    11
    +C library with very few platform-dependent optimizations utilized at
    
    12
    +build time. Any C99-compliant compiler should be able to compile
    
    13
    +FreeType. System libraries, such as zlib, Gzip, bzip2, Brotli,
    
    14
    +and libpng, might be used to handle compressed fonts or decode
    
    15
    +embedded PNG glyphs.
    
    16
    +
    
    17
    +FreeType auto-configuration scripts should be able to detect the
    
    18
    +prerequisites if the necessary headers are available at the default
    
    19
    +locations. Otherwise, modify `include/freetype/config/ftoption.h`
    
    20
    +to control how the FreeType library gets built. Normally, you don't
    
    21
    +need to change anything.
    
    22
    +
    
    23
    +Applications have very limited control over FreeType's behaviour at
    
    24
    +run-time; look at the documentation of function `FT_Property_Set`.
    
    25
    +
    
    26
    +
    
    27
    +## B. Normal installation and upgrades
    
    28
    +
    
    29
    +1. Unix and Unix-like systems
    
    30
    +
    
    31
    +   This also includes MacOS, Cygwin, MinGW + MSYS, Mingw-w64 + MSYS2,
    
    32
    +   and possibly other, similar environments.
    
    33
    +
    
    34
    +   Please read [INSTALL.UNIX] to install or upgrade FreeType 2 on a
    
    35
    +   Unix system. Note that you *need* GNU Make for automatic
    
    36
    +   compilation, since other make tools won't work (this includes BSD
    
    37
    +   Make).
    
    38
    +
    
    39
    +   **GNU Make VERSION 3.81 OR NEWER IS NEEDED!**
    
    40
    +
    
    41
    +2. Other systems using GNU Make
    
    42
    +
    
    43
    +   On some non-Unix platforms, it is possible to build the library
    
    44
    +   using only the GNU Make utility. Note that *NO OTHER MAKE TOOL
    
    45
    +   WILL WORK*[1]! This methods supports several compilers on
    
    46
    +   Windows, OS/2, and BeOS, including MinGW* (without MSYS*), Visual
    
    47
    +   C++, Borland C++, and more.
    
    48
    +
    
    49
    +   Instructions are provided in the file [INSTALL.GNU].
    
    50
    +
    
    51
    +3. Other build tools and platforms.
    
    52
    +
    
    53
    +   A few other tools can be used to build FreeType. You can find
    
    54
    +   the corresponding instruction files in the FreeType root folder
    
    55
    +   or the builds/ sub-folder.
    
    56
    +
    
    57
    +   | Build Tool | Details                                   |
    
    58
    +   |------------|-------------------------------------------|
    
    59
    +   | CMake      | see [CMakeLists.txt] for more information |
    
    60
    +   | Meson      | see [meson.build] for more information    |
    
    61
    +   | MSBuild    | see [freetype.vcxproj]                    |
    
    62
    +   | MMS        | see [vms_make.com] and [INSTALL.VMS]      |
    
    63
    +
    
    64
    +4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
    
    65
    +
    
    66
    +   We provide a small number of 'project files' for various IDEs to
    
    67
    +   automatically build the library as well. Note that these files
    
    68
    +   are not actively supported by FreeType developers, they can break
    
    69
    +   or become obsolete.
    
    70
    +
    
    71
    +   To find them, have a look at the content of the `builds/<system>`
    
    72
    +   directory, where <system> stands for your OS or environment.
    
    73
    +
    
    74
    +5. From you own IDE, or own Makefiles
    
    75
    +
    
    76
    +   If you want to create your own project file, follow the
    
    77
    +   instructions given in the [INSTALL.ANY] document of this
    
    78
    +   directory.
    
    79
    +
    
    80
    +
    
    81
    +## C. Custom builds of the library
    
    82
    +
    
    83
    +Customizing the compilation of FreeType is easy, and allows you to
    
    84
    +select only the components of the font engine that you really need.
    
    85
    +For more details read the file [docs/CUSTOMIZE][CUSTOMIZE].
    
    86
    +
    
    87
    +
    
    88
    +## D. Standard builds with `configure`
    
    89
    +
    
    90
    +The git repository doesn't contain pre-built configuration scripts for
    
    91
    +UNIXish platforms. To generate them say
    
    92
    +
    
    93
    +    sh autogen.sh
    
    94
    +
    
    95
    +which in turn depends on the following packages:
    
    96
    +
    
    97
    +    automake (1.10.1)
    
    98
    +    libtool (2.2.4)
    
    99
    +    autoconf (2.62)
    
    100
    +
    
    101
    +The versions given in parentheses are known to work. Newer versions
    
    102
    +should work too, of course. Note that `autogen.sh` also sets up
    
    103
    +proper file permissions for the `configure` and auxiliary scripts.
    
    104
    +
    
    105
    +The `autogen.sh` script checks whether the versions of the above three
    
    106
    +tools match the numbers above. Otherwise it will complain and suggest
    
    107
    +either upgrading or using environment variables to point to more
    
    108
    +recent versions of the required tools.
    
    109
    +
    
    110
    +Note that `aclocal` is provided by the 'automake' package on Linux,
    
    111
    +and that `libtoolize` is called `glibtoolize` on Darwin (OS X).
    
    112
    +
    
    113
    +
    
    114
    +## E. Alternative build methods
    
    115
    +
    
    116
    +For static builds that don't use platform-specific optimizations, no
    
    117
    +configure script is necessary at all; saying
    
    118
    +
    
    119
    +    make setup ansi
    
    120
    +    make
    
    121
    +
    
    122
    +should work on all platforms that have GNU `make` (or `makepp`).
    
    123
    +
    
    124
    +A build with `cmake` or `meson` can be done directly from the git
    
    125
    +repository. However, if you want to use the `FT_DEBUG_LOGGING` macro
    
    126
    +(see file [docs/DEBUG][DEBUG] for more information) it is currently mandatory
    
    127
    +to execute `autogen.sh` in advance; this script clones the 'dlg' git
    
    128
    +submodule and copies some files into FreeType's source tree.
    
    129
    +
    
    130
    +
    
    131
    +---
    
    132
    +
    
    133
    +[1] make++, a make tool written in Perl, has sufficient support of GNU
    
    134
    +   make extensions to build FreeType. See
    
    135
    +
    
    136
    +    https://makepp.sourceforge.net
    
    137
    +
    
    138
    +   for more information; you need version 2.0 or newer, and you must
    
    139
    +   pass option `--norc-substitution`.
    
    140
    +
    
    141
    +---
    
    142
    +```
    
    143
    +Copyright (C) 2000-2023 by
    
    144
    +David Turner, Robert Wilhelm, and Werner Lemberg.
    
    145
    +
    
    146
    +This file is part of the FreeType project, and may only be used,
    
    147
    +modified, and distributed under the terms of the FreeType project
    
    148
    +license, LICENSE.TXT. By continuing to use, modify, or distribute
    
    149
    +this file you indicate that you have read the license and understand
    
    150
    +and accept it fully.
    
    151
    +```
    
    152
    +
    
    153
    +<!--------------------------------------------------------------------------->
    
    154
    +
    
    155
    +[CMakeLists.txt]: ../CMakeLists.txt
    
    156
    +[meson.build]: ../meson.build
    
    157
    +[freetype.vcxproj]: ../builds/windows/vc2010/freetype.vcxproj
    
    158
    +[vms_make.com]: ../vms_make.com
    
    159
    +[INSTALL.VMS]: ./INSTALL.VMS
    
    160
    +[INSTALL.ANY]: ./INSTALL.ANY
    
    161
    +[INSTALL.GNU]: ./INSTALL.GNU
    
    162
    +[INSTALL.UNIX]: ./INSTALL.UNIX
    
    163
    +[CUSTOMIZE]: ./CUSTOMIZE
    
    164
    +[DEBUG]: ./DEBUG

  • docs/INSTALL_ANDROID.md
    1
    +# Compiling FreeType on Android using Termux
    
    2
    +
    
    3
    +If you want to test FreeType on arm devices, compiling it on an Android
    
    4
    +phone is one of the easiest ways.
    
    5
    +
    
    6
    +## 1. Compiling FreeType
    
    7
    +
    
    8
    +1. Install and open termux
    
    9
    +
    
    10
    +2. Update termux packages using:
    
    11
    +
    
    12
    +   ```bash
    
    13
    +   pkg update
    
    14
    +   pkg upgrade
    
    15
    +   ```
    
    16
    +   Select `y` if any configuration changes are asked
    
    17
    +
    
    18
    +3. Install `git`:
    
    19
    +
    
    20
    +   ```bash
    
    21
    +   pkg install git
    
    22
    +   ```
    
    23
    +4. Install packages required for compilation:
    
    24
    +
    
    25
    +   ```bash
    
    26
    +   pkg install automake autoconf libtool make clang binutils
    
    27
    +   ```
    
    28
    +
    
    29
    +5. Clone FreeType's git repository:
    
    30
    +
    
    31
    +   ```bash
    
    32
    +   git clone https://gitlab.freedesktop.org/freetype/freetype.git
    
    33
    +   ```
    
    34
    +
    
    35
    +6. Enter into the source directory:
    
    36
    +
    
    37
    +   ```
    
    38
    +   cd freetype/
    
    39
    +   ```
    
    40
    +
    
    41
    +7. Now you can compile FreeType according to [INSTALL_UNIX.md]:
    
    42
    +
    
    43
    +   ```bash
    
    44
    +   ./autogen.sh
    
    45
    +   ./configure
    
    46
    +   make -j$(nproc)
    
    47
    +   ```
    
    48
    +   The compiled binaries can be accessed under `objs/.libs`
    
    49
    +
    
    50
    +## 2. Compiling FreeType Demo programs
    
    51
    +If you need to test your changes you may want to use ft-demo
    
    52
    +programs. They can be compiled and run by follwing these steps:
    
    53
    +
    
    54
    +1. First compile FreeType using the steps above.
    
    55
    +
    
    56
    +2. Clone FreeType demos adjacent to the `freetype/` directory:
    
    57
    +
    
    58
    +   ```bash
    
    59
    +   git clone https://gitlab.freedesktop.org/freetype/freetype-demos.git
    
    60
    +   ```
    
    61
    +   i.e. If you can access FreeType repo under `~/freetype`, you should
    
    62
    +   be able to access `~/freetype-demos`.
    
    63
    +
    
    64
    +3. Enter into the ft-demos directory:
    
    65
    +
    
    66
    +   ```bash
    
    67
    +   cd freetype-demos
    
    68
    +   ```
    
    69
    +
    
    70
    +4. Compile the programs:
    
    71
    +
    
    72
    +   ```bash
    
    73
    +   make
    
    74
    +   ```
    
    75
    +
    
    76
    +5. The compiled binaries can be accessed and executed under `bin/` like:
    
    77
    +
    
    78
    +   ```bash
    
    79
    +   cd bin
    
    80
    +   ./ftlint
    
    81
    +   ```
    
    82
    +
    
    83
    +<!---->
    
    84
    +
    
    85
    +[INSTALL_UNIX.md]: ./INSTALL_UNIX.md

  • docs/INSTALL.ANYdocs/INSTALL_ANY.md
    1
    -Instructions on how to build FreeType with your own build tool
    
    2
    -==============================================================
    
    1
    +# Instructions on how to build FreeType with your own build tool
    
    3 2
     
    
    4
    -See  the  file `CUSTOMIZE'  to  learn  how  to customize  FreeType  to
    
    5
    -specific environments.
    
    6 3
     
    
    4
    +See  the  file [docs/CUSTOMIZE][CUSTOMIZE]  to  learn  how  to 
    
    5
    +customize FreeType to specific environments.
    
    7 6
     
    
    8
    -I. Standard procedure
    
    9
    ----------------------
    
    10 7
     
    
    11
    -  * If you use macro names  for FreeType header files (while mandatory
    
    12
    -    in earlier versions,  this is now optional  since FreeType version
    
    13
    -    2.6.1) it  is necessary to  disable pre-compiled headers.  This is
    
    14
    -    very important for Visual C++, because lines like
    
    8
    +## A. Standard procedure
    
    9
    +
    
    10
    +* If you use macro names  for FreeType header files (while mandatory
    
    11
    +  in earlier versions,  this is now optional  since FreeType version
    
    12
    +  2.6.1) it  is necessary to  disable pre-compiled headers.  This is
    
    13
    +  very important for Visual C++, because lines like
    
    15 14
     
    
    16 15
           #include FT_FREETYPE_H
    
    17 16
     
    
    18
    -    are not  correctly supported  by this compiler  while being  ISO C
    
    19
    -    compliant!
    
    17
    +  are not  correctly supported  by this compiler  while being  ISO C
    
    18
    +  compliant!
    
    20 19
     
    
    21
    -  * You need to add the directory `include' to your  include path when
    
    22
    -    compiling the library.
    
    20
    +* You need to add the directory `include` to your  include path when
    
    21
    +  compiling the library.
    
    23 22
     
    
    24
    -  * FreeType 2 is made of several  components; each of them is located
    
    25
    -    in    a   subdirectory    of    `freetype/src'.    For    example,
    
    26
    -    `freetype/src/truetype/' contains the TrueType font driver.
    
    23
    +* FreeType 2 is made of several  components; each of them is located
    
    24
    +  in    a   subdirectory    of    `freetype/src`.    For    example,
    
    25
    +  `freetype/src/truetype/` contains the TrueType font driver.
    
    27 26
     
    
    28
    -  * DO NOT COMPILE ALL C FILES!  Rather, compile the following ones.
    
    27
    +* DO NOT COMPILE ALL C FILES!  Rather, compile the following ones.
    
    29 28
     
    
    30
    -    -- base components (required)
    
    29
    +  ### base components (required):
    
    31 30
     
    
    32 31
           src/base/ftsystem.c
    
    33 32
           src/base/ftinit.c
    
    ... ... @@ -55,7 +54,7 @@ I. Standard procedure
    55 54
     
    
    56 55
           src/base/ftmac.c        -- only on the Macintosh
    
    57 56
     
    
    58
    -    -- font drivers (optional; at least one is needed)
    
    57
    +  ### font drivers (optional; at least one is needed)
    
    59 58
     
    
    60 59
           src/bdf/bdf.c           -- BDF font driver
    
    61 60
           src/cff/cff.c           -- CFF/OpenType font driver
    
    ... ... @@ -69,14 +68,13 @@ I. Standard procedure
    69 68
           src/type42/type42.c     -- Type 42 font driver
    
    70 69
           src/winfonts/winfnt.c   -- Windows FONT / FNT font driver
    
    71 70
     
    
    72
    -    -- rasterizers (optional; at least one is needed for vector
    
    73
    -       formats)
    
    71
    +  ### rasterizers (optional; at least one is needed for vector formats)
    
    74 72
     
    
    75 73
           src/raster/raster.c     -- monochrome rasterizer
    
    76 74
           src/sdf/sdf.c           -- Signed Distance Field driver
    
    77 75
           src/smooth/smooth.c     -- anti-aliasing rasterizer
    
    78 76
     
    
    79
    -    -- auxiliary modules (optional)
    
    77
    +  ### auxiliary modules (optional)
    
    80 78
     
    
    81 79
           src/autofit/autofit.c   -- auto hinting module
    
    82 80
           src/cache/ftcache.c     -- cache sub-system (in beta)
    
    ... ... @@ -90,60 +88,58 @@ I. Standard procedure
    90 88
           src/psnames/psnames.c   -- PostScript glyph names support
    
    91 89
     
    
    92 90
     
    
    93
    -    Notes:
    
    91
    +  ## Notes:
    
    94 92
     
    
    95
    -      `ftcache.c'  needs `ftglyph.c'
    
    96
    -      `ftfstype.c' needs `fttype1.c'
    
    97
    -      `ftglyph.c'  needs `ftbitmap.c'
    
    98
    -      `ftstroke.c' needs `ftglyph.c'
    
    99
    -      `ftsynth.c'  needs `ftbitmap.c'
    
    93
    +      `ftcache.c`  needs `ftglyph.c`
    
    94
    +      `ftfstype.c` needs `fttype1.c`
    
    95
    +      `ftglyph.c`  needs `ftbitmap.c`
    
    96
    +      `ftstroke.c` needs `ftglyph.c`
    
    97
    +      `ftsynth.c`  needs `ftbitmap.c`
    
    100 98
     
    
    101
    -      `cff.c'      needs `sfnt.c', `pshinter.c', and `psnames.c'
    
    102
    -      `truetype.c' needs `sfnt.c' and `psnames.c'
    
    103
    -      `type1.c'    needs `psaux.c' `pshinter.c', and `psnames.c'
    
    104
    -      `type1cid.c' needs `psaux.c', `pshinter.c', and `psnames.c'
    
    105
    -      `type42.c'   needs `truetype.c'
    
    99
    +      `cff.c`      needs `sfnt.c`, `pshinter.c`, and `psnames.c`
    
    100
    +      `truetype.c` needs `sfnt.c` and `psnames.c`
    
    101
    +      `type1.c`    needs `psaux.c` `pshinter.c`, and `psnames.c`
    
    102
    +      `type1cid.c` needs `psaux.c`, `pshinter.c`, and `psnames.c`
    
    103
    +      `type42.c`   needs `truetype.c`
    
    106 104
     
    
    107
    -      Please consult the central  `include/freetype/config/ftoption.h'
    
    108
    -      configuration file for details on additional libraries necessary
    
    109
    -      for some optional features.
    
    105
    +    Please consult the central  `include/freetype/config/ftoption.h`
    
    106
    +    configuration file for details on additional libraries necessary
    
    107
    +    for some optional features.
    
    110 108
     
    
    111 109
     
    
    112
    -  Read the file `CUSTOMIZE' in case  you want to compile only a subset
    
    113
    -  of  the  drivers,  renderers,   and  optional  modules;  a  detailed
    
    114
    -  description of the various base  extension is given in the top-level
    
    115
    -  file `modules.cfg'.
    
    110
    +Read the file `CUSTOMIZE` in case  you want to compile only a subset
    
    111
    +of  the  drivers,  renderers,   and  optional  modules;  a  detailed
    
    112
    +description of the various base  extension is given in the top-level
    
    113
    +file `modules.cfg`.
    
    116 114
     
    
    117
    -  You are done.  In case of problems, see the archives of the FreeType
    
    118
    -  development mailing list.
    
    115
    +You are done.  In case of problems, see the archives of the FreeType
    
    116
    +development mailing list.
    
    119 117
     
    
    120 118
     
    
    121
    -II. Support for flat-directory compilation
    
    122
    -------------------------------------------
    
    119
    +## B. Support for flat-directory compilation
    
    123 120
     
    
    124
    -  It is  possible to  put all  FreeType 2 source  files into  a single
    
    125
    -  directory, with the *exception* of the `include' hierarchy.
    
    121
    +It is  possible to  put all  FreeType 2 source  files into  a single
    
    122
    +directory, with the *exception* of the `include` hierarchy.
    
    126 123
     
    
    127
    -  1. Copy all files in current directory
    
    124
    +1. Copy all files in current directory
    
    128 125
     
    
    129
    -      cp freetype/src/base/*.[hc] .
    
    130
    -      cp freetype/src/raster1/*.[hc] .
    
    131
    -      cp freetype/src/smooth/*.[hc] .
    
    132
    -      etc.
    
    126
    +        cp freetype/src/base/*.[hc] .
    
    127
    +        cp freetype/src/raster1/*.[hc] .
    
    128
    +        cp freetype/src/smooth/*.[hc] .
    
    129
    +        etc.
    
    133 130
     
    
    134
    -  2. Compile sources
    
    131
    +2. Compile sources
    
    135 132
     
    
    136
    -      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftsystem.c
    
    137
    -      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftinit.c
    
    138
    -      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftdebug.c
    
    139
    -      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftbase.c
    
    140
    -      etc.
    
    133
    +        cc -c -Iinclude -DFT2_BUILD_LIBRARY ftsystem.c
    
    134
    +        cc -c -Iinclude -DFT2_BUILD_LIBRARY ftinit.c
    
    135
    +        cc -c -Iinclude -DFT2_BUILD_LIBRARY ftdebug.c
    
    136
    +        cc -c -Iinclude -DFT2_BUILD_LIBRARY ftbase.c
    
    137
    +        etc.
    
    141 138
     
    
    142 139
         You don't  need to define  the FT_FLAT_COMPILATION macro  (as this
    
    143 140
         was required in previous releases of FreeType 2).
    
    144 141
     
    
    145
    -----------------------------------------------------------------------
    
    146
    -
    
    142
    +```
    
    147 143
     Copyright (C) 2003-2023 by
    
    148 144
     David Turner, Robert Wilhelm, and Werner Lemberg.
    
    149 145
     
    
    ... ... @@ -152,6 +148,7 @@ modified, and distributed under the terms of the FreeType project
    152 148
     license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    153 149
     this file you  indicate that you have read  the license and understand
    
    154 150
     and accept it fully.
    
    151
    +```
    
    155 152
     
    
    156
    -
    
    157
    ---- end of INSTALL.ANY ---
    153
    +<!---->
    
    154
    +[CUSTOMIZE]: ./CUSTOMIZE

  • docs/INSTALL_CROSS.md
    1
    +# Cross-Compiling FreeType
    
    2
    +
    
    3
    +This document contains instructions on how to cross-build the FreeType
    
    4
    +library on Unix systems, for example, building binaries for Linux/MIPS
    
    5
    +on  FreeBSD/i386.  Before  reading this  document, please  consult the
    
    6
    +file  [INSTALL_UNIX.md] for  required tools  and the  basic self-building
    
    7
    +procedure.
    
    8
    +
    
    9
    +
    
    10
    +## 1. Required Tools
    
    11
    +
    
    12
    +  For self-building the FreeType library  on a Unix system, GNU Make
    
    13
    +  3.81 or newer  is required.  [INSTALL_UNIX.md contains  hints how to
    
    14
    +  check the installed `make`.
    
    15
    +
    
    16
    +  The GNU C  compiler to cross-build the target  system is required.
    
    17
    +  Currently, using a non-GNU cross  compiler is untested.  The cross
    
    18
    +  compiler is  expected to be  installed with a system  prefix.  For
    
    19
    +  example, if  your building system  is FreeBSD/i386 and  the target
    
    20
    +  system is Linux/MIPS, the cross  compiler should be installed with
    
    21
    +  the name `mips-ip22-linuxelf-gcc`.
    
    22
    +
    
    23
    +  A C  compiler for a self-build  is required also, to  build a tool
    
    24
    +  (`apinames`) that is executed during the build procedure.  Non-GNU
    
    25
    +  self compilers are acceptable, but such a setup is untested.
    
    26
    +
    
    27
    +
    
    28
    +## 2. Configuration
    
    29
    +
    
    30
    +  ### 2.1 Building and target system
    
    31
    +
    
    32
    +  To configure  a cross-build,  the options  `--host=<system>` and
    
    33
    +  `--build=<system>`  must be  passed to  the `configure`  script.
    
    34
    +  For example, if your build system is FreeBSD/i386 and the target
    
    35
    +  system is Linux/MIPS, say
    
    36
    +
    
    37
    +  ```bash
    
    38
    +    ./configure \
    
    39
    +      --build=i386-unknown-freebsd \
    
    40
    +      --host=mips-ip22-linuxelf \
    
    41
    +      [other options]
    
    42
    +  ```
    
    43
    +
    
    44
    +  It should  be noted that `--host=<system>`  specifies the system
    
    45
    +  where the built binaries will  be executed, not the system where
    
    46
    +  the build actually happens.   Older versions of GNU autoconf use
    
    47
    +  the option  pair `--host=` and `--target=`.  This  is broken and
    
    48
    +  doesn't work.  Similarly, an explicit CC specification like
    
    49
    +
    
    50
    +  ```bash
    
    51
    +    env CC=mips-ip22-linux-gcc ./configure                 # BAD
    
    52
    +  ```
    
    53
    +  or
    
    54
    +
    
    55
    +  ```bash
    
    56
    +    env CC=/usr/local/mips-ip22-linux/bin/gcc ./configure  # BAD
    
    57
    +  ```
    
    58
    +
    
    59
    +  doesn't   work  either;  such   a  configuration   confuses  the
    
    60
    +  `configure` script while  trying to find the cross  and native C
    
    61
    +  compilers.
    
    62
    +
    
    63
    +
    
    64
    +  ### 2.2. The prefix to install FreeType2
    
    65
    +
    
    66
    +  Setting `--prefix=<prefix>`  properly is important.   The prefix
    
    67
    +  to  install  FreeType2  is written  into  the  `freetype-config`
    
    68
    +  script and `freetype2.pc` configuration file.
    
    69
    +
    
    70
    +  If  the built  FreeType  2 library  is  used as  a  part of  the
    
    71
    +  cross-building system,  the prefix  is expected to  be different
    
    72
    +  from  the self-building  system.  For  example, a  configuration
    
    73
    +  with   `--prefix=/usr/local`   installs    binaries   into   the
    
    74
    +  system-wide `/usr/local` directory, which then can't be executed
    
    75
    +  due  to the  incorrect architecture.   This causes  confusion in
    
    76
    +  configuration of all applications  that use FreeType2.  Instead,
    
    77
    +  use a prefix  to install the cross-build into  a separate system
    
    78
    +  tree, for example, `--prefix=/usr/local/mips-ip22-linux/`.
    
    79
    +
    
    80
    +  On the other hand, if the built  FreeType 2 library is used as a
    
    81
    +  part of the target system,  the prefix to install should reflect
    
    82
    +  the file system structure of the target system.
    
    83
    +
    
    84
    +
    
    85
    +  ### 2.3. Library dependencies
    
    86
    +
    
    87
    +  FreeType normally depends on external libraries like `libpng` or
    
    88
    +  `libharfbuzz`.   The  easiest case  is  to  deactivate all  such
    
    89
    +  dependencies  using the  `--without-XXX` configuration  options.
    
    90
    +  However, if you  want to use those libraries,  you should ensure
    
    91
    +  that  they  are available  both  on  the  target system  and  as
    
    92
    +  (cross-compiled) libraries on the build system.
    
    93
    +
    
    94
    +  FreeType uses  `pkg-config` to find  most of the  libraries; the
    
    95
    +  other libraries it links to  are expected in the standard system
    
    96
    +  directories.   Since the  default pkg-config's  meta-information
    
    97
    +  files (like `harfbuzz.pc`) of the build platform don't work, use
    
    98
    +  one of the two possible solutions below.
    
    99
    +
    
    100
    +    - Use pkg-config's meta-information files that are adjusted to
    
    101
    +      cross-compile  and  cross-link  with the  target  platform's
    
    102
    +      libraries.  Make sure those files are found before the build
    
    103
    +      system's default files.  Example:
    
    104
    +      ```bash
    
    105
    +        ./configure \
    
    106
    +          --build=i386-unknown-freebsd \
    
    107
    +          --host=mips-ip22-linuxelf \
    
    108
    +          PKG_CONFIG_LIBDIR="/usr/local/mips-ip22-linux/lib/pkgconfig" \
    
    109
    +          [other options]
    
    110
    +      ```
    
    111
    +
    
    112
    +      See the manpage of `pkg-config` for more details.
    
    113
    +
    
    114
    +    - Set variables like LIBPNG_LIBS  as additional options to the
    
    115
    +      `configure` script, overriding the values `pkg-config` would
    
    116
    +      provide.  `configure --help` shows the available environment
    
    117
    +      variables.  Example:
    
    118
    +      ```bash
    
    119
    +        ./configure \
    
    120
    +          --build=i386-unknown-freebsd \
    
    121
    +          --host=mips-ip22-linuxelf \
    
    122
    +          LIBPNG_CFLAGS="-I/usr/local/mips-ip22-linux/include" \
    
    123
    +          LIBPNG_LIBS="-L/usr/local/mips-ip22-linux/lib -lpng12" \
    
    124
    +          [other options]
    
    125
    +      ```
    
    126
    +
    
    127
    +
    
    128
    +## 3. Building command
    
    129
    +
    
    130
    +  If  the  configuration  finishes successfully,  invoking  GNU make
    
    131
    +  builds FreeType2.  Just say
    
    132
    +
    
    133
    +    make
    
    134
    +
    
    135
    +  or
    
    136
    +
    
    137
    +    gmake
    
    138
    +
    
    139
    +  depending on the name the GNU make binary actually has.
    
    140
    +
    
    141
    +
    
    142
    +## 4. Installation
    
    143
    +
    
    144
    +  Saying
    
    145
    +
    
    146
    +    make install
    
    147
    +
    
    148
    +  as usual to install FreeType2 into the directory tree specified by
    
    149
    +  the argument of the `--prefix` option.
    
    150
    +
    
    151
    +  As noted in section 2.2,  FreeType2  is sometimes configured to be
    
    152
    +  installed  into the  system directory  of the  target  system, and
    
    153
    +  should  not be installed  in the  cross-building system.   In such
    
    154
    +  cases, the  make variable `DESTDIR`  is useful to change  the root
    
    155
    +  directory in the installation.  For example, after
    
    156
    +
    
    157
    +  ```bash
    
    158
    +  make DESTDIR=/mnt/target_system_root/ install
    
    159
    +  ```
    
    160
    +
    
    161
    +  the built FreeType2 library files are installed into the directory
    
    162
    +  `/mnt/target_system_root/<prefix_in_configure>/lib`.
    
    163
    +
    
    164
    +
    
    165
    +5. TODO
    
    166
    +
    
    167
    +  Cross building between Cygwin (or MSys) and Unix must be tested.
    
    168
    +
    
    169
    +
    
    170
    +```
    
    171
    +Copyright (C) 2006-2023 by
    
    172
    +suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg.
    
    173
    +
    
    174
    +
    
    175
    +This  file is  part of  the FreeType  project, and  may only  be used,
    
    176
    +modified,  and distributed  under the  terms of  the  FreeType project
    
    177
    +license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    178
    +this file you  indicate that you have read  the license and understand
    
    179
    +and accept it fully.
    
    180
    +```
    
    181
    +
    
    182
    +<!---->
    
    183
    +[INSTALL_UNIX.md]: ./INSTALL_UNIX.md

  • docs/INSTALL_GNU.md
    1
    +# Compiling FreeType with GNU Make
    
    2
    +
    
    3
    +This document contains instructions how  to build the FreeType library
    
    4
    +on non-Unix systems with  the help of GNU Make.  Note  that if you are
    
    5
    +running  Cygwin  or  MinGW/MSYS  in Windows,  you  should  follow  the
    
    6
    +instructions in the file [INSTALL_UNIX.md] instead.
    
    7
    +
    
    8
    +
    
    9
    +FreeType 2 includes a powerful and flexible build system that allows
    
    10
    +you to  easily compile it on  a great variety of  platforms from the
    
    11
    +command line.  To do so, just follow these simple instructions.
    
    12
    +
    
    13
    +## 1. Install GNU Make
    
    14
    +
    
    15
    +  The FreeType 2 build system relies on many features special to GNU
    
    16
    +  Make.
    
    17
    +
    
    18
    +  NEARLY ALL OTHER MAKE TOOLS  FAIL, INCLUDING `BSD MAKE`, SO REALLY
    
    19
    +  INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM!
    
    20
    +
    
    21
    +  Note that  make++, a  make tool written  in Perl,  supports enough
    
    22
    +  features of GNU make to compile FreeType.  See
    
    23
    +
    
    24
    +      https://makepp.sourceforge.net
    
    25
    +
    
    26
    +  for more information;  you need version 2.0 or newer, and you must
    
    27
    +  pass option `--norc-substitution`.
    
    28
    +
    
    29
    +  Make sure that you are invoking GNU Make from the command line, by
    
    30
    +  typing something like:
    
    31
    +
    
    32
    +      make -v
    
    33
    +
    
    34
    +  to display its version number.
    
    35
    +
    
    36
    +  VERSION 3.81 OR NEWER IS NEEDED!
    
    37
    +
    
    38
    +
    
    39
    +## 2. Invoke `make`
    
    40
    +
    
    41
    +  Go to  the root  directory of FreeType  2, then simply  invoke GNU
    
    42
    +  Make from the command line.   This will launch the FreeType 2 host
    
    43
    +  platform  detection routines.   A summary  will be  displayed, for
    
    44
    +  example, on Win32.
    
    45
    +      
    
    46
    +
    
    47
    +      FreeType build system -- automatic system detection
    
    48
    +
    
    49
    +      The following settings are used:
    
    50
    +
    
    51
    +        platform                     windows
    
    52
    +        compiler                     gcc
    
    53
    +        configuration directory      .\builds\windows
    
    54
    +        configuration rules          .\builds\windows\w32-gcc.mk
    
    55
    +
    
    56
    +      If this does not correspond to your system or settings please
    
    57
    +      remove the file 'config.mk' from this directory then read the
    
    58
    +      INSTALL file for help.
    
    59
    +
    
    60
    +      Otherwise, simply type 'make' again to build the library
    
    61
    +      or 'make refdoc' to build the API reference (the latter needs
    
    62
    +      Python >= 3.5).
    
    63
    +      
    
    64
    +
    
    65
    +  If the detected settings correspond to your platform and compiler,
    
    66
    +  skip to step 5.  Note that if your platform is completely alien to
    
    67
    +  the build system, the detected platform will be `ansi`.
    
    68
    +
    
    69
    +
    
    70
    +## 3. Configure the build system for a different compiler
    
    71
    +
    
    72
    +  If the build system correctly detected your platform, but you want
    
    73
    +  to use a different compiler  than the one specified in the summary
    
    74
    +  (for most platforms, gcc is the default compiler), invoke GNU Make
    
    75
    +  with
    
    76
    +
    
    77
    +    ```
    
    78
    +    make setup <compiler>
    
    79
    +    ```
    
    80
    +
    
    81
    +  Examples:
    
    82
    +
    
    83
    +  to use Visual C++ on Win32, type:  `make setup visualc`
    
    84
    +
    
    85
    +  to use Borland C++ on Win32, type  `make setup bcc32`
    
    86
    +
    
    87
    +  to use Watcom C++ on Win32, type   `make setup watcom`
    
    88
    +
    
    89
    +  to use Intel C++ on Win32, type    `make setup intelc`
    
    90
    +
    
    91
    +  to use LCC-Win32 on Win32, type:   `make setup lcc`
    
    92
    +
    
    93
    +  to use Watcom C++ on OS/2, type    `make setup watcom`
    
    94
    +
    
    95
    +  to use VisualAge C++ on OS/2, type `make setup visualage`
    
    96
    +
    
    97
    +
    
    98
    +  The  `<compiler>` name to  use is  platform-dependent.  The  list of
    
    99
    +  available  compilers for  your  system is  available  in the  file
    
    100
    +  `builds/<system>/detect.mk`.
    
    101
    +
    
    102
    +  If you  are satisfied  by the new  configuration summary,  skip to
    
    103
    +  step 5.
    
    104
    +
    
    105
    +
    
    106
    +  ### 3a. Use clang instead of gcc
    
    107
    +
    
    108
    +  The `clang`  compiler can  use FreeType's setup  for `gcc`;  it is
    
    109
    +  sufficient to set the `CC` variable, for example
    
    110
    +
    
    111
    +    make CC=clang
    
    112
    +
    
    113
    +
    
    114
    +  ### 3b. Compiling with a C++ compiler
    
    115
    +
    
    116
    +  FreeType can be built with a C++ compiler, for example
    
    117
    +
    
    118
    +    make CC="g++"
    
    119
    +
    
    120
    +  If `clang++` should  be used it is necessary to  also override the
    
    121
    +  `ANSIFLAGS` variable:
    
    122
    +
    
    123
    +    make CC="clang++" ANSIFLAGS=""
    
    124
    +
    
    125
    +
    
    126
    +## 4. Configure the build system for an unknown platform/compiler
    
    127
    +
    
    128
    +  The auto-detection/setup  phase of the build system  copies a file
    
    129
    +  to the current directory under the name `config.mk`.
    
    130
    +
    
    131
    +  For    example,    on    OS/2+gcc,    it   would    simply    copy
    
    132
    +  `builds/os2/os2-gcc.mk` to `./config.mk`.
    
    133
    +
    
    134
    +  If for  some reason your  platform isn't correctly  detected, copy
    
    135
    +  manually the configuration sub-makefile to `./config.mk` and go to
    
    136
    +  step 5.
    
    137
    +
    
    138
    +  Note  that  this file  is  a  sub-Makefile  used to  specify  Make
    
    139
    +  variables  for compiler  and linker  invocation during  the build.
    
    140
    +  You can  easily create your own  version from one  of the existing
    
    141
    +  configuration files,  then copy it to the  current directory under
    
    142
    +  the name `./config.mk`.
    
    143
    +
    
    144
    +
    
    145
    +## 5. Build the library
    
    146
    +
    
    147
    +  The auto-detection/setup  phase should have  copied a file  in the
    
    148
    +  current  directory,  called  `./config.mk`.   This  file  contains
    
    149
    +  definitions of various Make  variables used to invoke the compiler
    
    150
    +  and linker during the build.  [It has also generated a file called
    
    151
    +  `ftmodule.h`   in  the  objects   directory  (which   is  normally
    
    152
    +  `<toplevel>/objs/`);  please read  the  file [docs/CUSTOMIZE][CUSTOMIZE] for
    
    153
    +  customization of FreeType.]
    
    154
    +
    
    155
    +  To  launch  the build,  simply  invoke  GNU  Make again:  The  top
    
    156
    +  Makefile will detect the configuration file and run the build with
    
    157
    +  it.  If you have used variables in  step 3, you must use  the same
    
    158
    +  variables here, too.
    
    159
    +
    
    160
    +
    
    161
    +Final note
    
    162
    +
    
    163
    +  The above instructions build a  _statically_ linked library of the
    
    164
    +  font engine in the `objs` directory.   On Windows, you can build a
    
    165
    +  DLL  either  with  MinGW  (within an  MSYS  shell,  following  the
    
    166
    +  instructions in `INSTALL.UNIX`), or you  use one of the Visual C++
    
    167
    +  project files; see  the  subdirectories  of `builds/windows`.  For
    
    168
    +  everything else,  you are on  your own,  and you might  follow the
    
    169
    +  instructions in `INSTALL.ANY` to create your own Makefiles.
    
    170
    +
    
    171
    +```
    
    172
    +Copyright (C) 2003-2023 by
    
    173
    +David Turner, Robert Wilhelm, and Werner Lemberg.
    
    174
    +
    
    175
    +This  file is  part of  the FreeType  project, and  may only  be used,
    
    176
    +modified,  and distributed  under the  terms of  the  FreeType project
    
    177
    +license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    178
    +this file you  indicate that you have read  the license and understand
    
    179
    +and accept it fully.
    
    180
    +```
    
    181
    +
    
    182
    +<!---->
    
    183
    +[INSTALL_UNIX.md]: ./INSTALL_UNIX.md
    
    184
    +[CUSTOMIZE]: ./CUSTOMIZE

  • docs/INSTALL.MACdocs/INSTALL_MAC.md
    1
    +# Compiling FreeType on Mac OS X
    
    2
    +
    
    1 3
     Please follow the instructions in  INSTALL.UNIX to install FreeType on
    
    2 4
     Mac OS X.
    
    3 5
     
    
    4 6
     Currently  FreeType2 functions  based on  some deprecated  Carbon APIs
    
    5
    -return  `FT_Err_Unimplemented_Feature' always,  even  if FreeType2  is
    
    7
    +return  `FT_Err_Unimplemented_Feature` always,  even  if FreeType2  is
    
    6 8
     configured and  built on  the system that  deprecated Carbon  APIs are
    
    7 9
     available.   To  enable  deprecated  FreeType2  functions  as  far  as
    
    8
    -possible, replace `src/base/ftmac.c' by `builds/mac/ftmac.c'.
    
    10
    +possible, replace `src/base/ftmac.` by `builds/mac/ftmac.c`.
    
    9 11
     
    
    10 12
     Starting with  Mac OS X  10.5, gcc  defaults the deployment  target to
    
    11 13
     10.5.  In previous  versions of Mac OS X, this  defaulted to 10.1.  If
    
    12 14
     you want your built binaries to run only on 10.5, this change does not
    
    13 15
     concern you.  If  you want them to  also run on older  versions of Mac
    
    14 16
     OS  X,   then  you   must  either  set   the  MACOSX_DEPLOYMENT_TARGET
    
    15
    -environment  variable  or  pass `-mmacosx-version-min'  to  gcc.   You
    
    17
    +environment  variable  or  pass `-mmacosx-version-min`  to  gcc.   You
    
    16 18
     should specify the oldest  version of Mac OS you want  the code to run
    
    17 19
     on.  For example, if you use Bourne shell:
    
    18 20
     
    
    21
    +```bash
    
    19 22
       export MACOSX_DEPLOYMENT_TARGET=10.2
    
    23
    +```
    
    20 24
     
    
    21 25
     or, if you use C shell:
    
    22 26
     
    
    27
    +```bash
    
    23 28
       setenv MACOSX_DEPLOYMENT_TARGET 10.2
    
    29
    +```
    
    24 30
     
    
    25
    -Alternatively, you could pass `-mmacosx-version-min=10.2' to gcc.
    
    31
    +Alternatively, you could pass `-mmacosx-version-min=10.2` to gcc.
    
    26 32
     
    
    27 33
     Here the number 10.2 is the lowest version that the built binaries can
    
    28 34
     run on.  In the  above cases, the built binaries will run  on Mac OS X
    

  • docs/INSTALL_UNIX.md
    1
    +# Building FreeType on Unix Systems
    
    2
    +
    
    3
    +This also works for  emulations like Cygwin or MSys on Win32:
    
    4
    +
    
    5
    +
    
    6
    +## 1. Ensure that you are using GNU Make
    
    7
    +
    
    8
    +  The FreeType build system  _exclusively_ works with GNU Make.  You
    
    9
    +  will  not be  able to  compile the  library with  the instructions
    
    10
    +  below using any other alternative (including BSD Make).
    
    11
    +
    
    12
    +  Check that you have GNU make by running the command:
    
    13
    +  ```bash
    
    14
    +  make -v
    
    15
    +  ```
    
    16
    +
    
    17
    +  This should dump some text that begins with:
    
    18
    +
    
    19
    +      GNU Make  <version number>
    
    20
    +      Copyright (C) <year> Free Software Foundation Inc.
    
    21
    +
    
    22
    +  Note that version  3.81 or higher is *required* or the  build will
    
    23
    +  fail.
    
    24
    +
    
    25
    +  It is also fine to have GNU Make under another name (e.g. 'gmake')
    
    26
    +  if you use the MAKE variable as described below.
    
    27
    +
    
    28
    +  As  a  special exception,  'makepp'  can  also  be used  to  build
    
    29
    +  FreeType 2.  See the file `docs/MAKEPP` for details.
    
    30
    +
    
    31
    +  For builds  with `cmake` please check file `CMakeLists.txt`;  this
    
    32
    +  is a contributed file not directly supported by the FreeType team.
    
    33
    +
    
    34
    +
    
    35
    +## 2. Regenerate the configure script if needed
    
    36
    +
    
    37
    +  This only applies if you  are building a git snapshot or checkout,
    
    38
    +  *not* if you grabbed the sources of an official release.
    
    39
    +
    
    40
    +  You  need  to invoke  the  `autogen.sh`  script  in the  top-level
    
    41
    +  directory  in order  to  create the  `configure`  script for  your
    
    42
    +  platform.  Normally, this simply means typing:
    
    43
    +  ```bash
    
    44
    +  sh autogen.sh
    
    45
    +  ```
    
    46
    +
    
    47
    +  In case of problems, you may  need to install or upgrade Automake,
    
    48
    +  Autoconf or Libtool.  See  [INSTALL.md] for more information.
    
    49
    +
    
    50
    +
    
    51
    +## 3. Build and install the library
    
    52
    +
    
    53
    +  Say
    
    54
    +  ```bash
    
    55
    +  ./configure --help
    
    56
    +  ```
    
    57
    +
    
    58
    +  to see  the list of  possible configuration options  and important
    
    59
    +  environment  variables.  The `./configure` script  will detect  some
    
    60
    +  prerequisite  system  libraries  (libpng, brotli, etc.)  if  their
    
    61
    +  headers are available at the default locations.
    
    62
    +
    
    63
    +  The following  should work  on all Unix  systems where  the `make`
    
    64
    +  command invokes GNU Make:
    
    65
    +  ```bash
    
    66
    +  ./configure [options]
    
    67
    +  make
    
    68
    +  make install           (as root)
    
    69
    +  ```
    
    70
    +
    
    71
    +  The default installation path  is `/usr/local`.  It can be changed
    
    72
    +  with the `--prefix=<path>` option.  Example:
    
    73
    +  ```bash
    
    74
    +  ./configure --prefix=/usr
    
    75
    +  ```
    
    76
    +
    
    77
    +  When using  a different command  to invoke GNU Make,  use the MAKE
    
    78
    +  variable.  For example,  if `gmake` is the command  to use on your
    
    79
    +  system, do something like:
    
    80
    +  ```bash
    
    81
    +  MAKE=gmake ./configure [options]
    
    82
    +  gmake
    
    83
    +  gmake install            (as root)
    
    84
    +  ```
    
    85
    +
    
    86
    +  If  this still doesn't  work, there  must be  a problem  with your
    
    87
    +  system (e.g., you are using a very old version of GNU Make).
    
    88
    +
    
    89
    +  For library identification, FreeType's `configure` script uses the
    
    90
    +  `pkg-config` interface: Assuming it  needs library `foo`, it calls
    
    91
    +  the  `pkg-config` program  to find  information on  library `foo`,
    
    92
    +  which in turn  looks for a `foo.pc` file installed  at the system.
    
    93
    +  Some platforms,  however, don't come with  `pkg-support`; you then
    
    94
    +  have  to  use environment  variables  as  described by  `configure
    
    95
    +  --help`.  Example:
    
    96
    +  ```bash
    
    97
    +  LIBPNG_CFLAGS="-I/path/to/libpng/include/directory" \
    
    98
    +  LIBPNG_LIBS="-L/path/to/libpng/lib/directory" \
    
    99
    +  configure ...
    
    100
    +  ```
    
    101
    +  It  is possible  to  compile FreeType  in  a different  directory.
    
    102
    +  Assuming the FreeType source  files in directory `/src/freetype` a
    
    103
    +  compilation in directory `foo` works as follows:
    
    104
    +  ```bash
    
    105
    +  cd foo
    
    106
    +  /src/freetype/configure [options]
    
    107
    +  make
    
    108
    +  make install
    
    109
    +  ```
    
    110
    +
    
    111
    +
    
    112
    +  ### 3.1 Interdependency with HarfBuzz
    
    113
    +
    
    114
    +  Note that there  is a chicken-and-egg problem  currently since the
    
    115
    +  HarfBuzz library  (used by the  auto-hinter to improve  support of
    
    116
    +  OpenType  fonts)  depends on  FreeType,  which  can be  solved  as
    
    117
    +  follows in case HarfBuzz is not yet installed on your system.
    
    118
    +
    
    119
    +  1. Call    FreeType's     `configure`    script     with    option
    
    120
    +      `--without-harfbuzz`, then compile and install FreeType.
    
    121
    +
    
    122
    +  2. Compile and install HarfBuzz.
    
    123
    +
    
    124
    +  3. Call    FreeType's    `configure`   script    without    option
    
    125
    +      `--without-harfbuzz` (after  executing `make  distclean`), then
    
    126
    +      compile and install FreeType again.
    
    127
    +
    
    128
    +
    
    129
    +```
    
    130
    +Copyright (C) 2003-2023 by
    
    131
    +David Turner, Robert Wilhelm, and Werner Lemberg.
    
    132
    +
    
    133
    +This  file is  part of  the FreeType  project, and  may only  be used,
    
    134
    +modified,  and distributed  under the  terms of  the  FreeType project
    
    135
    +license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
    
    136
    +this file you  indicate that you have read  the license and understand
    
    137
    +and accept it fully.
    
    138
    +```
    
    139
    +
    
    140
    +<!---->
    
    141
    +[INSTALL.md]: ./INSTALL.md

  • docs/INSTALL.VMSdocs/INSTALL_VMS.md
    1
    -How to build the FreeType library on VMS
    
    2
    -----------------------------------------
    
    1
    +# How to build the FreeType library on VMS
    
    3 2
     
    
    4 3
     It is actually  very straightforward to install  the FreeType library.
    
    5
    -Just execute `vms_make.com  from` the toplevel directory  to build the
    
    4
    +Just execute `vms_make.com`  from the toplevel directory  to build the
    
    6 5
     library.  This procedure currently accepts the following options:
    
    7 6
     
    
    8 7
     * `DEBUG`
    
    ... ... @@ -25,18 +24,21 @@ To rebuild the sources it is necessary to have MMS/MMK installed on
    25 24
     the system.
    
    26 25
     
    
    27 26
     The library is available in the directory
    
    28
    -
    
    27
    +```
    
    29 28
       [.LIB]
    
    29
    +```
    
    30 30
     
    
    31 31
     To compile applications using FreeType  you have to define the logical
    
    32 32
     `FREETYPE` pointing to the directory
    
    33
    -
    
    33
    +```
    
    34 34
       [.INCLUDE.FREETYPE]
    
    35
    +```
    
    35 36
     
    
    36 37
     i.e., if the directory in which  this `INSTALL.VMS` file is located is
    
    37 38
     `$disk:[freetype.docs]`, then define the logical with
    
    38
    -
    
    39
    +```
    
    39 40
       define freetype $disk:[freetype.include.freetype]
    
    41
    +```
    
    40 42
     
    
    41 43
     See  http://nchrem.tnw.tudelft.nl/openvms/software2.html#Freetype  for
    
    42 44
     the packages FreeType depends on.
    
    ... ... @@ -54,8 +56,7 @@ Orginal version of the build procedures was created by
    54 56
     
    
    55 57
       Martin P.J. Zinser <zinser@zinser.no-ip.info>
    
    56 58
     
    
    57
    -------------------------------------------------------------------------
    
    58
    -
    
    59
    +```
    
    59 60
     Copyright (C) 2000-2023 by
    
    60 61
     David Turner, Robert Wilhelm, and Werner Lemberg.
    
    61 62
     
    
    ... ... @@ -64,6 +65,4 @@ modified, and distributed under the terms of the FreeType project
    64 65
     license, LICENSE.TXT.   By continuing to use, modify, or distribute this
    
    65 66
     file you  indicate that  you have  read the  license and understand  and
    
    66 67
     accept it fully.
    
    67
    -
    
    68
    -
    
    69
    ---- end of INSTALL.VMS ---
    68
    +```

  • docs/MODIFYING.md
    1
    +# Modifying FreeType
    
    2
    +
    
    3
    +FreeType follows a modular architecture, i.e. all the features are
    
    4
    +implemented as separate modules. There are separate modules for 
    
    5
    +rasterizers, font parsers, hinting etc. located under the `src/` directory.
    
    6
    +
    
    7
    +(See https://freetype.org/freetype2/docs/design/design-5.html)
    
    8
    +
    
    9
    +To add new features you have to either modify the existing modules or
    
    10
    +add a new module to FreeType.
    
    11
    +
    
    12
    +## Adding a new module to FreeType
    
    13
    +
    
    14
    +Suppose we want to add a new module "example" to FreeType:
    
    15
    +
    
    16
    +1. Create a directory under `src/` having the same name as the module.
    
    17
    +   i.e. `src/example/`
    
    18
    +
    
    19
    +2. Add source files under src/example having `#define FT_MAKE_OPTION_SINGLE_OBJECT`
    
    20
    +   which includes the other files to create the module.
    
    21
    +
    
    22
    +   (See `src/sdf/sdf.c` for reference)
    
    23
    +
    
    24
    +3. Add the module to `include/freetype/config/ftmodule.h` according to whether
    
    25
    +   it is a renderer, font driver or another module like:
    
    26
    +
    
    27
    +    ```C
    
    28
    +    FT_USE_MODULE( FT_Renderer_Class, ft_example_renderer_class )
    
    29
    +    ```
    
    30
    +
    
    31
    +4. Add the module to `modules.cfg` in the toplevel directory:
    
    32
    +    ```
    
    33
    +    RASTER_MODULES += example
    
    34
    +    ```
    
    35
    +
    
    36
    +5. Under `src/example` add `module.mk` and `rules.mk` files to enable compilation
    
    37
    +   with `make`. (See `src/smooth/rules.mk` for reference).
    
    38
    +
    
    39
    +6. Now you can simply compile by using `make` in the toplevel directory and the module
    
    40
    +   should compile.
    
    41
    +
    
    42
    +   You can check out pre-existing modules for reference under `src/`

  • docs/Raster_Algorithm.md
    1
    +TODO: add details on how the freetype smooth anti-aliasing rasterizer works


  • reply via email to

    [Prev in Thread] Current Thread [Next in Thread]