Skip to content
Permalink
Browse files
Fully remove bitmap font support (#11863)
Freetype is now a build requirement.
  • Loading branch information
sfan5 committed Jan 8, 2022
1 parent bf22569 commit 76dbd0d2d04712dcad4f7c6afecb97fa8d662d6d
Showing with 71 additions and 319 deletions.
  1. +0 −23 .github/workflows/build.yml
  2. +8 −10 README.md
  3. +0 −1 android/native/jni/Android.mk
  4. +3 −13 builtin/settingtypes.txt
  5. +0 −1 doc/Doxyfile.in
  6. BIN fonts/mono_dejavu_sans_10.xml
  7. BIN fonts/mono_dejavu_sans_100.png
  8. BIN fonts/mono_dejavu_sans_11.xml
  9. BIN fonts/mono_dejavu_sans_110.png
  10. BIN fonts/mono_dejavu_sans_12.xml
  11. BIN fonts/mono_dejavu_sans_120.png
  12. BIN fonts/mono_dejavu_sans_14.xml
  13. BIN fonts/mono_dejavu_sans_140.png
  14. BIN fonts/mono_dejavu_sans_16.xml
  15. BIN fonts/mono_dejavu_sans_160.png
  16. BIN fonts/mono_dejavu_sans_18.xml
  17. BIN fonts/mono_dejavu_sans_180.png
  18. BIN fonts/mono_dejavu_sans_20.xml
  19. BIN fonts/mono_dejavu_sans_200.png
  20. BIN fonts/mono_dejavu_sans_22.xml
  21. BIN fonts/mono_dejavu_sans_220.png
  22. BIN fonts/mono_dejavu_sans_24.xml
  23. BIN fonts/mono_dejavu_sans_240.png
  24. BIN fonts/mono_dejavu_sans_26.xml
  25. BIN fonts/mono_dejavu_sans_260.png
  26. BIN fonts/mono_dejavu_sans_28.xml
  27. BIN fonts/mono_dejavu_sans_280.png
  28. BIN fonts/mono_dejavu_sans_4.xml
  29. BIN fonts/mono_dejavu_sans_40.png
  30. BIN fonts/mono_dejavu_sans_6.xml
  31. BIN fonts/mono_dejavu_sans_60.png
  32. BIN fonts/mono_dejavu_sans_8.xml
  33. BIN fonts/mono_dejavu_sans_80.png
  34. BIN fonts/mono_dejavu_sans_9.xml
  35. BIN fonts/mono_dejavu_sans_90.png
  36. +16 −33 src/CMakeLists.txt
  37. +20 −133 src/client/fontengine.cpp
  38. +2 −7 src/client/fontengine.h
  39. +0 −1 src/cmake_config.h.in
  40. +0 −1 src/constants.h
  41. +1 −10 src/defaultsettings.cpp
  42. +4 −10 src/gui/guiChatConsole.cpp
  43. +8 −15 src/gui/guiHyperText.cpp
  44. +6 −5 src/gui/guiHyperText.h
  45. +1 −6 src/irrlicht_changes/CMakeLists.txt
  46. +2 −11 src/irrlicht_changes/static_text.cpp
  47. +0 −36 src/irrlicht_changes/static_text.h
  48. +0 −1 src/version.cpp
  49. +0 −1 util/buildbot/buildwin32.sh
  50. +0 −1 util/buildbot/buildwin64.sh
@@ -150,29 +150,6 @@ jobs:
run: |
./bin/minetestserver --run-unittests
# Build without freetype (client-only)
clang_9_no_freetype:
name: "clang_9 (FREETYPE=0)"
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Install deps
run: |
source ./util/ci/common.sh
install_linux_deps clang-9
- name: Build
run: |
./util/ci/build.sh
env:
CC: clang-9
CXX: clang++-9
CMAKE_FLAGS: "-DENABLE_FREETYPE=0 -DBUILD_SERVER=0"

- name: Test
run: |
./bin/minetest --run-unittests
docker:
name: "Docker image"
runs-on: ubuntu-18.04
@@ -135,15 +135,16 @@ Compiling
| GCC | 4.9+ | Can be replaced with Clang 3.4+ |
| CMake | 3.5+ | |
| IrrlichtMt | - | Custom version of Irrlicht, see https://github.com/minetest/irrlicht |
| SQLite3 | 3.0+ | |
| Freetype | 2.0+ | |
| SQLite3 | 3+ | |
| Zstd | 1.0+ | |
| LuaJIT | 2.0+ | Bundled Lua 5.1 is used if not present |
| GMP | 5.0.0+ | Bundled mini-GMP is used if not present |
| JsonCPP | 1.0.0+ | Bundled JsonCPP is used if not present |

For Debian/Ubuntu users:

sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev libzstd-dev
sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev libzstd-dev libluajit-5.1-dev

For Fedora users:

@@ -247,7 +248,6 @@ General options and their default values:
MinSizeRel - Release build with -Os passed to compiler to make executable as small as possible
ENABLE_CURL=ON - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http
ENABLE_CURSES=ON - Build with (n)curses; Enables a server side terminal (command line option: --terminal)
ENABLE_FREETYPE=ON - Build with FreeType2; Allows using TTF fonts
ENABLE_GETTEXT=ON - Build with Gettext; Allows using translations
ENABLE_GLES=OFF - Build for OpenGL ES instead of OpenGL (requires support by IrrlichtMt)
ENABLE_LEVELDB=ON - Build with LevelDB; Enables use of LevelDB map backend
@@ -273,10 +273,10 @@ Library specific options:
EGL_INCLUDE_DIR - Only if building with GLES; directory that contains egl.h
EGL_LIBRARY - Only if building with GLES; path to libEGL.a/libEGL.so
EXTRA_DLL - Only on Windows; optional paths to additional DLLs that should be packaged
FREETYPE_INCLUDE_DIR_freetype2 - Only if building with FreeType 2; directory that contains an freetype directory with files such as ftimage.h in it
FREETYPE_INCLUDE_DIR_ft2build - Only if building with FreeType 2; directory that contains ft2build.h
FREETYPE_LIBRARY - Only if building with FreeType 2; path to libfreetype.a/libfreetype.so/freetype.lib
FREETYPE_DLL - Only if building with FreeType 2 on Windows; path to libfreetype.dll
FREETYPE_INCLUDE_DIR_freetype2 - Directory that contains files such as ftimage.h
FREETYPE_INCLUDE_DIR_ft2build - Directory that contains ft2build.h
FREETYPE_LIBRARY - Path to libfreetype.a/libfreetype.so/freetype.lib
FREETYPE_DLL - Only on Windows; path to libfreetype-6.dll
GETTEXT_DLL - Only when building with gettext on Windows; paths to libintl + libiconv DLLs
GETTEXT_INCLUDE_DIR - Only when building with gettext; directory that contains iconv.h
GETTEXT_LIBRARY - Only when building with gettext on Windows; path to libintl.dll.a
@@ -337,7 +337,6 @@ vcpkg install zlib zstd curl[winssl] openal-soft libvorbis libogg libjpeg-turbo
- **Don't forget about IrrlichtMt.** The easiest way is to clone it to `lib/irrlichtmt` as described in the Linux section.
- `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store.
- `openal-soft`, `libvorbis` and `libogg` are optional, but required to use sound.
- `freetype` is optional, it allows true-type font rendering.
- `luajit` is optional, it replaces the integrated Lua interpreter with a faster just-in-time interpreter.
- `gmp` and `jsoncpp` are optional, otherwise the bundled versions will be compiled

@@ -429,8 +428,7 @@ cmake .. \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DCMAKE_INSTALL_PREFIX=../build/macos/ \
-DRUN_IN_PLACE=FALSE \
-DENABLE_FREETYPE=TRUE -DENABLE_GETTEXT=TRUE
-DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE
make -j$(nproc)
make install
@@ -91,7 +91,6 @@ LOCAL_CFLAGS += \
-DENABLE_GLES=1 \
-DUSE_CURL=1 \
-DUSE_SOUND=1 \
-DUSE_FREETYPE=1 \
-DUSE_LEVELDB=0 \
-DUSE_LUAJIT=1 \
-DUSE_GETTEXT=1 \
@@ -886,10 +886,6 @@ tooltip_show_delay (Tooltip delay) int 400
# Append item name to tooltip.
tooltip_append_itemname (Append item name) bool false

# Whether FreeType fonts are used, requires FreeType support to be compiled in.
# If disabled, bitmap and XML vectors fonts are used instead.
freetype (FreeType fonts) bool true

font_bold (Font bold by default) bool false

font_italic (Font italic by default) bool false
@@ -909,9 +905,7 @@ font_size (Font size) int 16 1
# sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
font_size_divisible_by (Font size divisible by) int 1 1

# Path to the default font.
# If “freetype” setting is enabled: Must be a TrueType font.
# If “freetype” setting is disabled: Must be a bitmap or XML vectors font.
# Path to the default font. Must be a TrueType font.
# The fallback font will be used if the font cannot be loaded.
font_path (Regular font path) filepath fonts/Arimo-Regular.ttf

@@ -928,19 +922,15 @@ mono_font_size (Monospace font size) int 16 1
# sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
mono_font_size_divisible_by (Monospace font size divisible by) int 1 1

# Path to the monospace font.
# If “freetype” setting is enabled: Must be a TrueType font.
# If “freetype” setting is disabled: Must be a bitmap or XML vectors font.
# Path to the monospace font. Must be a TrueType font.
# This font is used for e.g. the console and profiler screen.
mono_font_path (Monospace font path) filepath fonts/Cousine-Regular.ttf

mono_font_path_bold (Bold monospace font path) filepath fonts/Cousine-Bold.ttf
mono_font_path_italic (Italic monospace font path) filepath fonts/Cousine-Italic.ttf
mono_font_path_bold_italic (Bold and italic monospace font path) filepath fonts/Cousine-BoldItalic.ttf

# Path of the fallback font.
# If “freetype” setting is enabled: Must be a TrueType font.
# If “freetype” setting is disabled: Must be a bitmap or XML vectors font.
# Path of the fallback font. Must be a TrueType font.
# This font will be used for certain languages or if the default font is unavailable.
fallback_font_path (Fallback font path) filepath fonts/DroidSansFallbackFull.ttf

@@ -16,7 +16,6 @@ PREDEFINED = "USE_SPATIAL=1" \
"USE_REDIS=1" \
"USE_SOUND=1" \
"USE_CURL=1" \
"USE_FREETYPE=1" \
"USE_GETTEXT=1"

# Input
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
Binary file not shown.
Deleted file not rendered
@@ -122,16 +122,8 @@ if(BUILD_CLIENT)
endif()
endif()


option(ENABLE_FREETYPE "Enable FreeType2 (TrueType fonts and basic unicode support)" TRUE)
set(USE_FREETYPE FALSE)

if(BUILD_CLIENT AND ENABLE_FREETYPE)
find_package(Freetype)
if(FREETYPE_FOUND)
message(STATUS "Freetype enabled.")
set(USE_FREETYPE TRUE)
endif()
if(BUILD_CLIENT)
find_package(Freetype REQUIRED)
endif()

option(ENABLE_CURSES "Enable ncurses console" TRUE)
@@ -495,22 +487,24 @@ include_directories(
${PROJECT_SOURCE_DIR}
${ZLIB_INCLUDE_DIR}
${ZSTD_INCLUDE_DIR}
${SOUND_INCLUDE_DIRS}
${SQLITE3_INCLUDE_DIR}
${LUA_INCLUDE_DIR}
${GMP_INCLUDE_DIR}
${JSON_INCLUDE_DIR}
${LUA_BIT_INCLUDE_DIR}
${X11_INCLUDE_DIR}
${PROJECT_SOURCE_DIR}/script
)

if(USE_GETTEXT)
include_directories(${GETTEXT_INCLUDE_DIR})
endif()

if(USE_FREETYPE)
include_directories(${FREETYPE_INCLUDE_DIRS})
if(BUILD_CLIENT)
include_directories(
${FREETYPE_INCLUDE_DIRS}
${SOUND_INCLUDE_DIRS}
${X11_INCLUDE_DIR}
)
endif()

if(USE_CURL)
@@ -539,6 +533,7 @@ if(BUILD_CLIENT)
${GMP_LIBRARY}
${JSON_LIBRARY}
${LUA_BIT_LIBRARY}
${FREETYPE_LIBRARY}
${PLATFORM_LIBS}
)
if(NOT USE_LUAJIT)
@@ -573,17 +568,11 @@ if(BUILD_CLIENT)
${CURL_LIBRARY}
)
endif()
if(USE_FREETYPE)
if(FREETYPE_PKGCONFIG_FOUND)
set_target_properties(${PROJECT_NAME}
PROPERTIES
COMPILE_FLAGS "${FREETYPE_CFLAGS_STR}"
)
endif()
target_link_libraries(
${PROJECT_NAME}
${FREETYPE_LIBRARY}
)
if(FREETYPE_PKGCONFIG_FOUND)
set_target_properties(${PROJECT_NAME}
PROPERTIES
COMPILE_FLAGS "${FREETYPE_CFLAGS_STR}"
)
endif()
if (USE_CURSES)
target_link_libraries(${PROJECT_NAME} ${CURSES_LIBRARIES})
@@ -896,14 +885,8 @@ if(BUILD_CLIENT)
endforeach()
endif()

# Install necessary fonts depending on configuration
if(USE_FREETYPE)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../fonts" DESTINATION "${SHAREDIR}"
FILES_MATCHING PATTERN "*.ttf" PATTERN "*.txt")
else()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../fonts" DESTINATION "${SHAREDIR}"
FILES_MATCHING PATTERN "*.png" PATTERN "*.xml")
endif()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../fonts" DESTINATION "${SHAREDIR}"
FILES_MATCHING PATTERN "*.ttf" PATTERN "*.txt")
endif(BUILD_CLIENT)

if(BUILD_SERVER)

0 comments on commit 76dbd0d

Please sign in to comment.