#!/bin/bash set -e cd "$(dirname "$0")/../builtinFonts" echo "// The contents of this file are generated by ./lib/EpdFont/scripts/build-font-ids.sh" echo "#pragma once" echo "" echo "#define BOOKERLY_12_FONT_ID ($( ruby -rdigest -e 'puts [ "./bookerly_12_regular.h", "./bookerly_12_bold.h", "./bookerly_12_bolditalic.h", "./bookerly_12_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define BOOKERLY_14_FONT_ID ($( ruby -rdigest -e 'puts [ "./bookerly_14_regular.h", "./bookerly_14_bold.h", "./bookerly_14_bolditalic.h", "./bookerly_14_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define BOOKERLY_16_FONT_ID ($( ruby -rdigest -e 'puts [ "./bookerly_16_regular.h", "./bookerly_16_bold.h", "./bookerly_16_bolditalic.h", "./bookerly_16_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define BOOKERLY_18_FONT_ID ($( ruby -rdigest -e 'puts [ "./bookerly_18_regular.h", "./bookerly_18_bold.h", "./bookerly_18_bolditalic.h", "./bookerly_18_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define NOTOSANS_12_FONT_ID ($( ruby -rdigest -e 'puts [ "./notosans_12_regular.h", "./notosans_12_bold.h", "./notosans_12_bolditalic.h", "./notosans_12_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define NOTOSANS_14_FONT_ID ($( ruby -rdigest -e 'puts [ "./notosans_14_regular.h", "./notosans_14_bold.h", "./notosans_14_bolditalic.h", "./notosans_14_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define NOTOSANS_16_FONT_ID ($( ruby -rdigest -e 'puts [ "./notosans_16_regular.h", "./notosans_16_bold.h", "./notosans_16_bolditalic.h", "./notosans_16_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define NOTOSANS_18_FONT_ID ($( ruby -rdigest -e 'puts [ "./notosans_18_regular.h", "./notosans_18_bold.h", "./notosans_18_bolditalic.h", "./notosans_18_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define OPENDYSLEXIC_8_FONT_ID ($( ruby -rdigest -e 'puts [ "./opendyslexic_8_regular.h", "./opendyslexic_8_bold.h", "./opendyslexic_8_bolditalic.h", "./opendyslexic_8_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define OPENDYSLEXIC_10_FONT_ID ($( ruby -rdigest -e 'puts [ "./opendyslexic_10_regular.h", "./opendyslexic_10_bold.h", "./opendyslexic_10_bolditalic.h", "./opendyslexic_10_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define OPENDYSLEXIC_12_FONT_ID ($( ruby -rdigest -e 'puts [ "./opendyslexic_12_regular.h", "./opendyslexic_12_bold.h", "./opendyslexic_12_bolditalic.h", "./opendyslexic_12_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define OPENDYSLEXIC_14_FONT_ID ($( ruby -rdigest -e 'puts [ "./opendyslexic_14_regular.h", "./opendyslexic_14_bold.h", "./opendyslexic_14_bolditalic.h", "./opendyslexic_14_italic.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define UI_10_FONT_ID ($( ruby -rdigest -e 'puts [ "./ubuntu_10_regular.h", "./ubuntu_10_bold.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define UI_12_FONT_ID ($( ruby -rdigest -e 'puts [ "./ubuntu_12_regular.h", "./ubuntu_12_bold.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" echo "#define SMALL_FONT_ID ($( ruby -rdigest -e 'puts [ "./notosans_8_regular.h", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ))" # Custom font sizes (must match convert-builtin-fonts.sh) CUSTOM_FONT_SIZES=(12 14 16 18) # Generate font IDs for all custom fonts echo "" echo "// Custom font IDs" CUSTOM_DIR="./custom" declare -a CUSTOM_FONT_NAMES=() declare -a CUSTOM_FONT_UPPERCASE=() if [ -d "$CUSTOM_DIR" ]; then for font_dir in "$CUSTOM_DIR"/*/; do if [ -d "$font_dir" ]; then font_folder_name=$(basename "$font_dir") font_name_lower=$(echo "$font_folder_name" | tr '[:upper:]' '[:lower:]') font_name_upper=$(echo "$font_folder_name" | tr '[:lower:]' '[:upper:]') # Check if font headers exist (Regular is required) if [ -f "./custom/${font_name_lower}_12_regular.h" ]; then CUSTOM_FONT_NAMES+=("$font_name_lower") CUSTOM_FONT_UPPERCASE+=("$font_name_upper") for size in ${CUSTOM_FONT_SIZES[@]}; do font_id=$(ruby -rdigest -e "puts [ \"./custom/${font_name_lower}_${size}_regular.h\", \"./custom/${font_name_lower}_${size}_bold.h\", \"./custom/${font_name_lower}_${size}_bolditalic.h\", \"./custom/${font_name_lower}_${size}_italic.h\", ].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)") echo "#define ${font_name_upper}_${size}_FONT_ID ($font_id)" done fi fi done fi # Generate CUSTOM_FONT_IDS lookup array echo "" echo "// Custom font ID lookup array: CUSTOM_FONT_IDS[fontIndex][sizeIndex]" echo "// Size indices: 0=12pt, 1=14pt, 2=16pt, 3=18pt" if [ ${#CUSTOM_FONT_NAMES[@]} -gt 0 ]; then echo "static const int CUSTOM_FONT_IDS[][4] = {" for i in "${!CUSTOM_FONT_UPPERCASE[@]}"; do font_upper="${CUSTOM_FONT_UPPERCASE[$i]}" echo " {${font_upper}_12_FONT_ID, ${font_upper}_14_FONT_ID, ${font_upper}_16_FONT_ID, ${font_upper}_18_FONT_ID}," done echo "};" else echo "static const int CUSTOM_FONT_IDS[][4] = {};" fi