From 32ccd8530cbc5299a6df16c10b8b16b6a211eb18 Mon Sep 17 00:00:00 2001 From: Mino1289 Date: Thu, 4 Nov 2021 23:59:18 +0100 Subject: [PATCH] [kandinsky/font build] Using all font only when reader app is defined, else it's the classic font --- apps/reader/Makefile | 6 +- build/targets.device.mak | 2 +- kandinsky/Makefile | 10 +- kandinsky/fonts/code_points.h | 71 +--------- kandinsky/fonts/code_points_latex.h | 212 ++++++++++++++++++++++++++++ kandinsky/fonts/rasterizer.c | 8 ++ 6 files changed, 233 insertions(+), 76 deletions(-) create mode 100644 kandinsky/fonts/code_points_latex.h diff --git a/apps/reader/Makefile b/apps/reader/Makefile index 9f37b5587..3c777528d 100644 --- a/apps/reader/Makefile +++ b/apps/reader/Makefile @@ -1,11 +1,7 @@ apps += Reader::App app_headers += apps/reader/app.h -ifeq ($(ISBUILDINGFLASHER), 1) - $(warning Reduced font glyphs) -else - RASTERIZER_CFLAGS += -DHAS_READER -endif +SFLAGS += -DHAS_READER app_sreader_src = $(addprefix apps/reader/,\ app.cpp \ diff --git a/build/targets.device.mak b/build/targets.device.mak index b6cbf388c..0050712c1 100644 --- a/build/targets.device.mak +++ b/build/targets.device.mak @@ -44,8 +44,8 @@ $(BUILD_DIR)/flasher.light.$(EXE): $(call flavored_object_for,$(flasher_src),lig $(BUILD_DIR)/flasher.verbose.$(EXE): $(call flavored_object_for,$(flasher_src),usbxip) $(BUILD_DIR)/flasher.verbose.flash.$(EXE): $(call flavored_object_for,$(flasher_src)) $(BUILD_DIR)/flasher.%.$(EXE): LDFLAGS += -Lion/src/$(PLATFORM)/flasher -$(BUILD_DIR)/flasher.%.$(EXE): ISBUILDINGFLASHER:=1 $(BUILD_DIR)/flasher.%.$(EXE): LDSCRIPT = ion/src/$(PLATFORM)/shared/ram.ld +$(BUILD_DIR)/flasher.%.$(EXE): RASTERIZER_CFLAGS += -DISBUILDINGFLASHER $(BUILD_DIR)/flasher.%.flash.$(EXE): LDSCRIPT = ion/src/$(PLATFORM)/$(MODEL)/internal_flash.ld #TODO Do not build all apps... Put elsewhere? diff --git a/kandinsky/Makefile b/kandinsky/Makefile index 16cfdc668..3edb1c536 100644 --- a/kandinsky/Makefile +++ b/kandinsky/Makefile @@ -32,7 +32,15 @@ tests_src += $(addprefix kandinsky/test/,\ rect.cpp\ ) -code_points = kandinsky/fonts/code_points.h +ifdef ($(ISBUILDINGFLASHER)) + code_points = kandinsky/fonts/code_points.h +else + ifdef ($(HAS_READER)) + code_points = kandinsky/fonts/code_points_latex.h + else + code_points = kandinsky/fonts/code_points.h + endif +endif RASTERIZER_CFLAGS := -std=c99 $(shell pkg-config freetype2 --cflags) RASTERIZER_LDFLAGS := $(shell pkg-config freetype2 --libs) diff --git a/kandinsky/fonts/code_points.h b/kandinsky/fonts/code_points.h index d48231980..1804fc64a 100644 --- a/kandinsky/fonts/code_points.h +++ b/kandinsky/fonts/code_points.h @@ -106,7 +106,6 @@ uint32_t CodePoints[] = { 0x7e, // ~ // TILDE 0xb0, // ° // DEGREE SIGN - 0xb1, // ± // PLUS OR MINUS 0xb7, // · // MIDDLE DOT 0xc6, // Æ // LATIN CAPITAL LETTER AE @@ -131,88 +130,22 @@ uint32_t CodePoints[] = { 0x30b, // ˝// COMBINING DOUBLE ACUTE ACCENT 0x327, // ̧ // COMBINING CEDILLA - 0x391, // Α // GREEK CAPITAL LETTER ALPHA - 0x392, // Β // GREEK CAPITAL LETTER BETA 0x393, // Γ // GREEK CAPITAL LETTER GAMMA 0x394, // Δ // GREEK CAPITAL LETTER DELTA -#ifdef HAS_READER - 0x395, // Ε // GREEK CAPITAL LETTER EPSILON - 0x396, // Ζ // GREEK CAPITAL LETTER ZETA - 0x397, // Η // GREEK CAPITAL LETTER ETA - 0x398, // Θ // GREEK CAPITAL LETTER THETA - 0x399, // Ι // GREEK CAPITAL LETTER IOTA - 0x39a, // Κ // GREEK CAPITAL LETTER KAPPA - 0x39b, // Λ // GREEK CAPITAL LETTER LAMBDA - 0x39c, // Μ // GREEK CAPITAL LETTER MU - 0x39d, // Ν // GREEK CAPITAL LETTER NU - 0x39e, // Ξ // GREEK CAPITAL LETTER KSI - 0x39f, // Ο // GREEK CAPITAL LETTER OMICRON - 0x3a0, // Π // GREEK CAPITAL LETTER PI - 0x3a1, // Ρ // GREEK CAPITAL LETTER RHO - 0x3a3, // Σ // GREEK CAPITAL LETTER SIGMA - 0x3a4, // Τ // GREEK CAPITAL LETTER TAU - 0x3a5, // Υ // GREEK CAPITAL LETTER UPSILON - 0x3a6, // Φ // GREEK CAPITAL LETTER PHI - 0x3a7, // Χ // GREEK CAPITAL LETTER KHI - 0x3a8, // Ψ // GREEK CAPITAL LETTER PSI -#endif 0x3a9, // Ω // GREEK CAPITAL LETTER OMEGA -#ifdef HAS_READER - 0x3b1, // α // GREEK SMALL LETTER ALPHA - 0x3b2, // β // GREEK SMALL LETTER BETA - 0x3b3, // γ // GREEK SMALL LETTER GAMMA - 0x3b4, // δ // GREEK SMALL LETTER DELTA - 0x3b5, // ε // GREEK SMALL LETTER EPSILON - 0x3b6, // ζ // GREEK SMALL LETTER ZETA - 0x3b7, // η // GREEK SMALL LETTER ETA -#endif 0x3b8, // θ // GREEK SMALL LETTER THETA -#ifdef HAS_READER - 0x3b9, // ι // GREEK SMALL LETTER IOTA - 0x3ba, // κ // GREEK SMALL LETTER KAPPA - 0x3bb, // λ // GREEK SMALL LETTER LAMBDA -#endif + 0x3bb, // λ // GREEK SMALL LETTER LAMDA 0x3bc, // μ // GREEK SMALL LETTER MU -#ifdef HAS_READER - 0x3bd, // ν // GREEK SMALL LETTER NU - 0x3be, // ξ // GREEK SMALL LETTER KSI - 0x3bf, // ο // GREEK SMALL LETTER OMICRON -#endif 0x3c0, // π // GREEK SMALL LETTER PI - 0x3c1, // ρ // GREEK SMALL LETTER RHO 0x3c3, // σ // GREEK SMALL LETTER SIGMA -#ifdef HAS_READER - 0x3c4, // τ // GREEK SMALL LETTER TAU - 0x3c5, // υ // GREEK SMALL LETTER UPSILON - 0x3c6, // φ // GREEK SMALL LETTER PHI - 0x3c7, // χ // GREEK SMALL LETTER KHI - 0x3c8, // ψ // GREEK SMALL LETTER PSI - 0x3c9, // ω // GREEK SMALL LETTER OMEGA -#endif 0x1d07, // ᴇ // LATIN LETTER SMALL CAPITAL E 0x212f, // ℯ // SCRIPT SMALL E -#ifdef HAS_READER - 0x2190, // ← // BACKWARD ARROW (leftarrow) - 0x2191, // ↑ // TOP ARROW (uparrow) - 0x2192, // → // FORWARD ARROW (rightarrow) - 0x2193, // ↓ // BOTTOM ARROW (downarrow) - 0x2194, // ↔ // BACKWARD FORWARD ARROW (leftrightarrow) - 0x2195, // ↕ // TOP BOTTOM ARROW (updownarrow) - 0x21d0, // ⇐ // DOUBLE BACKWARD ARROW (Leftarrow) - 0x21d1, // ⇑ // DOUBLE TOP ARROW (Uparrow) - 0x21d2, // ⇒ // DOUBLE FORWARD ARROW (Rightarrow) - 0x21d3, // ⇓ // DOUBLE BOTTOM ARROW (Downarrow) - 0x2200, // ∀ // FORALL - 0x2202, // ∂ // PARTIAL - 0x2203, // ∃ // EXIST -#endif + 0x2192, // → // RIGHTWARDS ARROW 0x2211, // ∑ // N-ARY SUMMATION 0x221a, // √ // SQUARE ROOT 0x221e, // ∞ // INFINITY 0x222b, // ∫ // INTEGRAL 0x2248, // ≈ // ALMOST EQUAL TO - 0x2260, // ≠ // NOT EQUAL TO - 0x2261, // ≡ // IS CONGRUENT TO 0x2264, // ≤ // LESS-THAN OR EQUAL TO 0x2265, // ≥ // GREATER-THAN OR EQUAL TO 0xFFFD, // � // REPLACEMENT CHARACTER diff --git a/kandinsky/fonts/code_points_latex.h b/kandinsky/fonts/code_points_latex.h new file mode 100644 index 000000000..a4cc72151 --- /dev/null +++ b/kandinsky/fonts/code_points_latex.h @@ -0,0 +1,212 @@ +#ifndef KANDINSKY_FONTS_CODE_POINTS_H +#define KANDINSKY_FONTS_CODE_POINTS_H + +// [0x30a].map{|i| "0x" + i.to_s(16) +", // " + [i].pack("U") + " // " + Unicode::Name.of([i].pack("U"))}.join("|") +#include + + +/* This array lists the code points that are rasterized by rasterizer.c. We put + * most characters from the LATIN charset, and some mathematical characters. */ + +uint32_t CodePoints[] = { + 0x20, // // SPACE + 0x21, // ! // EXCLAMATION MARK + 0x22, // " // QUOTATION MARK + 0x23, // # // NUMBER SIGN + 0x24, // $ // DOLLAR SIGN + 0x25, // % // PERCENT SIGN + 0x26, // & // AMPERSAND + 0x27, // ' // APOSTROPHE + 0x28, // ( // LEFT PARENTHESIS + 0x29, // ) // RIGHT PARENTHESIS + 0x2a, // * // ASTERISK + 0x2b, // + // PLUS SIGN + 0x2c, // , // COMMA + 0x2d, // - // HYPHEN-MINUS + 0x2e, // . // FULL STOP + 0x2f, // / // SOLIDUS + 0x30, // 0 // DIGIT ZERO + 0x31, // 1 // DIGIT ONE + 0x32, // 2 // DIGIT TWO + 0x33, // 3 // DIGIT THREE + 0x34, // 4 // DIGIT FOUR + 0x35, // 5 // DIGIT FIVE + 0x36, // 6 // DIGIT SIX + 0x37, // 7 // DIGIT SEVEN + 0x38, // 8 // DIGIT EIGHT + 0x39, // 9 // DIGIT NINE + 0x3a, // : // COLON + 0x3b, // ; // SEMICOLON + 0x3c, // < // LESS-THAN SIGN + 0x3d, // = // EQUALS SIGN + 0x3e, // > // GREATER-THAN SIGN + 0x3f, // ? // QUESTION MARK + 0x40, // @ // COMMERCIAL AT + 0x41, // A // LATIN CAPITAL LETTER A + 0x42, // B // LATIN CAPITAL LETTER B + 0x43, // C // LATIN CAPITAL LETTER C + 0x44, // D // LATIN CAPITAL LETTER D + 0x45, // E // LATIN CAPITAL LETTER E + 0x46, // F // LATIN CAPITAL LETTER F + 0x47, // G // LATIN CAPITAL LETTER G + 0x48, // H // LATIN CAPITAL LETTER H + 0x49, // I // LATIN CAPITAL LETTER I + 0x4a, // J // LATIN CAPITAL LETTER J + 0x4b, // K // LATIN CAPITAL LETTER K + 0x4c, // L // LATIN CAPITAL LETTER L + 0x4d, // M // LATIN CAPITAL LETTER M + 0x4e, // N // LATIN CAPITAL LETTER N + 0x4f, // O // LATIN CAPITAL LETTER O + 0x50, // P // LATIN CAPITAL LETTER P + 0x51, // Q // LATIN CAPITAL LETTER Q + 0x52, // R // LATIN CAPITAL LETTER R + 0x53, // S // LATIN CAPITAL LETTER S + 0x54, // T // LATIN CAPITAL LETTER T + 0x55, // U // LATIN CAPITAL LETTER U + 0x56, // V // LATIN CAPITAL LETTER V + 0x57, // W // LATIN CAPITAL LETTER W + 0x58, // X // LATIN CAPITAL LETTER X + 0x59, // Y // LATIN CAPITAL LETTER Y + 0x5a, // Z // LATIN CAPITAL LETTER Z + 0x5b, // [ // LEFT SQUARE BRACKET + 0x5c, // \ // REVERSE SOLIDUS + 0x5d, // ] // RIGHT SQUARE BRACKET + 0x5e, // ^ // CIRCUMFLEX ACCENT + 0x5f, // _ // LOW LINE + 0x60, // ` // GRAVE ACCENT + 0x61, // a // LATIN SMALL LETTER A + 0x62, // b // LATIN SMALL LETTER B + 0x63, // c // LATIN SMALL LETTER C + 0x64, // d // LATIN SMALL LETTER D + 0x65, // e // LATIN SMALL LETTER E + 0x66, // f // LATIN SMALL LETTER F + 0x67, // g // LATIN SMALL LETTER G + 0x68, // h // LATIN SMALL LETTER H + 0x69, // i // LATIN SMALL LETTER I + 0x6a, // j // LATIN SMALL LETTER J + 0x6b, // k // LATIN SMALL LETTER K + 0x6c, // l // LATIN SMALL LETTER L + 0x6d, // m // LATIN SMALL LETTER M + 0x6e, // n // LATIN SMALL LETTER N + 0x6f, // o // LATIN SMALL LETTER O + 0x70, // p // LATIN SMALL LETTER P + 0x71, // q // LATIN SMALL LETTER Q + 0x72, // r // LATIN SMALL LETTER R + 0x73, // s // LATIN SMALL LETTER S + 0x74, // t // LATIN SMALL LETTER T + 0x75, // u // LATIN SMALL LETTER U + 0x76, // v // LATIN SMALL LETTER V + 0x77, // w // LATIN SMALL LETTER W + 0x78, // x // LATIN SMALL LETTER X + 0x79, // y // LATIN SMALL LETTER Y + 0x7a, // z // LATIN SMALL LETTER Z + 0x7b, // { // LEFT CURLY BRACKET + 0x7c, // | // VERTICAL LINE + 0x7d, // } // RIGHT CURLY BRACKET + 0x7e, // ~ // TILDE + + 0xb0, // ° // DEGREE SIGN + 0xb1, // ± // PLUS OR MINUS + 0xb7, // · // MIDDLE DOT + + 0xc6, // Æ // LATIN CAPITAL LETTER AE + 0xd0, // Ð // LATIN CAPITAL LETTER ETH + 0xd7, // × // MULTIPLICATION SIGN + 0xd8, // Ø // LATIN CAPITAL LETTER O WITH STROKE + 0xde, // Þ // LATIN CAPITAL LETTER THORN + 0xdf, // ß // LATIN SMALL LETTER SHARP S + 0xe6, // æ // LATIN SMALL LETTER AE + 0xf0, // ð // LATIN SMALL LETTER ETH + 0xf7, // ÷ // DIVISION SIGN + 0xf8, // ø // LATIN SMALL LETTER O WITH STROKE + 0xfe, // þ // LATIN SMALL LETTER THORN + + 0x300, // ̀ // COMBINING GRAVE ACCENT + 0x301, // ́ // COMBINING ACUTE ACCENT + 0x302, // ̂ // COMBINING CIRCUMFLEX ACCENT + 0x303, // ̃ // COMBINING TILDE + 0x305, // ̅ // COMBINING OVERLINE + 0x308, // ̈ // COMBINING DIAERESIS + 0x30a, // ̊ // COMBINING RING ABOVE + 0x30b, // ˝// COMBINING DOUBLE ACUTE ACCENT + 0x327, // ̧ // COMBINING CEDILLA + + 0x391, // Α // GREEK CAPITAL LETTER ALPHA + 0x392, // Β // GREEK CAPITAL LETTER BETA + 0x393, // Γ // GREEK CAPITAL LETTER GAMMA + 0x394, // Δ // GREEK CAPITAL LETTER DELTA + 0x395, // Ε // GREEK CAPITAL LETTER EPSILON + 0x396, // Ζ // GREEK CAPITAL LETTER ZETA + 0x397, // Η // GREEK CAPITAL LETTER ETA + 0x398, // Θ // GREEK CAPITAL LETTER THETA + 0x399, // Ι // GREEK CAPITAL LETTER IOTA + 0x39a, // Κ // GREEK CAPITAL LETTER KAPPA + 0x39b, // Λ // GREEK CAPITAL LETTER LAMBDA + 0x39c, // Μ // GREEK CAPITAL LETTER MU + 0x39d, // Ν // GREEK CAPITAL LETTER NU + 0x39e, // Ξ // GREEK CAPITAL LETTER KSI + 0x39f, // Ο // GREEK CAPITAL LETTER OMICRON + 0x3a0, // Π // GREEK CAPITAL LETTER PI + 0x3a1, // Ρ // GREEK CAPITAL LETTER RHO + 0x3a3, // Σ // GREEK CAPITAL LETTER SIGMA + 0x3a4, // Τ // GREEK CAPITAL LETTER TAU + 0x3a5, // Υ // GREEK CAPITAL LETTER UPSILON + 0x3a6, // Φ // GREEK CAPITAL LETTER PHI + 0x3a7, // Χ // GREEK CAPITAL LETTER KHI + 0x3a8, // Ψ // GREEK CAPITAL LETTER PSI + 0x3a9, // Ω // GREEK CAPITAL LETTER OMEGA + 0x3b1, // α // GREEK SMALL LETTER ALPHA + 0x3b2, // β // GREEK SMALL LETTER BETA + 0x3b3, // γ // GREEK SMALL LETTER GAMMA + 0x3b4, // δ // GREEK SMALL LETTER DELTA + 0x3b5, // ε // GREEK SMALL LETTER EPSILON + 0x3b6, // ζ // GREEK SMALL LETTER ZETA + 0x3b7, // η // GREEK SMALL LETTER ETA + 0x3b8, // θ // GREEK SMALL LETTER THETA + 0x3b9, // ι // GREEK SMALL LETTER IOTA + 0x3ba, // κ // GREEK SMALL LETTER KAPPA + 0x3bb, // λ // GREEK SMALL LETTER LAMBDA + 0x3bc, // μ // GREEK SMALL LETTER MU + 0x3bd, // ν // GREEK SMALL LETTER NU + 0x3be, // ξ // GREEK SMALL LETTER KSI + 0x3bf, // ο // GREEK SMALL LETTER OMICRON + 0x3c0, // π // GREEK SMALL LETTER PI + 0x3c1, // ρ // GREEK SMALL LETTER RHO + 0x3c3, // σ // GREEK SMALL LETTER SIGMA + 0x3c4, // τ // GREEK SMALL LETTER TAU + 0x3c5, // υ // GREEK SMALL LETTER UPSILON + 0x3c6, // φ // GREEK SMALL LETTER PHI + 0x3c7, // χ // GREEK SMALL LETTER KHI + 0x3c8, // ψ // GREEK SMALL LETTER PSI + 0x3c9, // ω // GREEK SMALL LETTER OMEGA + 0x1d07, // ᴇ // LATIN LETTER SMALL CAPITAL E + 0x212f, // ℯ // SCRIPT SMALL E + 0x2190, // ← // BACKWARD ARROW (leftarrow) + 0x2191, // ↑ // TOP ARROW (uparrow) + 0x2192, // → // FORWARD ARROW (rightarrow) + 0x2193, // ↓ // BOTTOM ARROW (downarrow) + 0x2194, // ↔ // BACKWARD FORWARD ARROW (leftrightarrow) + 0x2195, // ↕ // TOP BOTTOM ARROW (updownarrow) + 0x21d0, // ⇐ // DOUBLE BACKWARD ARROW (Leftarrow) + 0x21d1, // ⇑ // DOUBLE TOP ARROW (Uparrow) + 0x21d2, // ⇒ // DOUBLE FORWARD ARROW (Rightarrow) + 0x21d3, // ⇓ // DOUBLE BOTTOM ARROW (Downarrow) + 0x2200, // ∀ // FORALL + 0x2202, // ∂ // PARTIAL + 0x2203, // ∃ // EXIST + 0x2211, // ∑ // N-ARY SUMMATION + 0x221a, // √ // SQUARE ROOT + 0x221e, // ∞ // INFINITY + 0x222b, // ∫ // INTEGRAL + 0x2248, // ≈ // ALMOST EQUAL TO + 0x2260, // ≠ // NOT EQUAL TO + 0x2261, // ≡ // IS CONGRUENT TO + 0x2264, // ≤ // LESS-THAN OR EQUAL TO + 0x2265, // ≥ // GREATER-THAN OR EQUAL TO + 0xFFFD, // � // REPLACEMENT CHARACTER + 0x1d422, // 𝐢 // MATHEMATICAL BOLD SMALL I" +}; + +int NumberOfCodePoints = sizeof(CodePoints)/sizeof(CodePoints[0]); + +#endif diff --git a/kandinsky/fonts/rasterizer.c b/kandinsky/fonts/rasterizer.c index 5c953f2de..bc860c505 100644 --- a/kandinsky/fonts/rasterizer.c +++ b/kandinsky/fonts/rasterizer.c @@ -15,7 +15,15 @@ #include #include FT_FREETYPE_H +#ifdef ISBUILDINGFLASHER #include "code_points.h" +#else +#ifdef HAS_READER +#include "code_points_latex.h" +#else +#include "code_points.h" +#endif +#endif #include "../../ion/src/external/lz4/lz4hc.h"