[Bf-blender-cvs] [68e341e9d59] master: UI: remove non-unicode font and simplify default font loading code

Brecht Van Lommel noreply at git.blender.org
Wed Mar 25 16:46:00 CET 2020


Commit: 68e341e9d59ae917eba992591f4f60660f6c58ff
Author: Brecht Van Lommel
Date:   Mon Feb 17 14:07:18 2020 +0100
Branches: master
https://developer.blender.org/rB68e341e9d59ae917eba992591f4f60660f6c58ff

UI: remove non-unicode font and simplify default font loading code

There is no need to have another font embedded in the Blender executable, we
can assume the bundled font exists. In the future we may provide a fallback
if the font specified by the user in the preferences is missing a character,
but that can use our bundled international font.

Differential Revision: https://developer.blender.org/D6854

===================================================================

M	intern/ghost/test/CMakeLists.txt
M	intern/ghost/test/multitest/MultiTest.c
D	release/datafiles/bfont.ttf
D	release/datafiles/bmonofont.ttf
M	source/blender/blenfont/BLF_api.h
M	source/blender/blenfont/CMakeLists.txt
A	source/blender/blenfont/intern/blf_font_default.c
D	source/blender/blenfont/intern/blf_font_i18n.c
M	source/blender/editors/datafiles/CMakeLists.txt
M	source/blender/editors/include/ED_datafiles.h
M	source/blender/editors/interface/interface_style.c
M	source/blender/windowmanager/intern/wm_init_exit.c
M	source/blender/windowmanager/intern/wm_playanim.c

===================================================================

diff --git a/intern/ghost/test/CMakeLists.txt b/intern/ghost/test/CMakeLists.txt
index 2d97489f657..eda41eb9c1a 100644
--- a/intern/ghost/test/CMakeLists.txt
+++ b/intern/ghost/test/CMakeLists.txt
@@ -63,50 +63,6 @@ macro(suffix_relpaths
   unset(_file)
 endmacro()
 
-macro(data_to_c
-      file_from file_to
-      list_to_add)
-
-  list(APPEND ${list_to_add} ${file_to})
-
-  get_filename_component(_file_to_path ${file_to} PATH)
-
-  add_custom_command(
-    OUTPUT ${file_to}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
-    COMMAND "$<TARGET_FILE:datatoc>" ${file_from} ${file_to}
-    DEPENDS ${file_from} datatoc)
-  unset(_file_to_path)
-endmacro()
-
-# same as above but generates the var name and output automatic.
-function(data_to_c_simple
-  file_from
-  list_to_add
-  )
-
-  # remove ../'s
-  get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from}   REALPATH)
-  get_filename_component(_file_to   ${CMAKE_CURRENT_BINARY_DIR}/${file_from}.c REALPATH)
-
-
-  list(APPEND ${list_to_add} ${_file_to})
-  source_group(Generated FILES ${_file_to})
-  list(APPEND ${list_to_add} ${file_from})
-  set(${list_to_add} ${${list_to_add}} PARENT_SCOPE)
-
-  get_filename_component(_file_to_path ${_file_to} PATH)
-
-  message(OUTPUT "  ${_file_to}")
-  add_custom_command(
-    OUTPUT  ${_file_to}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
-    COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to}
-    DEPENDS ${_file_from} datatoc)
-
-  set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE)
-endfunction()
-
 # -----------------------------------------------------------------------------
 # Defines
 
@@ -311,13 +267,6 @@ target_link_libraries(gears_cpp
 
 
 # MultiTest (C)
-set(data_to_c_files)
-data_to_c(
-  ${CMAKE_SOURCE_DIR}/../../../release/datafiles/bfont.ttf
-  ${CMAKE_CURRENT_BINARY_DIR}/bfont.ttf.c
-  data_to_c_files
-)
-
 add_executable(multitest_c
   ${CMAKE_SOURCE_DIR}/multitest/Basic.c
   ${CMAKE_SOURCE_DIR}/multitest/EventToBuf.c
@@ -326,7 +275,6 @@ add_executable(multitest_c
   ${CMAKE_SOURCE_DIR}/multitest/Util.c
   ${CMAKE_SOURCE_DIR}/multitest/WindowData.c
   ${CMAKE_SOURCE_DIR}/multitest/stubs.c
-  ${data_to_c_files}
 )
 
 
diff --git a/intern/ghost/test/multitest/MultiTest.c b/intern/ghost/test/multitest/MultiTest.c
index 75aa0119a7f..5ddcb2470a8 100644
--- a/intern/ghost/test/multitest/MultiTest.c
+++ b/intern/ghost/test/multitest/MultiTest.c
@@ -595,7 +595,7 @@ LoggerWindow *loggerwindow_new(MultiTestApp *app)
     lw->app = app;
     lw->win = win;
 
-    lw->font = BLF_load_mem("default", (unsigned char *)datatoc_bfont_ttf, datatoc_bfont_ttf_size);
+    lw->font = BLF_load_default(false);
     BLF_size(lw->font, 11, 72);
     lw->fontheight = BLF_height(lw->font, "A_", 2);
 
diff --git a/release/datafiles/bfont.ttf b/release/datafiles/bfont.ttf
deleted file mode 100644
index 7cb06a988ed..00000000000
Binary files a/release/datafiles/bfont.ttf and /dev/null differ
diff --git a/release/datafiles/bmonofont.ttf b/release/datafiles/bmonofont.ttf
deleted file mode 100644
index 06235dce116..00000000000
Binary files a/release/datafiles/bmonofont.ttf and /dev/null differ
diff --git a/source/blender/blenfont/BLF_api.h b/source/blender/blenfont/BLF_api.h
index fd6411f7c69..9aee8c9b78b 100644
--- a/source/blender/blenfont/BLF_api.h
+++ b/source/blender/blenfont/BLF_api.h
@@ -238,11 +238,9 @@ void BLF_thumb_preview(const char *filename,
                        int h,
                        int channels) ATTR_NONNULL();
 
-/* blf_font_i18.c */
-unsigned char *BLF_get_unifont(int *unifont_size);
-void BLF_free_unifont(void);
-unsigned char *BLF_get_unifont_mono(int *unifont_size);
-void BLF_free_unifont_mono(void);
+/* blf_font_default.c */
+int BLF_load_default(const bool unique);
+int BLF_load_mono_default(const bool unique);
 
 #ifdef DEBUG
 void BLF_state_print(int fontid);
diff --git a/source/blender/blenfont/CMakeLists.txt b/source/blender/blenfont/CMakeLists.txt
index fa02d6d21c9..ac927dd388d 100644
--- a/source/blender/blenfont/CMakeLists.txt
+++ b/source/blender/blenfont/CMakeLists.txt
@@ -41,7 +41,7 @@ set(SRC
   intern/blf.c
   intern/blf_dir.c
   intern/blf_font.c
-  intern/blf_font_i18n.c
+  intern/blf_font_default.c
   intern/blf_glyph.c
   intern/blf_thumbs.c
   intern/blf_util.c
diff --git a/source/blender/blenfont/intern/blf_font_default.c b/source/blender/blenfont/intern/blf_font_default.c
new file mode 100644
index 00000000000..f33d7cd4203
--- /dev/null
+++ b/source/blender/blenfont/intern/blf_font_default.c
@@ -0,0 +1,59 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2011 Blender Foundation.
+ * All rights reserved.
+ */
+
+/** \file
+ * \ingroup blf
+ *
+ * API for loading default font files.
+ */
+
+#include <stdio.h>
+
+#include "BLF_api.h"
+
+#include "BLI_path_util.h"
+
+#include "BKE_appdir.h"
+
+static int blf_load_font_default(const char *filename, const bool unique)
+{
+  const char *dir = BKE_appdir_folder_id(BLENDER_DATAFILES, "fonts");
+  if (dir == NULL) {
+    fprintf(stderr,
+            "%s: 'fonts' data path not found for '%s', will not be able to display text\n",
+            __func__,
+            filename);
+    return -1;
+  }
+
+  char filepath[FILE_MAX];
+  BLI_join_dirfile(filepath, sizeof(filepath), dir, filename);
+
+  return (unique) ? BLF_load_unique(filepath) : BLF_load(filepath);
+}
+
+int BLF_load_default(const bool unique)
+{
+  return blf_load_font_default("droidsans.ttf", unique);
+}
+
+int BLF_load_mono_default(const bool unique)
+{
+  return blf_load_font_default("bmonofont-i18n.ttf", unique);
+}
diff --git a/source/blender/blenfont/intern/blf_font_i18n.c b/source/blender/blenfont/intern/blf_font_i18n.c
deleted file mode 100644
index caacd6a28db..00000000000
--- a/source/blender/blenfont/intern/blf_font_i18n.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2011 Blender Foundation.
- * All rights reserved.
- */
-
-/** \file
- * \ingroup blf
- *
- * API for accessing font files.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "BLF_api.h"
-
-#include "MEM_guardedalloc.h"
-
-#include "BLI_utildefines.h"
-
-#include "BKE_appdir.h"
-
-#ifdef WITH_INTERNATIONAL
-
-#  include "BLI_fileops.h"
-#  include "BLI_string.h"
-
-struct FontBuf {
-  const char *filename;
-  uchar *data;
-  int data_len;
-};
-
-static struct FontBuf unifont_ttf = {"droidsans.ttf"};
-static struct FontBuf unifont_mono_ttf = {"bmonofont-i18n.ttf"};
-
-static void fontbuf_load(struct FontBuf *fb)
-{
-  const char *fontpath = BKE_appdir_folder_id(BLENDER_DATAFILES, "fonts");
-  if (fontpath) {
-    char unifont_path[1024];
-    BLI_snprintf(unifont_path, sizeof(unifont_path), "%s/%s", fontpath, fb->filename);
-    fb->data = (uchar *)BLI_file_ungzip_to_mem(unifont_path, &fb->data_len);
-  }
-  else {
-    printf("%s: 'fonts' data path not found for '%s', continuing\n", __func__, fb->filename);
-  }
-}
-
-static void fontbuf_free(struct FontBuf *fb)
-{
-  MEM_SAFE_FREE(fb->data);
-  fb->data_len = 0;
-}
-
-static uchar *fontbuf_get_mem(struct FontBuf *fb, int *r_size)
-{
-  if (fb->data == NULL) {
-    fontbuf_load(fb);
-  }
-  *r_size = fb->data_len;
-  return fb->data;
-}
-
-#endif /* WITH_INTERNATIONAL */
-
-uchar *BLF_get_unifont(int *r_unifont_size)
-{
-#ifdef WITH_INTERNATIONAL
-  return fontbuf_get_mem(&unifont_ttf, r_unifont_size);
-#else
-  UNUSED_VARS(r_unifont_size);
-  return NULL;
-#endif
-}
-
-uchar *BLF_get_unifont_mono(int *r_unifont_size)
-{
-#ifdef WITH_INTERNATIONAL
-  return fontbuf_get_mem(&unifont_mono_ttf, r_unifont_size);
-#else
-  UNUSED_VARS(r_unifont_size);
-  return NULL;
-#endif
-}
-
-void BLF_free_unifont(void)
-{
-#ifdef WITH_INTERNATIONAL
-  fontbuf_free(&unifont_ttf);
-#endif
-}
-
-void BLF_free_unifont_mono(void)
-{
-#ifdef WITH_INTERNATIONAL
-  fontbuf_free(&unifont_mono_ttf);
-#endif
-}
diff --git a/source/blender/editors/datafiles/CMakeLists.txt b/source/blender/editors/datafiles/CMakeLists.txt
index 1b147663a7e..1bc0465424d 100644
--- a/source/blender/editors/datafiles/CMakeLists.txt
+++ b/source/blender/editors/datafiles/CMakeLists.txt
@@ -766,8 +766,6 @@ set_property(GLOBAL PROPERTY ICON_GEOM_NAMES
 )
 
 data_to_c_simple(../../../../release/datafiles/bfont.pfb SRC)
-data_to_c_simple(../../../../release/datafiles/bfont.ttf SRC)
-data_to_c_simple(../../../../release/datafiles/bmonofont.ttf SRC)
 
 if(WITH_BLENDER)
   # blender only (not player)
diff --git a/source/blender/editors/include/ED_datafiles.h b/source/blender/editors/include/ED_datafiles.h
index a2ad343da37..b6f9593c261 100644
--- a/source/blender/editors/include/ED_datafiles.h
+++ b/source/blender/editors/include/ED_datafiles.h
@@ -60,12 +60,6 @@ extern char datatoc_splash_2x_png[

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list