From cc5983503767488eaa5a6c8a9c09b6ce9dea3f1f Mon Sep 17 00:00:00 2001 From: lixianjing Date: Wed, 21 Feb 2024 17:46:12 +0800 Subject: [PATCH] improve build scripts --- docs/changes.md | 3 +++ scripts/res_config.py | 9 +++++++-- scripts/update_res_app.py | 4 ++-- scripts/update_res_common.py | 16 ++++++++++++---- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/docs/changes.md b/docs/changes.md index 068dfd6b7..065a330d6 100644 --- a/docs/changes.md +++ b/docs/changes.md @@ -1,5 +1,8 @@ # 最新动态 +2024/02/21 + * 资源配置新增STORAGE_DIR属性,用于生成位图字体资源时可通过在该属性指定的目录下获取原始字体和保留字符等文件(感谢培煌提供补丁) + 2024/02/20 * 修复拼写错误(感谢兆坤提供补丁) * 修复android编译警告。 diff --git a/scripts/res_config.py b/scripts/res_config.py index cc5a8e7a1..763f31178 100644 --- a/scripts/res_config.py +++ b/scripts/res_config.py @@ -78,6 +78,7 @@ class res_config: inc_res = True inc_bitmap = True inc_bitmap_font = True + storage_dir = None def __init__(self) : self.assets = res_multidict(); @@ -167,13 +168,13 @@ class res_config: def get_res_fonts_key(self, theme_name) : if self.has_themes() : - return self.assets[theme_name]['fonts'].keys() + return self.assets['themes'][theme_name]['fonts'].keys() return list() def get_res_font_size_key(self, theme_name, font_name) : key = [] if self.has_themes() : - for name in self.assets[theme_name]['fonts'][font_name].keys() : + for name in self.assets['themes'][theme_name]['fonts'][font_name].keys() : if name != 'text' or name != 'bpp' : key.append(name) return key @@ -328,3 +329,7 @@ class res_config: def get_inc_bitmap_font(self) : return self.inc_bitmap_font + + def get_storage_dir(self): + return self.storage_dir + diff --git a/scripts/update_res_app.py b/scripts/update_res_app.py index b6f5e4925..4057cb32c 100755 --- a/scripts/update_res_app.py +++ b/scripts/update_res_app.py @@ -77,9 +77,9 @@ def use_theme_config_from_res_config(res_config_path, config = None): font_name = common.to_file_system_coding(font_name) font_size = common.to_file_system_coding(font_size) filename = common.join_path(config_dir, font_name+'_'+font_size+'.txt') - common.write_file(filename, content.get_res_font_value(theme_name, font_name, font_size)) + common.write_file(filename, content.get_res_font_value(theme_name, font_name, font_size, '')) - theme = {'name': theme_name, 'imagegen_options': imagegen_options, 'packaged': content.get_res_packaged(theme_name)} + theme = {'name': theme_name, 'imagegen_options': imagegen_options, 'packaged': content.get_res_packaged(theme_name), 'storage_dir': content.get_storage_dir()} if theme_name == 'default': THEMES.insert(0, theme) else: diff --git a/scripts/update_res_common.py b/scripts/update_res_common.py index 1b0b8be78..ccd6ff38c 100755 --- a/scripts/update_res_common.py +++ b/scripts/update_res_common.py @@ -34,6 +34,7 @@ IS_GENERATE_RAW = True IS_GENERATE_INC_RES = True IS_GENERATE_INC_BITMAP = True ASSETS_SUBNAME = '__assets_' +STORAGE_DIR = None ########################### @@ -158,6 +159,7 @@ def set_current_theme(index): global IMAGEGEN_OPTIONS global INPUT_DIR global OUTPUT_DIR + global STORAGE_DIR if index >= len(THEMES): return @@ -174,6 +176,8 @@ def set_current_theme(index): IMAGEGEN_OPTIONS = theme['imagegen_options'] if 'packaged' in theme: THEME_PACKAGED = theme['packaged'] + if 'storage_dir' in theme: + STORAGE_DIR = theme['storage_dir'] INPUT_DIR = join_path(ASSETS_ROOT, THEME+'/raw') if not os.path.exists(INPUT_DIR): @@ -613,6 +617,9 @@ def gen_res_all_xml(): def gen_res_bitmap_font(input_dir, font_options, theme): + if STORAGE_DIR: + input_dir = join_path(STORAGE_DIR, theme) + if not os.path.exists(join_path(input_dir, 'fonts/config')): return @@ -621,13 +628,14 @@ def gen_res_bitmap_font(input_dir, font_options, theme): fontname = os.path.basename(filename) index = fontname.rfind('_') if index > 0: - raw = os.path.dirname(os.path.dirname(filename)) + '/origin/' + fontname[0 : index] + '.ttf' + raw = join_path(input_dir, 'fonts') + '/origin/' + fontname[0: index] + '.ttf' if not os.path.exists(raw): - raw = os.path.dirname(os.path.dirname(filename)) + '/' + fontname[0 : index] + '.ttf' + raw = os.path.dirname(os.path.dirname(filename)) + '/' + fontname[0: index] + '.ttf' if os.path.exists(raw): size = fontname[index + 1 : len(fontname)] - inc = join_path(OUTPUT_DIR, 'inc/fonts/' + fontname[0 : index] + '_' + str(size) + '.data') - fontgen(raw, f, inc, size, font_options, theme) + if size.isdigit(): + inc = join_path(OUTPUT_DIR, 'inc/fonts/' + fontname[0: index] + '_' + str(size) + '.data') + fontgen(raw, f, inc, size, font_options, theme) def gen_res_all_font():