Create fonts.xml module for adding fonts.xml to system/etc
Previously, we used PRODUCT_COPY_FILES. However, that does not allow overriding the file to use a different one on a per-device basis. This change migrates the logic to using a BUILD_PREBUILT module called fonts.xml. To add additional fonts, the add_additional_fonts.py script has been added. If ADDITIONAL_FONTS_FILE is defined, add_additional_fonts.py is run and generates a new version of fonts.xml that contains the content of ADDITIONAL_FONTS_FILE added where "<!-- fallback fonts -->" is added. Bug: 36855735 Bug: 37997769 Test: manual. built multiple devices and verified that the correct versions of fonts.xml were showing. Change-Id: I8308f0cb3068274bca5ebd25a38cc023babbd69d
This commit is contained in:
@@ -81,6 +81,33 @@ $(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))
|
||||
build-one-font-module :=
|
||||
font_src_files :=
|
||||
|
||||
################################
|
||||
# Copies the font configuration file into system/etc for the product as fonts.xml.
|
||||
# In the case where $(ADDITIONAL_FONTS_FILE) is defined, the content of $(ADDITIONAL_FONTS_FILE)
|
||||
# is added to the $(AOSP_FONTS_FILE).
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := fonts.xml
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
|
||||
AOSP_FONTS_FILE := frameworks/base/data/fonts/fonts.xml
|
||||
|
||||
ifdef ADDITIONAL_FONTS_FILE
|
||||
ADDITIONAL_FONTS_SCRIPT := frameworks/base/tools/fonts/add_additional_fonts.py
|
||||
ADD_ADDITIONAL_FONTS := $(local-generated-sources-dir)/fonts.xml
|
||||
|
||||
$(ADD_ADDITIONAL_FONTS): PRIVATE_SCRIPT := $(ADDITIONAL_FONTS_SCRIPT)
|
||||
$(ADD_ADDITIONAL_FONTS): PRIVATE_ADDITIONAL_FONTS_FILE := $(ADDITIONAL_FONTS_FILE)
|
||||
$(ADD_ADDITIONAL_FONTS): $(ADDITIONAL_FONTS_SCRIPT) $(AOSP_FONTS_FILE) $(ADDITIONAL_FONTS_FILE)
|
||||
rm -f $@
|
||||
python $(PRIVATE_SCRIPT) $@ $(PRIVATE_ADDITIONAL_FONTS_FILE)
|
||||
else
|
||||
ADD_ADDITIONAL_FONTS := $(AOSP_FONTS_FILE)
|
||||
endif
|
||||
|
||||
LOCAL_PREBUILT_MODULE_FILE := $(ADD_ADDITIONAL_FONTS)
|
||||
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
# Run sanity tests on fonts on checkbuild
|
||||
checkbuild: fontchain_lint
|
||||
|
||||
@@ -14,9 +14,7 @@
|
||||
|
||||
# Warning: this is actually a product definition, to be inherited from
|
||||
|
||||
PRODUCT_COPY_FILES := \
|
||||
frameworks/base/data/fonts/fonts.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/fonts.xml
|
||||
|
||||
PRODUCT_PACKAGES := \
|
||||
DroidSansMono.ttf \
|
||||
AndroidClock.ttf
|
||||
AndroidClock.ttf \
|
||||
fonts.xml
|
||||
|
||||
44
tools/fonts/add_additional_fonts.py
Normal file
44
tools/fonts/add_additional_fonts.py
Normal file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (C) 2017 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
import sys
|
||||
|
||||
def main(argv):
|
||||
original_file = 'frameworks/base/data/fonts/fonts.xml'
|
||||
|
||||
if len(argv) == 3:
|
||||
output_file_path = argv[1]
|
||||
override_file_path = argv[2]
|
||||
else:
|
||||
raise ValueError("Wrong number of arguments %s" % len(argv))
|
||||
|
||||
fallbackPlaceholderFound = False
|
||||
with open(original_file, 'r') as input_file:
|
||||
with open(output_file_path, 'w') as output_file:
|
||||
for line in input_file:
|
||||
# If we've found the spot to add additional fonts, add them.
|
||||
if line.strip() == '<!-- fallback fonts -->':
|
||||
fallbackPlaceholderFound = True
|
||||
with open(override_file_path) as override_file:
|
||||
for override_line in override_file:
|
||||
output_file.write(override_line)
|
||||
output_file.write(line)
|
||||
if not fallbackPlaceholderFound:
|
||||
raise ValueError('<!-- fallback fonts --> not found in source file: %s' % original_file)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
Reference in New Issue
Block a user