From 8fe2b530337fe479c0551ffd9320984d02feeba0 Mon Sep 17 00:00:00 2001 From: Laury Date: Wed, 8 Dec 2021 18:18:45 +0100 Subject: [PATCH] [Makefile] Fix CI on n0110 --- Makefile | 4 + apps/reader/Makefile | 2 +- build/targets.device.mak | 5 +- build/targets.device.n0110.mak | 2 +- build/targets.mak | 2 +- kandinsky/Makefile | 63 ++++++--- kandinsky/fonts/code_points.h | 204 +++++++++++++++++++++++++- kandinsky/fonts/code_points_latex.h | 212 ---------------------------- kandinsky/fonts/rasterizer.c | 32 +++-- kandinsky/src/font.cpp | 2 +- 10 files changed, 274 insertions(+), 254 deletions(-) delete mode 100644 kandinsky/fonts/code_points_latex.h diff --git a/Makefile b/Makefile index d3b59008c..1d9969a62 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,10 @@ ifeq (${MODEL}, n0100) endif endif +ifeq ($(filter reader,$(apps_list)),) + HAS_READER := 1 +endif + ifeq (${MODEL}, n0110) apps_list = ${EPSILON_APPS} else diff --git a/apps/reader/Makefile b/apps/reader/Makefile index 3c777528d..0af0aefdf 100644 --- a/apps/reader/Makefile +++ b/apps/reader/Makefile @@ -18,4 +18,4 @@ app_images += apps/reader/reader_icon.png i18n_files += $(call i18n_without_universal_for,reader/base) -$(eval $(call depends_on_image,apps/reader/app.cpp,apps/reader/reader_icon.png)) \ No newline at end of file +$(eval $(call depends_on_image,apps/reader/app.cpp,apps/reader/reader_icon.png)) diff --git a/build/targets.device.mak b/build/targets.device.mak index 0050712c1..f9f34ef4e 100644 --- a/build/targets.device.mak +++ b/build/targets.device.mak @@ -39,17 +39,16 @@ openocd: # The flasher target is defined here because otherwise $(%_src) has not been # fully filled -flasher_src = $(ion_src) $(ion_device_flasher_src) $(liba_src) $(kandinsky_src) +flasher_src = $(ion_src) $(ion_device_flasher_src) $(liba_src) $(simple_kandinsky_src) $(BUILD_DIR)/flasher.light.$(EXE): $(call flavored_object_for,$(flasher_src),light usbxip) $(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): 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? -bench_src = $(ion_src) $(liba_src) $(kandinsky_src) $(poincare_src) $(libaxx_src) $(app_shared_src) $(ion_device_bench_src) +bench_src = $(ion_src) $(liba_src) $(default_kandinsky_src) $(poincare_src) $(libaxx_src) $(app_shared_src) $(ion_device_bench_src) $(BUILD_DIR)/bench.ram.$(EXE): $(call flavored_object_for,$(bench_src),consoleuart usbxip) $(BUILD_DIR)/bench.ram.$(EXE): LDFLAGS += -Lion/src/$(PLATFORM)/bench $(BUILD_DIR)/bench.ram.$(EXE): LDSCRIPT = ion/src/$(PLATFORM)/shared/ram.ld diff --git a/build/targets.device.n0110.mak b/build/targets.device.n0110.mak index 77bc1bf8c..5b1f9acda 100644 --- a/build/targets.device.n0110.mak +++ b/build/targets.device.n0110.mak @@ -1,7 +1,7 @@ HANDY_TARGETS += test.external_flash.write test.external_flash.read $(BUILD_DIR)/test.external_flash.%.$(EXE): LDSCRIPT = ion/test/device/n0110/external_flash_tests.ld -test_external_flash_src = $(ion_src) $(liba_src) $(libaxx_src) $(kandinsky_src) $(poincare_src) $(ion_device_dfu_relogated_src) $(runner_src) +test_external_flash_src = $(ion_src) $(liba_src) $(libaxx_src) $(default_kandinsky_src) $(poincare_src) $(ion_device_dfu_relogated_src) $(runner_src) $(BUILD_DIR)/test.external_flash.read.$(EXE): $(BUILD_DIR)/quiz/src/test_ion_external_flash_read_symbols.o $(call object_for,$(test_external_flash_src) $(test_ion_external_flash_read_src)) $(BUILD_DIR)/test.external_flash.write.$(EXE): $(BUILD_DIR)/quiz/src/test_ion_external_flash_write_symbols.o $(call object_for,$(test_external_flash_src) $(test_ion_external_flash_write_src)) diff --git a/build/targets.mak b/build/targets.mak index b570237f2..aa082ad90 100644 --- a/build/targets.mak +++ b/build/targets.mak @@ -7,7 +7,7 @@ HANDY_TARGETS_EXTENSIONS ?= # Epsilon base target -base_src = $(ion_src) $(liba_src) $(kandinsky_src) $(escher_src) $(libaxx_src) $(poincare_src) $(python_src) +base_src = $(ion_src) $(liba_src) $(default_kandinsky_src) $(escher_src) $(libaxx_src) $(poincare_src) $(python_src) epsilon_src = $(base_src) $(apps_src) diff --git a/kandinsky/Makefile b/kandinsky/Makefile index 3edb1c536..88cb6885a 100644 --- a/kandinsky/Makefile +++ b/kandinsky/Makefile @@ -21,10 +21,8 @@ kandinsky_src += $(addprefix kandinsky/src/,\ rect.cpp \ ) -kandinsky_src += $(addprefix kandinsky/fonts/, \ - LargeFont.ttf \ - SmallFont.ttf \ -) +simple_kandinsky_src := $(kandinsky_src) +default_kandinsky_src := $(kandinsky_src) tests_src += $(addprefix kandinsky/test/,\ color.cpp\ @@ -32,15 +30,7 @@ tests_src += $(addprefix kandinsky/test/,\ rect.cpp\ ) -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 +code_points = kandinsky/fonts/code_points.h RASTERIZER_CFLAGS := -std=c99 $(shell pkg-config freetype2 --cflags) RASTERIZER_LDFLAGS := $(shell pkg-config freetype2 --libs) @@ -61,16 +51,53 @@ $(eval $(call rule_for, \ RASTERIZER := $(BUILD_DIR)/kandinsky/fonts/rasterizer -# Define a rasterizing recipe. Parameters : font name, size, packed_width, packed_height +# Define a rasterizing recipe. Parameters : font source, font name, size, packed_width, packed_height define raster_font $(call rule_for, \ RASTER, \ - kandinsky/fonts/$(1).cpp, \ + kandinsky/fonts/$(2).cpp, \ kandinsky/fonts/$(1).ttf $$(RASTERIZER), \ - $$(RASTERIZER) $$< $(2) $(2) $(3) $(4) $(1) $$@ $(if $(HAS_LIBPNG),$$(basename $$@).png), \ + $$(RASTERIZER) $$< $(3) $(4) $(4) $(5) $(6) $(1) $$@ $(if $(HAS_LIBPNG),$$(basename $$@).png), \ global \ ) endef -$(eval $(call raster_font,SmallFont,12,7,14)) -$(eval $(call raster_font,LargeFont,16,10,18)) +ifdef HAS_READER + +kandinsky_src += $(addprefix kandinsky/fonts/, \ + LargeFontExtended.ttf \ + SmallFontExtended.ttf \ + LargeFontSimple.ttf \ + SmallFontSimple.ttf \ +) + +default_kandinsky_src += $(addprefix kandinsky/fonts/, \ + LargeFontExtended.ttf \ + SmallFontExtended.ttf \ +) + +simple_kandinsky_src += $(addprefix kandinsky/fonts/, \ + LargeFontSimple.ttf \ + SmallFontSimple.ttf \ +) + +$(eval $(call raster_font,SmallFont,SmallFontExtended,1,12,7,14)) +$(eval $(call raster_font,LargeFont,LargeFontExtended,1,16,10,18)) + +$(eval $(call raster_font,SmallFont,SmallFontSimple,0,12,7,14)) +$(eval $(call raster_font,LargeFont,LargeFontSimple,0,16,10,18)) + +else + +kandinsky_src += $(addprefix kandinsky/fonts/, \ + LargeFont.ttf \ + SmallFont.ttf \ +) + +simple_kandinsky_src = $(kandinsky_src) +default_kandinsky_src = $(kandinsky_src) + +$(eval $(call raster_font,SmallFont,SmallFontSimple,0,12,7,14)) +$(eval $(call raster_font,LargeFont,LargeFontSimple,0,16,10,18)) + +endif diff --git a/kandinsky/fonts/code_points.h b/kandinsky/fonts/code_points.h index 1804fc64a..0c1a39a7f 100644 --- a/kandinsky/fonts/code_points.h +++ b/kandinsky/fonts/code_points.h @@ -8,7 +8,7 @@ /* 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[] = { +uint32_t SimpleCodePoints[] = { 0x20, // // SPACE 0x21, // ! // EXCLAMATION MARK 0x22, // " // QUOTATION MARK @@ -152,6 +152,206 @@ uint32_t CodePoints[] = { 0x1d422, // 𝐢 // MATHEMATICAL BOLD SMALL I" }; -int NumberOfCodePoints = sizeof(CodePoints)/sizeof(CodePoints[0]); +uint32_t ExtendedCodePoints[] = { + 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 NumberOfSimpleCodePoints = sizeof(SimpleCodePoints)/sizeof(SimpleCodePoints[0]); +int NumberOfExtendedCodePoints = sizeof(ExtendedCodePoints)/sizeof(ExtendedCodePoints[0]); #endif diff --git a/kandinsky/fonts/code_points_latex.h b/kandinsky/fonts/code_points_latex.h deleted file mode 100644 index a4cc72151..000000000 --- a/kandinsky/fonts/code_points_latex.h +++ /dev/null @@ -1,212 +0,0 @@ -#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 06c460707..7e4e84359 100644 --- a/kandinsky/fonts/rasterizer.c +++ b/kandinsky/fonts/rasterizer.c @@ -15,11 +15,8 @@ #include #include FT_FREETYPE_H -#ifdef ISBUILDINGFLASHER #include "code_points.h" -#else -#include "code_points_latex.h" -#endif + #include "../../ion/src/external/lz4/lz4hc.h" @@ -53,17 +50,18 @@ int main(int argc, char * argv[]) { FT_Face face; image_t bitmap_image; - int expectedNumberOfArguments = 8; + int expectedNumberOfArguments = 9; #ifdef GENERATE_PNG - expectedNumberOfArguments = 9; + expectedNumberOfArguments = 10; #endif if (argc != expectedNumberOfArguments) { #ifdef GENERATE_PNG - fprintf(stderr, "Usage: %s font_file glyph_width glyph_height font_name output_cpp output_png\n", argv[0]); + fprintf(stderr, "Usage: %s font_file extended glyph_width glyph_height font_name output_cpp output_png\n", argv[0]); #else - fprintf(stderr, "Usage: %s font_file glyph_width glyph_height font_name output_cpp\n", argv[0]); + fprintf(stderr, "Usage: %s font_file extended glyph_width glyph_height font_name output_cpp\n", argv[0]); #endif fprintf(stderr, " font_file: Path of the font file to load\n"); + fprintf(stderr, " extended: 0 if simple set of code points, else 1\n"); fprintf(stderr, " glyph_width: Width of bitmap glyphs, in pixels\n"); fprintf(stderr, " glyph_height: Height of bitmap glyphs, in pixels\n"); fprintf(stderr, " packed_glyph_width: Minimal glyph width in pixels. Pass 0 if unsure.\n"); @@ -77,16 +75,20 @@ int main(int argc, char * argv[]) { } char * font_file = argv[1]; - int requested_glyph_width = atoi(argv[2]); - int requested_glyph_height = atoi(argv[3]); - int packed_glyph_width = atoi(argv[4]); - int packed_glyph_height = atoi(argv[5]); - char * font_name = argv[6]; - char * output_cpp = argv[7]; + int extended_set = atoi(argv[2]); + int requested_glyph_width = atoi(argv[3]); + int requested_glyph_height = atoi(argv[4]); + int packed_glyph_width = atoi(argv[5]); + int packed_glyph_height = atoi(argv[6]); + char * font_name = argv[7]; + char * output_cpp = argv[8]; #ifdef GENERATE_PNG - char * output_png = argv[8]; + char * output_png = argv[9]; #endif + uint32_t * CodePoints = extended_set ? ExtendedCodePoints : SimpleCodePoints; + int NumberOfCodePoints = extended_set ? NumberOfExtendedCodePoints : NumberOfSimpleCodePoints; + ENSURE(!FT_Init_FreeType(&library), "Initializing library"); // 0 means we're picking the first face in the provided file diff --git a/kandinsky/src/font.cpp b/kandinsky/src/font.cpp index 25d82e93a..a1d217521 100644 --- a/kandinsky/src/font.cpp +++ b/kandinsky/src/font.cpp @@ -155,7 +155,7 @@ KDFont::GlyphIndex KDFont::indexForCodePoint(CodePoint c) const { return endPair->glyphIndex(); } NoMatchingGlyph: - assert(CodePoints[IndexForReplacementCharacterCodePoint] == 0xFFFD); + assert(SimpleCodePoints[IndexForReplacementCharacterCodePoint] == 0xFFFD); return IndexForReplacementCharacterCodePoint; #endif }