17a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta###############################################################################
27a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# Fonts shipped with the SDK need to be renamed for Java to handle them
37a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# properly. Hence, a special script is used to rename the fonts. We bundle all
47a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# the fonts that are shipped on a newer non-space-constrained device. However,
57a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# OpenType fonts used on these devices are not supported by Java. Their
67a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# replacements are added separately.
77a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta###############################################################################
87a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
97a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
107a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# The script that renames the font.
117a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Guptasdk_font_rename_script := frameworks/base/tools/layoutlib/rename_font/build_font_single.py
127a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
137a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# Location of the fonttools library that the above script depends on.
147a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Guptafonttools_lib := external/fonttools/Lib
157a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
167a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# A temporary location to store the renamed fonts. atree picks all files in
177a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# this directory and bundles it with the SDK.
187a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu GuptaSDK_FONT_TEMP := $(call intermediates-dir-for,PACKAGING,sdk-fonts,HOST,COMMON)
197a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
207a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# The font configuration files - system_fonts.xml, fallback_fonts.xml etc.
217a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Guptasdk_font_config := $(wildcard frameworks/base/data/fonts/*.xml)
227a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Guptasdk_font_config :=  $(addprefix $(SDK_FONT_TEMP)/, $(notdir $(sdk_font_config)))
237a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
247a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta$(sdk_font_config): $(SDK_FONT_TEMP)/%.xml: \
257a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta			frameworks/base/data/fonts/%.xml
267a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta	$(hide) mkdir -p $(dir $@)
277a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta	$(hide) cp -vf $< $@
287a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
297a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# List of fonts on the device that we want to ship. This is all .ttf fonts.
307a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Guptasdk_fonts_device := $(filter $(TARGET_OUT)/fonts/%.ttf, $(INTERNAL_SYSTEMIMAGE_FILES))
317a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Guptasdk_fonts_device := $(addprefix $(SDK_FONT_TEMP)/, $(notdir $(sdk_fonts_device)))
327a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
337a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# Macro to rename the font.
347a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Guptasdk_rename_font = PYTHONPATH=$$PYTHONPATH:$(fonttools_lib) $(sdk_font_rename_script) \
357a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta	    $1 $2
367a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
377a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# TODO: If the font file is a symlink, reuse the font renamed from the symlink
387a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta# target.
397a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta$(sdk_fonts_device): $(SDK_FONT_TEMP)/%.ttf: $(TARGET_OUT)/fonts/%.ttf \
407a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta			$(sdk_font_rename_script)
417a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta	$(hide) mkdir -p $(dir $@)
427a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta	$(hide) $(call sdk_rename_font,$<,$@)
437a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
44f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta# List of all dependencies - all fonts and configuration files.
45f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu GuptaSDK_FONT_DEPS := $(sdk_fonts_device) $(sdk_font_config)
467a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
47f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta# Define a macro to create rule for addititional fonts that we want to include
48f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta# in the SDK.
49f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta# $1 Output font name
50f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta# $2 Source font path
51f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Guptadefine sdk-extra-font-rule
52f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Guptafontfullname := $$(SDK_FONT_TEMP)/$1
5356355bac72cab611ca7a175e14abc202427f5dfaDeepanshu Guptaifeq ($$(filter $$(fontfullname),$$(sdk_fonts_device)),)
54f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu GuptaSDK_FONT_DEPS += $$(fontfullname)
5556355bac72cab611ca7a175e14abc202427f5dfaDeepanshu Gupta$$(fontfullname): $2 $$(sdk_font_rename_script)
56f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta	$$(hide) mkdir -p $$(dir $$@)
57f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta	$$(hide) $$(call sdk_rename_font,$$<,$$@)
58f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Guptaendif
59f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Guptafontfullname :=
60f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Guptaendef
617a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
62f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta# These extra fonts are used as a replacement for OpenType fonts.
63f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta$(eval $(call sdk-extra-font-rule,NanumGothic.ttf,external/naver-fonts/NanumGothic.ttf))
64f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Gupta$(eval $(call sdk-extra-font-rule,DroidSansFallback.ttf,frameworks/base/data/fonts/DroidSansFallbackFull.ttf))
657a864ea196bbf8583caf7e8a09cf4f686ff724fdDeepanshu Gupta
66f0adf87d42a6c536330d62b7fed407ad773bcf9eDeepanshu Guptasdk-extra-font-rule :=
67