From cd6d8911009362a39575f4ad368a3cad68386e5c Mon Sep 17 00:00:00 2001 From: whitequark Date: Thu, 18 Feb 2016 05:03:54 +0000 Subject: [PATCH] Use U+FFFD instead of crashing when encountering unknown characters. Also, use a nicer U+FFFD glyph in the builtin vector font. --- src/CMakeLists.txt | 11 +++++++---- src/fonts/unicode.lff.gz | Bin 482295 -> 482382 bytes src/glhelper.cpp | 6 +++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9f6a685..f1f12fe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -103,15 +103,18 @@ add_custom_command( ${CMAKE_CURRENT_BINARY_DIR}/generated/bitmapfont.table.h ${CMAKE_CURRENT_SOURCE_DIR}/fonts/unifont-8.0.01.hex.gz ${chars} - DEPENDS unifont2c ${chars} + DEPENDS unifont2c + ${CMAKE_CURRENT_SOURCE_DIR}/fonts/unifont-8.0.01.hex.gz + ${chars} VERBATIM) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated/vectorfont.table.h COMMAND $ - "${CMAKE_CURRENT_BINARY_DIR}/generated/vectorfont.table.h" - "${CMAKE_CURRENT_SOURCE_DIR}/fonts/unicode.lff.gz" - DEPENDS lff2c ${chars} + ${CMAKE_CURRENT_BINARY_DIR}/generated/vectorfont.table.h + ${CMAKE_CURRENT_SOURCE_DIR}/fonts/unicode.lff.gz + DEPENDS lff2c + ${CMAKE_CURRENT_SOURCE_DIR}/fonts/unicode.lff.gz VERBATIM) set(generated_HEADERS diff --git a/src/fonts/unicode.lff.gz b/src/fonts/unicode.lff.gz index 98153b13dbfed0b932495ebba7624eb819b50b4e..dc0d3a3b4908dc7feb01fa11591495372dcc24bf 100644 GIT binary patch delta 5586 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 xO$@g?+xm<~`=i&tw3okI2Ob+&HfCSnC= 0xe000 && chr <= 0xefff) { // Special character, like a checkbox or a radio button