1############################################################################### 2# Fonts shipped with the SDK need to be renamed for Java to handle them 3# properly. Hence, a special script is used to rename the fonts. We bundle all 4# the fonts that are shipped on a newer non-space-constrained device. However, 5# OpenType fonts used on these devices are not supported by Java. Their 6# replacements are added separately. 7############################################################################### 8 9 10# The script that renames the font. 11sdk_font_rename_script := frameworks/layoutlib/rename_font/build_font_single.py 12 13# Location of the fonttools library that the above script depends on. 14fonttools_lib := external/fonttools/Lib 15 16# A temporary location to store the renamed fonts. atree picks all files in 17# this directory and bundles it with the SDK. 18SDK_FONT_TEMP := $(call intermediates-dir-for,PACKAGING,sdk-fonts,HOST,COMMON) 19 20# The font configuration files - system_fonts.xml, fallback_fonts.xml etc. 21sdk_font_config := $(sort $(wildcard frameworks/base/data/fonts/*.xml)) 22sdk_font_config := $(addprefix $(SDK_FONT_TEMP)/standard/, $(notdir $(sdk_font_config))) 23 24$(sdk_font_config): $(SDK_FONT_TEMP)/standard/%.xml: \ 25 frameworks/base/data/fonts/%.xml 26 $(hide) mkdir -p $(dir $@) 27 $(hide) cp -vf $< $@ 28 29# List of fonts on the device that we want to ship. This is all .ttf fonts. 30sdk_fonts_device := $(filter $(TARGET_OUT)/fonts/%.ttf, $(INTERNAL_SYSTEMIMAGE_FILES)) 31sdk_fonts_device := $(addprefix $(SDK_FONT_TEMP)/, $(notdir $(sdk_fonts_device))) 32 33# Macro to rename the font. 34sdk_rename_font = PYTHONPATH=$$PYTHONPATH:$(fonttools_lib) $(sdk_font_rename_script) \ 35 $1 $2 36 37# TODO: If the font file is a symlink, reuse the font renamed from the symlink 38# target. 39$(sdk_fonts_device): $(SDK_FONT_TEMP)/%.ttf: $(TARGET_OUT)/fonts/%.ttf \ 40 $(sdk_font_rename_script) 41 $(hide) mkdir -p $(dir $@) 42 $(hide) $(call sdk_rename_font,$<,$@) 43 44# List of all dependencies - all fonts and configuration files. 45SDK_FONT_DEPS := $(sdk_fonts_device) $(sdk_font_config) 46 47# Define a macro to create rule for addititional fonts that we want to include 48# in the SDK. 49# $1 Output font name 50# $2 Source font path 51define sdk-extra-font-rule 52fontfullname := $$(SDK_FONT_TEMP)/$1 53ifeq ($$(filter $$(fontfullname),$$(sdk_fonts_device)),) 54SDK_FONT_DEPS += $$(fontfullname) 55$$(fontfullname): $2 $$(sdk_font_rename_script) 56 $$(hide) mkdir -p $$(dir $$@) 57 $$(hide) $$(call sdk_rename_font,$$<,$$@) 58endif 59fontfullname := 60endef 61 62# These extra fonts are used as a replacement for OpenType fonts. 63$(eval $(call sdk-extra-font-rule,NanumGothic.ttf,external/naver-fonts/NanumGothic.ttf)) 64$(eval $(call sdk-extra-font-rule,DroidSansFallback.ttf,frameworks/base/data/fonts/DroidSansFallbackFull.ttf)) 65 66sdk-extra-font-rule := 67