Anurag Thakur pushed to branch gsoc-anurag-docs-2023 at FreeType / FreeType
Commits:
-
f48a8bc3
by Anurag Thakur at 2023-08-01T14:38:56+05:30
[docs] Migrate Readme to markdown
-
0f2c7e34
by Anurag Thakur at 2023-08-01T14:40:56+05:30
[docs] Migrate docs/INSTALL to Markdown
-
87c0dbeb
by Anurag Thakur at 2023-08-01T14:40:58+05:30
[docs] Migrate all INSTALL files to Markdown
-
4b0bffc9
by Anurag Thakur at 2023-08-01T14:40:58+05:30
[docs] Add documentation on adding new modules to FreeType
-
731b1cf9
by Anurag Thakur at 2023-08-01T14:40:58+05:30
[docs] Add documentation on compiling FreeType on an Android Device
-
7c584d1e
by Anurag Thakur at 2023-08-01T14:40:58+05:30
[docs] Add documentation on FreeType development, benchmarking
-
0b1947ec
by Anurag Thakur at 2023-08-01T14:40:58+05:30
[docs] Add documentation on FreeType smooth raster algorithm
19 changed files:
Changes:
CMakeLists.txt
... |
... |
@@ -654,7 +654,7 @@ endif () |
654
|
654
|
# Packaging
|
655
|
655
|
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
|
656
|
656
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.")
|
657
|
|
-set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
|
|
657
|
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
658
|
658
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT")
|
659
|
659
|
|
660
|
660
|
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
|
README
deleted
1
|
|
-FreeType 2.13.1
|
2
|
|
-===============
|
3
|
|
-
|
4
|
|
-Homepage: https://www.freetype.org
|
5
|
|
-
|
6
|
|
-FreeType is a freely available software library to render fonts.
|
7
|
|
-
|
8
|
|
-It is written in C, designed to be small, efficient, highly
|
9
|
|
-customizable, and portable while capable of producing high-quality
|
10
|
|
-output (glyph images) of most vector and bitmap font formats.
|
11
|
|
-
|
12
|
|
-Please read the `docs/CHANGES` file, it contains IMPORTANT
|
13
|
|
-INFORMATION.
|
14
|
|
-
|
15
|
|
-Read the files `docs/INSTALL*` for installation instructions; see the
|
16
|
|
-file `docs/LICENSE.TXT` for the available licenses.
|
17
|
|
-
|
18
|
|
-For using FreeType's git repository instead of a distribution bundle,
|
19
|
|
-please read file `README.git`. Note that you have to actually clone
|
20
|
|
-the repository; using a snapshot will not work (in other words, don't
|
21
|
|
-use gitlab's 'Download' button).
|
22
|
|
-
|
23
|
|
-The FreeType 2 API reference is located in directory `docs/reference`;
|
24
|
|
-use the file `index.html` as the top entry point. [Please note that
|
25
|
|
-currently the search function for locally installed documentation
|
26
|
|
-doesn't work due to cross-site scripting issues.]
|
27
|
|
-
|
28
|
|
-Additional documentation is available as a separate package from our
|
29
|
|
-sites. Go to
|
30
|
|
-
|
31
|
|
- https://download.savannah.gnu.org/releases/freetype/
|
32
|
|
-
|
33
|
|
-and download one of the following files.
|
34
|
|
-
|
35
|
|
- freetype-doc-2.13.1.tar.xz
|
36
|
|
- freetype-doc-2.13.1.tar.gz
|
37
|
|
- ftdoc2131.zip
|
38
|
|
-
|
39
|
|
-To view the documentation online, go to
|
40
|
|
-
|
41
|
|
- https://www.freetype.org/freetype2/docs/
|
42
|
|
-
|
43
|
|
-
|
44
|
|
-Mailing Lists
|
45
|
|
--------------
|
46
|
|
-
|
47
|
|
-The preferred way of communication with the FreeType team is using
|
48
|
|
-e-mail lists.
|
49
|
|
-
|
50
|
|
- general use and discussion: freetype@nongnu.org
|
51
|
|
- engine internals, porting, etc.: freetype-devel@nongnu.org
|
52
|
|
- announcements: freetype-announce@nongnu.org
|
53
|
|
- git repository tracker: freetype-commit@nongnu.org
|
54
|
|
-
|
55
|
|
-The lists are moderated; see
|
56
|
|
-
|
57
|
|
- https://www.freetype.org/contact.html
|
58
|
|
-
|
59
|
|
-how to subscribe.
|
60
|
|
-
|
61
|
|
-
|
62
|
|
-Bugs
|
63
|
|
-----
|
64
|
|
-
|
65
|
|
-Please submit bug reports at
|
66
|
|
-
|
67
|
|
- https://gitlab.freedesktop.org/freetype/freetype/-/issues
|
68
|
|
-
|
69
|
|
-Alternatively, you might report bugs by e-mail to
|
70
|
|
-`freetype-devel@nongnu.org`. Don't forget to send a detailed
|
71
|
|
-explanation of the problem -- there is nothing worse than receiving a
|
72
|
|
-terse message that only says 'it doesn't work'.
|
73
|
|
-
|
74
|
|
-
|
75
|
|
-Patches
|
76
|
|
--------
|
77
|
|
-
|
78
|
|
-For larger changes please provide merge requests at
|
79
|
|
-
|
80
|
|
- https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests
|
81
|
|
-
|
82
|
|
-Alternatively, you can send patches to the `freetype-devel@nongnu.org`
|
83
|
|
-mailing list -- and thank you in advance for your work on improving
|
84
|
|
-FreeType!
|
85
|
|
-
|
86
|
|
-Details on the process can be found here:
|
87
|
|
-
|
88
|
|
- https://www.freetype.org/developer.html#patches
|
89
|
|
-
|
90
|
|
-
|
91
|
|
-Enjoy!
|
92
|
|
-
|
93
|
|
- The FreeType Team
|
94
|
|
-
|
95
|
|
-----------------------------------------------------------------------
|
96
|
|
-
|
97
|
|
-Copyright (C) 2006-2023 by
|
98
|
|
-David Turner, Robert Wilhelm, and Werner Lemberg.
|
99
|
|
-
|
100
|
|
-This file is part of the FreeType project, and may only be used,
|
101
|
|
-modified, and distributed under the terms of the FreeType project
|
102
|
|
-license, LICENSE.TXT. By continuing to use, modify, or distribute
|
103
|
|
-this file you indicate that you have read the license and understand
|
104
|
|
-and accept it fully.
|
105
|
|
-
|
106
|
|
-
|
107
|
|
---- end of README --- |
README.git
deleted
1
|
|
-README.git
|
2
|
|
-==========
|
3
|
|
-
|
4
|
|
-
|
5
|
|
-repository issues
|
6
|
|
------------------
|
7
|
|
-
|
8
|
|
-FreeType's official repository site is
|
9
|
|
-
|
10
|
|
- https://gitlab.freedesktop.org/freetype ,
|
11
|
|
-
|
12
|
|
-from which the 'freetype.git' and 'freetype-demos.git' repositories
|
13
|
|
-can be cloned in the usual way.
|
14
|
|
-
|
15
|
|
- git clone https://gitlab.freedesktop.org/freetype/freetype.git
|
16
|
|
- git clone https://gitlab.freedesktop.org/freetype/freetype-demos.git
|
17
|
|
-
|
18
|
|
-If you want to use the Savannah mirror instead, you have to do a
|
19
|
|
-slightly different incantation because the repository names contain
|
20
|
|
-digit '2' for historical reasons.
|
21
|
|
-
|
22
|
|
- git clone \
|
23
|
|
- https://git.savannah.nongnu.org/git/freetype/freetype2.git \
|
24
|
|
- freetype
|
25
|
|
- git clone \
|
26
|
|
- https://git.savannah.nongnu.org/git/freetype/freetype2-demos.git \
|
27
|
|
- freetype-demos
|
28
|
|
-
|
29
|
|
-
|
30
|
|
-standard builds with `configure`
|
31
|
|
---------------------------------
|
32
|
|
-
|
33
|
|
-The git repository doesn't contain pre-built configuration scripts for
|
34
|
|
-UNIXish platforms. To generate them say
|
35
|
|
-
|
36
|
|
- sh autogen.sh
|
37
|
|
-
|
38
|
|
-which in turn depends on the following packages:
|
39
|
|
-
|
40
|
|
- automake (1.10.1)
|
41
|
|
- libtool (2.2.4)
|
42
|
|
- autoconf (2.62)
|
43
|
|
-
|
44
|
|
-The versions given in parentheses are known to work. Newer versions
|
45
|
|
-should work too, of course. Note that `autogen.sh` also sets up
|
46
|
|
-proper file permissions for the `configure` and auxiliary scripts.
|
47
|
|
-
|
48
|
|
-The `autogen.sh` script checks whether the versions of the above three
|
49
|
|
-tools match the numbers above. Otherwise it will complain and suggest
|
50
|
|
-either upgrading or using environment variables to point to more
|
51
|
|
-recent versions of the required tools.
|
52
|
|
-
|
53
|
|
-Note that `aclocal` is provided by the 'automake' package on Linux,
|
54
|
|
-and that `libtoolize` is called `glibtoolize` on Darwin (OS X).
|
55
|
|
-
|
56
|
|
-
|
57
|
|
-alternative build methods
|
58
|
|
--------------------------
|
59
|
|
-
|
60
|
|
-For static builds that don't use platform-specific optimizations, no
|
61
|
|
-configure script is necessary at all; saying
|
62
|
|
-
|
63
|
|
- make setup ansi
|
64
|
|
- make
|
65
|
|
-
|
66
|
|
-should work on all platforms that have GNU `make` (or `makepp`).
|
67
|
|
-
|
68
|
|
-A build with `cmake` or `meson` can be done directly from the git
|
69
|
|
-repository. However, if you want to use the `FT_DEBUG_LOGGING` macro
|
70
|
|
-(see file `docs/DEBUG` for more information) it is currently mandatory
|
71
|
|
-to execute `autogen.sh` in advance; this script clones the 'dlg' git
|
72
|
|
-submodule and copies some files into FreeType's source tree.
|
73
|
|
-
|
74
|
|
-
|
75
|
|
-Code of Conduct
|
76
|
|
----------------
|
77
|
|
-
|
78
|
|
-Please note that this project is released with a Contributor Code of
|
79
|
|
-Conduct (CoC). By participating in this project you agree to abide by
|
80
|
|
-its terms, which you can find in the following link:
|
81
|
|
-
|
82
|
|
- https://www.freedesktop.org/wiki/CodeOfConduct
|
83
|
|
-
|
84
|
|
-CoC issues may be raised to the project maintainers at the following
|
85
|
|
-address:
|
86
|
|
-
|
87
|
|
- wl@gnu.org
|
88
|
|
- apodtele@gmail.com
|
89
|
|
-
|
90
|
|
-----------------------------------------------------------------------
|
91
|
|
-
|
92
|
|
-Copyright (C) 2005-2023 by
|
93
|
|
-David Turner, Robert Wilhelm, and Werner Lemberg.
|
94
|
|
-
|
95
|
|
-This file is part of the FreeType project, and may only be used,
|
96
|
|
-modified, and distributed under the terms of the FreeType project
|
97
|
|
-license, LICENSE.TXT. By continuing to use, modify, or distribute
|
98
|
|
-this file you indicate that you have read the license and understand
|
99
|
|
-and accept it fully.
|
100
|
|
-
|
101
|
|
-
|
102
|
|
---- end of README.git --- |
README.md
|
1
|
+# FreeType ![Badge Version]
|
|
2
|
+
|
|
3
|
+*A freely available software library to render fonts.*
|
|
4
|
+
|
|
5
|
+---
|
|
6
|
+
|
|
7
|
+ **[❮ Website ❯][Website]**
|
|
8
|
+ **[❮ Install ❯][INSTALL]**
|
|
9
|
+ **[❮ Changes ❯][CHANGES]**
|
|
10
|
+ **[❮ Documentation ❯][Documentation]**
|
|
11
|
+ **[❮ API ❯][API]**
|
|
12
|
+ **[❮ License ❯][LICENSE]**
|
|
13
|
+
|
|
14
|
+---
|
|
15
|
+
|
|
16
|
+**FreeType** is a **C** library, designed to be small, efficient, highly
|
|
17
|
+customizable, and portable while capable of producing high-quality
|
|
18
|
+output (glyph images) of most vector and bitmap font formats.
|
|
19
|
+
|
|
20
|
+---
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+# Documentation
|
|
24
|
+The FreeType 2 API reference for the latest release, along with additional
|
|
25
|
+documentation can be found online at:
|
|
26
|
+
|
|
27
|
+>https://freetype.org/freetype2/docs/documentation.html
|
|
28
|
+
|
|
29
|
+Refer to [DOCGUIDE] for more information.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+# Repo Mirrors
|
|
33
|
+
|
|
34
|
+FreeType's official git repository is located at
|
|
35
|
+
|
|
36
|
+>https://gitlab.freedesktop.org/freetype
|
|
37
|
+
|
|
38
|
+from which the 'freetype.git' and 'freetype-demos.git' repositories
|
|
39
|
+can be cloned in the usual way.
|
|
40
|
+
|
|
41
|
+FreeType:
|
|
42
|
+
|
|
43
|
+```bash
|
|
44
|
+git clone https://gitlab.freedesktop.org/freetype/freetype.git
|
|
45
|
+```
|
|
46
|
+
|
|
47
|
+FreeType-demos:
|
|
48
|
+```bash
|
|
49
|
+git clone https://gitlab.freedesktop.org/freetype/freetype-demos.git
|
|
50
|
+```
|
|
51
|
+
|
|
52
|
+If you want to use the Savannah mirror instead, you have to do a
|
|
53
|
+slightly different incantation because the repository names contain
|
|
54
|
+digit '2' for historical reasons.
|
|
55
|
+
|
|
56
|
+```bash
|
|
57
|
+git clone https://git.savannah.nongnu.org/git/freetype/freetype2.git
|
|
58
|
+```
|
|
59
|
+
|
|
60
|
+```bash
|
|
61
|
+git clone https://git.savannah.nongnu.org/git/freetype/freetype2-demos.git
|
|
62
|
+```
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+# Compiling FreeType
|
|
66
|
+FreeType supports compilation via meson, GNU make and CMake
|
|
67
|
+
|
|
68
|
+Refer to [INSTALL] for more information.
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+# Licensing
|
|
72
|
+FreeType is dual-licensed under the FTL and GPLv2.
|
|
73
|
+
|
|
74
|
+Refer to [LICENSE] for more information.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+# Reporting Issues
|
|
78
|
+Please submit bug reports at
|
|
79
|
+
|
|
80
|
+>https://gitlab.freedesktop.org/freetype/freetype/-/issues
|
|
81
|
+
|
|
82
|
+If you have suggestions for improving FreeType, they should be sent
|
|
83
|
+to the `freetype-devel` mailing list.
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+# Improving FreeType
|
|
87
|
+For instructions on compiling FreeType, see [INSTALL].
|
|
88
|
+
|
|
89
|
+Please send merge requests to our gitlab repo at:
|
|
90
|
+
|
|
91
|
+>https://gitlab.freedesktop.org/freetype/freetype/
|
|
92
|
+
|
|
93
|
+Alternatively, you can send patches to the `freetype-devel` mailing list.
|
|
94
|
+Details on the process can be found here:
|
|
95
|
+
|
|
96
|
+>https://www.freetype.org/developer.html#patches
|
|
97
|
+
|
|
98
|
+Any non-trivial contribution should first be discussed with the maintainers
|
|
99
|
+via the `freetype-devel` mailing list.
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+# Contact
|
|
103
|
+The preferred way of communication with the FreeType team is using
|
|
104
|
+mailing lists.
|
|
105
|
+
|
|
106
|
+*↳* [*How do I subscribe?*][Contact]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+| Email | Details |
|
|
110
|
+|------------------------------|-------------------------------|
|
|
111
|
+| freetype@nongnu.org | General use and discussion |
|
|
112
|
+| freetype-devel@nongnu.org | Engine internals, Porting etc |
|
|
113
|
+| freetype-announce@nongnu.org | Announcements |
|
|
114
|
+| freetype-commit@nongnu.org | Git repository track |
|
|
115
|
+
|
|
116
|
+**The lists are moderated**
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+# Code of Conduct
|
|
120
|
+Please note that this project is released with a Contributor Code of
|
|
121
|
+Conduct (CoC). By participating in this project you agree to abide by
|
|
122
|
+its terms, which you can find in the following link:
|
|
123
|
+
|
|
124
|
+>https://www.freedesktop.org/wiki/CodeOfConduct
|
|
125
|
+
|
|
126
|
+CoC issues may be raised to the project maintainers at the following
|
|
127
|
+address:
|
|
128
|
+
|
|
129
|
+ - wl@gnu.org
|
|
130
|
+ - apodtele@gmail.com
|
|
131
|
+
|
|
132
|
+---
|
|
133
|
+```
|
|
134
|
+Copyright (C) 2006-2023 by
|
|
135
|
+David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
136
|
+
|
|
137
|
+This file is part of the FreeType project, and may only be used,
|
|
138
|
+modified, and distributed under the terms of the FreeType project
|
|
139
|
+license, LICENSE.TXT. By continuing to use, modify, or distribute
|
|
140
|
+this file you indicate that you have read the license and understand
|
|
141
|
+and accept it fully.
|
|
142
|
+```
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+<!-------------------------------------------------------------------------->
|
|
146
|
+
|
|
147
|
+[Website]: https://www.freetype.org
|
|
148
|
+[Issues]: https://gitlab.freedesktop.org/freetype/freetype/-/issues
|
|
149
|
+[Contact]: https://www.freetype.org/contact.html
|
|
150
|
+[Merge Request]: https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests
|
|
151
|
+[Patches]: https://www.freetype.org/developer.html#patches
|
|
152
|
+[Documentation]: https://freetype.org/freetype2/docs/documentation.html
|
|
153
|
+[Releases]: https://download.savannah.gnu.org/releases/freetype/
|
|
154
|
+[API]: https://freetype.org/freetype2/docs/reference/index.html
|
|
155
|
+
|
|
156
|
+[INSTALL]: ./docs/INSTALL.md
|
|
157
|
+[CHANGES]: ./docs/CHANGES
|
|
158
|
+[LICENSE]: ./LICENSE.TXT
|
|
159
|
+[DOCGUIDE]: ./docs/DOCGUIDE
|
|
160
|
+
|
|
161
|
+[Badge Version]: https://gitlab.freedesktop.org/freetype/freetype/-/badges/release.svg |
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.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
→
docs/INSTALL.md
|
1
|
+# Building FreeType
|
1
|
2
|
|
2
|
3
|
There are several ways to build the FreeType library, depending on
|
3
|
4
|
your system and the level of customization you need. Here is a short
|
4
|
5
|
overview of the documentation available:
|
5
|
6
|
|
6
|
7
|
|
7
|
|
-I. Prerequisites and dependencies
|
8
|
|
-=================================
|
|
8
|
+## A. Prerequisites and dependencies
|
9
|
9
|
|
10
|
10
|
FreeType is a low level C library that only depends on the standard
|
11
|
11
|
C library with very few platform-dependent optimizations utilized at
|
... |
... |
@@ -24,23 +24,22 @@ I. Prerequisites and dependencies |
24
|
24
|
run-time; look at the documentation of function `FT_Property_Set`.
|
25
|
25
|
|
26
|
26
|
|
27
|
|
-II. Normal installation and upgrades
|
28
|
|
-====================================
|
|
27
|
+## B. Normal installation and upgrades
|
29
|
28
|
|
30
|
|
- 1. Unix and Unix-like systems
|
|
29
|
+1. Unix and Unix-like systems
|
31
|
30
|
|
32
|
31
|
This also includes MacOS, Cygwin, MinGW + MSYS, Mingw-w64 + MSYS2,
|
33
|
32
|
and possibly other, similar environments.
|
34
|
33
|
|
35
|
|
- Please read `INSTALL.UNIX` to install or upgrade FreeType 2 on a
|
|
34
|
+ Please read [INSTALL.UNIX] to install or upgrade FreeType 2 on a
|
36
|
35
|
Unix system. Note that you *need* GNU Make for automatic
|
37
|
36
|
compilation, since other make tools won't work (this includes BSD
|
38
|
37
|
Make).
|
39
|
38
|
|
40
|
|
- GNU Make VERSION 3.81 OR NEWER IS NEEDED!
|
|
39
|
+ **GNU Make VERSION 3.81 OR NEWER IS NEEDED!**
|
41
|
40
|
|
42
|
41
|
|
43
|
|
- 2. Other systems using GNU Make
|
|
42
|
+2. Other systems using GNU Make
|
44
|
43
|
|
45
|
44
|
On some non-Unix platforms, it is possible to build the library
|
46
|
45
|
using only the GNU Make utility. Note that *NO OTHER MAKE TOOL
|
... |
... |
@@ -48,22 +47,24 @@ II. Normal installation and upgrades |
48
|
47
|
Windows, OS/2, and BeOS, including MinGW* (without MSYS*), Visual
|
49
|
48
|
C++, Borland C++, and more.
|
50
|
49
|
|
51
|
|
- Instructions are provided in the file `INSTALL.GNU`.
|
|
50
|
+ Instructions are provided in the file [INSTALL.GNU].
|
52
|
51
|
|
53
|
52
|
|
54
|
|
- 3. Other build tools and platforms.
|
|
53
|
+3. Other build tools and platforms.
|
55
|
54
|
|
56
|
55
|
A few other tools can be used to build FreeType. You can find
|
57
|
56
|
the corresponding instruction files in the FreeType root folder
|
58
|
57
|
or the builds/ sub-folder.
|
59
|
58
|
|
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`
|
|
59
|
+ |Build Tool | Details |
|
|
60
|
+ | --- | --- |
|
|
61
|
+ |CMake | see [CMakeLists.txt] for more information |
|
|
62
|
+ |Meson | see [meson.build] for more information |
|
|
63
|
+ |MSBuild | see [freetype.vcxproj] |
|
|
64
|
+ |MMS | see [vms_make.com] and [INSTALL.VMS] |
|
64
|
65
|
|
65
|
66
|
|
66
|
|
- 4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
|
|
67
|
+4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
|
67
|
68
|
|
68
|
69
|
We provide a small number of 'project files' for various IDEs to
|
69
|
70
|
automatically build the library as well. Note that these files
|
... |
... |
@@ -74,22 +75,63 @@ II. Normal installation and upgrades |
74
|
75
|
directory, where <system> stands for your OS or environment.
|
75
|
76
|
|
76
|
77
|
|
77
|
|
- 5. From you own IDE, or own Makefiles
|
|
78
|
+5. From you own IDE, or own Makefiles
|
78
|
79
|
|
79
|
80
|
If you want to create your own project file, follow the
|
80
|
|
- instructions given in the `INSTALL.ANY` document of this
|
|
81
|
+ instructions given in the [INSTALL.ANY] document of this
|
81
|
82
|
directory.
|
82
|
83
|
|
83
|
84
|
|
84
|
|
-III. Custom builds of the library
|
85
|
|
-=================================
|
|
85
|
+## C. Custom builds of the library
|
86
|
86
|
|
87
|
87
|
Customizing the compilation of FreeType is easy, and allows you to
|
88
|
88
|
select only the components of the font engine that you really need.
|
89
|
|
- For more details read the file `CUSTOMIZE`.
|
|
89
|
+ For more details read the file [docs/CUSTOMIZE][CUSTOMIZE].
|
90
|
90
|
|
|
91
|
+## D. Standard builds with `configure`
|
91
|
92
|
|
92
|
|
-----------------------------------------------------------------------
|
|
93
|
+ The git repository doesn't contain pre-built configuration scripts for
|
|
94
|
+ UNIXish platforms. To generate them say
|
|
95
|
+
|
|
96
|
+ sh autogen.sh
|
|
97
|
+
|
|
98
|
+ which in turn depends on the following packages:
|
|
99
|
+
|
|
100
|
+ automake (1.10.1)
|
|
101
|
+ libtool (2.2.4)
|
|
102
|
+ autoconf (2.62)
|
|
103
|
+
|
|
104
|
+ The versions given in parentheses are known to work. Newer versions
|
|
105
|
+ should work too, of course. Note that `autogen.sh` also sets up
|
|
106
|
+ proper file permissions for the `configure` and auxiliary scripts.
|
|
107
|
+
|
|
108
|
+ The `autogen.sh` script checks whether the versions of the above three
|
|
109
|
+ tools match the numbers above. Otherwise it will complain and suggest
|
|
110
|
+ either upgrading or using environment variables to point to more
|
|
111
|
+ recent versions of the required tools.
|
|
112
|
+
|
|
113
|
+ Note that `aclocal` is provided by the 'automake' package on Linux,
|
|
114
|
+ and that `libtoolize` is called `glibtoolize` on Darwin (OS X).
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+## E. Alternative build methods
|
|
118
|
+
|
|
119
|
+ For static builds that don't use platform-specific optimizations, no
|
|
120
|
+ configure script is necessary at all; saying
|
|
121
|
+
|
|
122
|
+ make setup ansi
|
|
123
|
+ make
|
|
124
|
+
|
|
125
|
+ should work on all platforms that have GNU `make` (or `makepp`).
|
|
126
|
+
|
|
127
|
+ A build with `cmake` or `meson` can be done directly from the git
|
|
128
|
+ repository. However, if you want to use the `FT_DEBUG_LOGGING` macro
|
|
129
|
+ (see file [docs/DEBUG][DEBUG] for more information) it is currently mandatory
|
|
130
|
+ to execute `autogen.sh` in advance; this script clones the 'dlg' git
|
|
131
|
+ submodule and copies some files into FreeType's source tree.
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+---
|
93
|
135
|
|
94
|
136
|
[1] make++, a make tool written in Perl, has sufficient support of GNU
|
95
|
137
|
make extensions to build FreeType. See
|
... |
... |
@@ -99,7 +141,7 @@ III. Custom builds of the library |
99
|
141
|
for more information; you need version 2.0 or newer, and you must
|
100
|
142
|
pass option `--norc-substitution`.
|
101
|
143
|
|
102
|
|
-----------------------------------------------------------------------
|
|
144
|
+---
|
103
|
145
|
|
104
|
146
|
Copyright (C) 2000-2023 by
|
105
|
147
|
David Turner, Robert Wilhelm, and Werner Lemberg.
|
... |
... |
@@ -110,5 +152,15 @@ license, LICENSE.TXT. By continuing to use, modify, or distribute |
110
|
152
|
this file you indicate that you have read the license and understand
|
111
|
153
|
and accept it fully.
|
112
|
154
|
|
113
|
|
-
|
114
|
|
---- end of INSTALL --- |
|
155
|
+<!----------------------------------------------------------------------------->
|
|
156
|
+
|
|
157
|
+[CMakeLists.txt]: ../CMakeLists.txt
|
|
158
|
+[meson.build]: ../meson.build
|
|
159
|
+[freetype.vcxproj]: ../builds/windows/vc2010/freetype.vcxproj
|
|
160
|
+[vms_make.com]: ../vms_make.com
|
|
161
|
+[INSTALL.VMS]: ./INSTALL.VMS
|
|
162
|
+[INSTALL.ANY]: ./INSTALL.ANY
|
|
163
|
+[INSTALL.GNU]: ./INSTALL.GNU
|
|
164
|
+[INSTALL.UNIX]: ./INSTALL.UNIX
|
|
165
|
+[CUSTOMIZE]: ./CUSTOMIZE
|
|
166
|
+[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.ANY
→
docs/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.MAC
→
docs/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.VMS
→
docs/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 |
|