From e20150e6ca95ca9d9c131115fd404561003bdfa6 Mon Sep 17 00:00:00 2001 From: Michael Carlberg Date: Fri, 13 Jan 2017 22:42:10 +0100 Subject: [PATCH] feat(cmake): Query fonts --- cmake/utils.cmake | 42 ++++++++++++++++++++++++++++++++++++++++++ doc/CMakeLists.txt | 8 ++++++++ doc/config.cmake | 6 +++--- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index c56c2fa6..2a15cfe6 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -161,3 +161,45 @@ function(make_library target_name) endfunction() # }}} +# find_font : Query fontconfig fonts {{{ + +function(font_query output_variable fontname) + set(multi_value_args FIELDS) + cmake_parse_arguments(ARG "" "" "${multi_value_args}" ${ARGN}) + + find_program(BIN_FCLIST fc-list) + if(NOT BIN_FCLIST) + message_colored(WARNING "Failed to locate `fc-list`" "33;1") + return() + endif() + + string(REPLACE ";" " " FIELDS "${ARG_FIELDS}") + if(NOT FIELDS) + set(FIELDS family) + endif() + + execute_process( + COMMAND sh -c "${BIN_FCLIST} : ${FIELDS}" + RESULT_VARIABLE status + OUTPUT_VARIABLE output + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + STRING(REGEX REPLACE ";" "\\\\;" output "${output}") + STRING(REGEX REPLACE "\n" ";" output "${output}") + STRING(TOLOWER "${output}" output) + + foreach(match LISTS ${output}) + if(${match} MATCHES ".*${fontname}.*$") + list(APPEND FONT_QUERY_MATCHES ${match}) + endif() + endforeach() + + if(FONT_QUERY_MATCHES) + list(GET FONT_QUERY_MATCHES 0 output_variable) + set(output_variable "${output_variable}" PARENT_SCOPE) + message(STATUS "Found font: ${output_variable}") + else() + message_colored(WARNING "Font not found: ${fontname}" "33;1") + endif() +endfunction() + +# }}} diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index a2967021..59ce155a 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -8,6 +8,14 @@ set(MODULES_LEFT "bspwm i3 xwindow") set(MODULES_CENTER "") set(MODULES_RIGHT "xbacklight volume xkeyboard memory cpu wlan eth battery temperature date powermenu") +set(FONT_FIXED "fixed:pixelsize=10") +set(FONT_UNIFONT "unifont:fontformat=truetype") +set(FONT_SIJI "siji:pixelsize=10") + +font_query(FONT_FIXED "${FONT_FIXED}" FIELDS family pixelsize) +font_query(FONT_UNIFONT "${FONT_UNIFONT}" FIELDS family fontformat) +font_query(FONT_SIJI "${FONT_SIJI}" FIELDS family pixelsize) + # Strip disabled modules {{{ if(NOT ENABLE_ALSA) diff --git a/doc/config.cmake b/doc/config.cmake index f61faa24..136a3bfd 100644 --- a/doc/config.cmake +++ b/doc/config.cmake @@ -44,9 +44,9 @@ padding-right = 2 module-margin-left = 1 module-margin-right = 2 -font-0 = fixed:pixelsize=10;0 -font-1 = unifont:size=6:heavy:fontformat=truetype;-2 -font-2 = siji:pixelsize=10;0 +font-0 = @FONT_FIXED@ +font-1 = @FONT_UNIFONT@:size=6:heavy;-2 +font-2 = @FONT_SIJI@ modules-left = @MODULES_LEFT@ modules-center = @MODULES_CENTER@