chore: Move opendyslexic from flash to SD (#2231)

This commit is contained in:
Uri Tauber
2026-06-01 13:49:57 -04:00
committed by GitHub
parent 50e4d550fb
commit b12839d1d4
53 changed files with 38 additions and 49204 deletions
-1
View File
@@ -457,7 +457,6 @@ void onExit() { /* free: vTaskDelete, free buffer, close member FsFiles */ Act
**All fonts are loaded as global static objects** at firmware startup: **All fonts are loaded as global static objects** at firmware startup:
- Noto Serif: 12, 14, 16, 18pt (4 styles each: regular, bold, italic, bold-italic) - Noto Serif: 12, 14, 16, 18pt (4 styles each: regular, bold, italic, bold-italic)
- Noto Sans: 12, 14, 16, 18pt (4 styles each) - Noto Sans: 12, 14, 16, 18pt (4 styles each)
- OpenDyslexic: 8, 10, 12, 14pt (4 styles each)
- Ubuntu UI fonts: 10, 12pt (2 styles) - Ubuntu UI fonts: 10, 12pt (2 styles)
**Total**: ~80+ global `EpdFont` and `EpdFontFamily` objects **Total**: ~80+ global `EpdFont` and `EpdFontFamily` objects
+1 -2
View File
@@ -200,7 +200,6 @@ The Settings screen allows you to configure the device's behavior. There are a f
- "Noto Serif" (default) - Google's serif font - "Noto Serif" (default) - Google's serif font
- "Noto Sans" - Google's sans-serif font - "Noto Sans" - Google's sans-serif font
- "Open Dyslexic" - Font designed for readers with dyslexia
- **Reader Font Size**: Adjust the text size for reading; options are "Small", "Medium" (default), "Large", or "X Large". - **Reader Font Size**: Adjust the text size for reading; options are "Small", "Medium" (default), "Large", or "X Large".
@@ -474,7 +473,7 @@ To use custom sleep images, set the sleep screen mode to **Custom** or **Cover +
### 3.8 Custom Fonts (SD Card) ### 3.8 Custom Fonts (SD Card)
CrossPoint supports loading additional fonts from the SD card, extending beyond the three built-in families (Noto Serif, Noto Sans, Open Dyslexic). Custom fonts can include extended Unicode coverage, enabling CJK (Chinese, Japanese, Korean) and other scripts. CrossPoint supports loading additional fonts from the SD card, extending beyond the two built-in families (Noto Serif, Noto Sans). Custom fonts can include extended Unicode coverage, enabling CJK (Chinese, Japanese, Korean) and other scripts.
There are three ways to install fonts: There are three ways to install fonts:
-16
View File
@@ -33,22 +33,6 @@
#include <builtinFonts/notosans_18_bolditalic.h> #include <builtinFonts/notosans_18_bolditalic.h>
#include <builtinFonts/notosans_18_italic.h> #include <builtinFonts/notosans_18_italic.h>
#include <builtinFonts/notosans_18_regular.h> #include <builtinFonts/notosans_18_regular.h>
#include <builtinFonts/opendyslexic_10_bold.h>
#include <builtinFonts/opendyslexic_10_bolditalic.h>
#include <builtinFonts/opendyslexic_10_italic.h>
#include <builtinFonts/opendyslexic_10_regular.h>
#include <builtinFonts/opendyslexic_12_bold.h>
#include <builtinFonts/opendyslexic_12_bolditalic.h>
#include <builtinFonts/opendyslexic_12_italic.h>
#include <builtinFonts/opendyslexic_12_regular.h>
#include <builtinFonts/opendyslexic_14_bold.h>
#include <builtinFonts/opendyslexic_14_bolditalic.h>
#include <builtinFonts/opendyslexic_14_italic.h>
#include <builtinFonts/opendyslexic_14_regular.h>
#include <builtinFonts/opendyslexic_8_bold.h>
#include <builtinFonts/opendyslexic_8_bolditalic.h>
#include <builtinFonts/opendyslexic_8_italic.h>
#include <builtinFonts/opendyslexic_8_regular.h>
#include <builtinFonts/ubuntu_10_bold.h> #include <builtinFonts/ubuntu_10_bold.h>
#include <builtinFonts/ubuntu_10_regular.h> #include <builtinFonts/ubuntu_10_regular.h>
#include <builtinFonts/ubuntu_12_bold.h> #include <builtinFonts/ubuntu_12_bold.h>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-36
View File
@@ -80,42 +80,6 @@ ruby -rdigest -e 'puts [
].map{|f| Digest::SHA256.hexdigest(File.read(f)).to_i(16) }.sum % (2 ** 32) - (2 ** 31)' ].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 ($( echo "#define UI_10_FONT_ID ($(
ruby -rdigest -e 'puts [ ruby -rdigest -e 'puts [
"./ubuntu_10_regular.h", "./ubuntu_10_regular.h",
@@ -7,7 +7,6 @@ cd "$(dirname "$0")"
READER_FONT_STYLES=("Regular" "Italic" "Bold" "BoldItalic") READER_FONT_STYLES=("Regular" "Italic" "Bold" "BoldItalic")
NOTOSERIF_FONT_SIZES=(12 14 16 18) NOTOSERIF_FONT_SIZES=(12 14 16 18)
NOTOSANS_FONT_SIZES=(12 14 16 18) NOTOSANS_FONT_SIZES=(12 14 16 18)
OPENDYSLEXIC_FONT_SIZES=(8 10 12 14)
for size in ${NOTOSERIF_FONT_SIZES[@]}; do for size in ${NOTOSERIF_FONT_SIZES[@]}; do
for style in ${READER_FONT_STYLES[@]}; do for style in ${READER_FONT_STYLES[@]}; do
@@ -29,16 +28,6 @@ for size in ${NOTOSANS_FONT_SIZES[@]}; do
done done
done done
for size in ${OPENDYSLEXIC_FONT_SIZES[@]}; do
for style in ${READER_FONT_STYLES[@]}; do
font_name="opendyslexic_${size}_$(echo $style | tr '[:upper:]' '[:lower:]')"
font_path="../builtinFonts/source/OpenDyslexic/OpenDyslexic-${style}.otf"
output_path="../builtinFonts/${font_name}.h"
python fontconvert.py $font_name $size $font_path --2bit --compress > $output_path
echo "Generated $output_path"
done
done
UI_FONT_SIZES=(10 12) UI_FONT_SIZES=(10 12)
UI_FONT_STYLES=("Regular" "Bold") UI_FONT_STYLES=("Regular" "Bold")
+12
View File
@@ -198,6 +198,18 @@ families:
italic: {url: "https://raw.githubusercontent.com/adobe-fonts/source-code-pro/release/TTF/SourceCodePro-It.ttf"} italic: {url: "https://raw.githubusercontent.com/adobe-fonts/source-code-pro/release/TTF/SourceCodePro-It.ttf"}
bolditalic: {url: "https://raw.githubusercontent.com/adobe-fonts/source-code-pro/release/TTF/SourceCodePro-BoldIt.ttf"} bolditalic: {url: "https://raw.githubusercontent.com/adobe-fonts/source-code-pro/release/TTF/SourceCodePro-BoldIt.ttf"}
# ── Dyslexia ───────────────────────────────────────────────────────────────
- name: OpenDyslexic
description: "Dyslexia-friendly font (Latin)"
intervals: latin-ext
sizes: [8, 10, 12, 14]
styles:
regular: {path: "builtinFonts/source/OpenDyslexic/OpenDyslexic-Regular.otf"}
bold: {path: "builtinFonts/source/OpenDyslexic/OpenDyslexic-Bold.otf"}
italic: {path: "builtinFonts/source/OpenDyslexic/OpenDyslexic-Italic.otf"}
bolditalic: {path: "builtinFonts/source/OpenDyslexic/OpenDyslexic-BoldItalic.otf"}
# ── Accessibility ────────────────────────────────────────────────────── # ── Accessibility ──────────────────────────────────────────────────────
- name: AtkinsonHyperlegibleNext - name: AtkinsonHyperlegibleNext
-1
View File
@@ -130,7 +130,6 @@ STR_PREV_NEXT: "Назад/Наперад"
STR_NEXT_PREV: "Наперад/Назад" STR_NEXT_PREV: "Наперад/Назад"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Маленькі" STR_SMALL: "Маленькі"
STR_MEDIUM: "Сярэдні" STR_MEDIUM: "Сярэдні"
STR_LARGE: "Вялікі" STR_LARGE: "Вялікі"
-1
View File
@@ -141,7 +141,6 @@ STR_NEXT_PREV: "Següent/Anterior"
STR_DISABLED: "Desactivats" STR_DISABLED: "Desactivats"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Petita" STR_SMALL: "Petita"
STR_MEDIUM: "Mitjana" STR_MEDIUM: "Mitjana"
STR_LARGE: "Gran" STR_LARGE: "Gran"
-1
View File
@@ -135,7 +135,6 @@ STR_PREV_NEXT: "Předchozí/Další"
STR_NEXT_PREV: "Další/Předchozí" STR_NEXT_PREV: "Další/Předchozí"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Malý" STR_SMALL: "Malý"
STR_MEDIUM: "Střední" STR_MEDIUM: "Střední"
STR_LARGE: "Velký" STR_LARGE: "Velký"
-1
View File
@@ -140,7 +140,6 @@ STR_PREV_NEXT: "Forrige/Næste"
STR_NEXT_PREV: "Næste/Forrige" STR_NEXT_PREV: "Næste/Forrige"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Lille" STR_SMALL: "Lille"
STR_MEDIUM: "Mellem" STR_MEDIUM: "Mellem"
STR_LARGE: "Stor" STR_LARGE: "Stor"
-1
View File
@@ -140,7 +140,6 @@ STR_PREV_NEXT: "Vorige/Volgende"
STR_NEXT_PREV: "Volgende/Vorige" STR_NEXT_PREV: "Volgende/Vorige"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Klein" STR_SMALL: "Klein"
STR_MEDIUM: "Gemiddeld" STR_MEDIUM: "Gemiddeld"
STR_LARGE: "Groot" STR_LARGE: "Groot"
-1
View File
@@ -143,7 +143,6 @@ STR_NEXT_PREV: "Next/Prev"
STR_DISABLED: "Disabled" STR_DISABLED: "Disabled"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Small" STR_SMALL: "Small"
STR_MEDIUM: "Medium" STR_MEDIUM: "Medium"
STR_LARGE: "Large" STR_LARGE: "Large"
-1
View File
@@ -135,7 +135,6 @@ STR_PREV_NEXT: "Edell/Seur"
STR_NEXT_PREV: "Seur/Edell" STR_NEXT_PREV: "Seur/Edell"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Pieni" STR_SMALL: "Pieni"
STR_MEDIUM: "Keskikokoinen" STR_MEDIUM: "Keskikokoinen"
STR_LARGE: "Suuri" STR_LARGE: "Suuri"
-1
View File
@@ -140,7 +140,6 @@ STR_PREV_NEXT: "Préc/Suiv"
STR_NEXT_PREV: "Suiv/Préc" STR_NEXT_PREV: "Suiv/Préc"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Petit" STR_SMALL: "Petit"
STR_MEDIUM: "Moyen" STR_MEDIUM: "Moyen"
STR_LARGE: "Grand" STR_LARGE: "Grand"
-1
View File
@@ -135,7 +135,6 @@ STR_NEXT_PREV: "Weiter/Zurück"
STR_DISABLED: "Gesperrt" STR_DISABLED: "Gesperrt"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Klein" STR_SMALL: "Klein"
STR_MEDIUM: "Mittel" STR_MEDIUM: "Mittel"
STR_LARGE: "Groß" STR_LARGE: "Groß"
-1
View File
@@ -139,7 +139,6 @@ STR_PREV_NEXT: "הקודם/הבא"
STR_NEXT_PREV: "הבא/הקודם" STR_NEXT_PREV: "הבא/הקודם"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "קטן" STR_SMALL: "קטן"
STR_MEDIUM: "בינוני" STR_MEDIUM: "בינוני"
STR_LARGE: "גדול" STR_LARGE: "גדול"
-1
View File
@@ -137,7 +137,6 @@ STR_PREV_NEXT: "Előző/Következő"
STR_NEXT_PREV: "Következő/Előző" STR_NEXT_PREV: "Következő/Előző"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Kicsi" STR_SMALL: "Kicsi"
STR_MEDIUM: "Közepes" STR_MEDIUM: "Közepes"
STR_LARGE: "Nagy" STR_LARGE: "Nagy"
-1
View File
@@ -141,7 +141,6 @@ STR_PREV_NEXT: "Prec/Succ"
STR_NEXT_PREV: "Succ/Prec" STR_NEXT_PREV: "Succ/Prec"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Piccolo" STR_SMALL: "Piccolo"
STR_MEDIUM: "Medio" STR_MEDIUM: "Medio"
STR_LARGE: "Grande" STR_LARGE: "Grande"
-1
View File
@@ -131,7 +131,6 @@ STR_PREV_NEXT: "Алдыңғы/Келесі"
STR_NEXT_PREV: "Келесі/Алдыңғы" STR_NEXT_PREV: "Келесі/Алдыңғы"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Кішкентай" STR_SMALL: "Кішкентай"
STR_MEDIUM: "Орташа" STR_MEDIUM: "Орташа"
STR_LARGE: "Үлкен" STR_LARGE: "Үлкен"
-1
View File
@@ -137,7 +137,6 @@ STR_PREV_NEXT: "Atgal/Pirmyn"
STR_NEXT_PREV: "Pirmyn/Atgal" STR_NEXT_PREV: "Pirmyn/Atgal"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "O. Dyslexic"
STR_SMALL: "Mažas" STR_SMALL: "Mažas"
STR_MEDIUM: "Vidut." STR_MEDIUM: "Vidut."
STR_LARGE: "Didelis" STR_LARGE: "Didelis"
-1
View File
@@ -141,7 +141,6 @@ STR_PREV_NEXT: "Poprz./Nast."
STR_NEXT_PREV: "Nast./Poprz." STR_NEXT_PREV: "Nast./Poprz."
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Mały" STR_SMALL: "Mały"
STR_MEDIUM: "Średni" STR_MEDIUM: "Średni"
STR_LARGE: "Duży" STR_LARGE: "Duży"
-1
View File
@@ -135,7 +135,6 @@ STR_PREV_NEXT: "Ant/Próx"
STR_NEXT_PREV: "Próx/Ant" STR_NEXT_PREV: "Próx/Ant"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Pequeno" STR_SMALL: "Pequeno"
STR_MEDIUM: "Médio" STR_MEDIUM: "Médio"
STR_LARGE: "Grande" STR_LARGE: "Grande"
-1
View File
@@ -140,7 +140,6 @@ STR_PREV_NEXT: "Înainte/Înapoi"
STR_NEXT_PREV: "Înapoi/Înainte" STR_NEXT_PREV: "Înapoi/Înainte"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Mic" STR_SMALL: "Mic"
STR_MEDIUM: "Mediu" STR_MEDIUM: "Mediu"
STR_LARGE: "Mare" STR_LARGE: "Mare"
-1
View File
@@ -143,7 +143,6 @@ STR_NEXT_PREV: "Вперёд/Назад"
STR_DISABLED: "Выключены" STR_DISABLED: "Выключены"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Маленький" STR_SMALL: "Маленький"
STR_MEDIUM: "Средний" STR_MEDIUM: "Средний"
STR_LARGE: "Большой" STR_LARGE: "Большой"
-1
View File
@@ -137,7 +137,6 @@ STR_PREV_NEXT: "Nazaj/Naprej"
STR_NEXT_PREV: "Naprej/Nazaj" STR_NEXT_PREV: "Naprej/Nazaj"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Majhno" STR_SMALL: "Majhno"
STR_MEDIUM: "Srednje" STR_MEDIUM: "Srednje"
STR_LARGE: "Veliko" STR_LARGE: "Veliko"
-1
View File
@@ -142,7 +142,6 @@ STR_NEXT_PREV: "Sig./Ant."
STR_DISABLED: "Desactivados" STR_DISABLED: "Desactivados"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Pequeño" STR_SMALL: "Pequeño"
STR_MEDIUM: "Mediano" STR_MEDIUM: "Mediano"
STR_LARGE: "Grande" STR_LARGE: "Grande"
-1
View File
@@ -143,7 +143,6 @@ STR_NEXT_PREV: "Nästa/Förra"
STR_DISABLED: "Inaktiverad" STR_DISABLED: "Inaktiverad"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Liten" STR_SMALL: "Liten"
STR_MEDIUM: "Medium" STR_MEDIUM: "Medium"
STR_LARGE: "Stor" STR_LARGE: "Stor"
-1
View File
@@ -135,7 +135,6 @@ STR_PREV_NEXT: "Önceki/Sonraki"
STR_NEXT_PREV: "Sonraki/Önceki" STR_NEXT_PREV: "Sonraki/Önceki"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Küçük" STR_SMALL: "Küçük"
STR_MEDIUM: "Orta" STR_MEDIUM: "Orta"
STR_LARGE: "Büyük" STR_LARGE: "Büyük"
-1
View File
@@ -141,7 +141,6 @@ STR_PREV_NEXT: "Попер/Наст"
STR_NEXT_PREV: "Наст/Попер" STR_NEXT_PREV: "Наст/Попер"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Малий" STR_SMALL: "Малий"
STR_MEDIUM: "Середній" STR_MEDIUM: "Середній"
STR_LARGE: "Великий" STR_LARGE: "Великий"
-1
View File
@@ -145,7 +145,6 @@ STR_NEXT_PREV: "Següent/Anterior"
STR_DISABLED: "Desactivats" STR_DISABLED: "Desactivats"
STR_NOTO_SERIF: "Noto Serif" STR_NOTO_SERIF: "Noto Serif"
STR_NOTO_SANS: "Noto Sans" STR_NOTO_SANS: "Noto Sans"
STR_OPEN_DYSLEXIC: "Open Dyslexic"
STR_SMALL: "Petita" STR_SMALL: "Petita"
STR_MEDIUM: "Mitjana" STR_MEDIUM: "Mitjana"
STR_LARGE: "Gran" STR_LARGE: "Gran"
+11 -23
View File
@@ -194,7 +194,17 @@ bool CrossPointSettings::loadFromBinaryFile() {
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
readAndValidate(inputFile, sideButtonLayout, SIDE_BUTTON_LAYOUT_COUNT); readAndValidate(inputFile, sideButtonLayout, SIDE_BUTTON_LAYOUT_COUNT);
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
readAndValidate(inputFile, fontFamily, FONT_FAMILY_COUNT); {
uint8_t legacyFontFamily;
serialization::readPod(inputFile, legacyFontFamily);
if (legacyFontFamily < BUILTIN_FONT_COUNT) {
fontFamily = legacyFontFamily;
} else if (legacyFontFamily == LEGACY_OPENDYSLEXIC) {
fontFamily = NOTOSERIF;
strncpy(sdFontFamilyName, "OpenDyslexic", sizeof(sdFontFamilyName) - 1);
sdFontFamilyName[sizeof(sdFontFamilyName) - 1] = '\0';
}
}
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
readAndValidate(inputFile, fontSize, FONT_SIZE_COUNT); readAndValidate(inputFile, fontSize, FONT_SIZE_COUNT);
if (++settingsRead >= fileSettingsCount) break; if (++settingsRead >= fileSettingsCount) break;
@@ -308,16 +318,6 @@ float CrossPointSettings::getReaderLineCompression() const {
case WIDE: case WIDE:
return 1.0f; return 1.0f;
} }
case OPENDYSLEXIC:
switch (lineSpacing) {
case TIGHT:
return 0.90f;
case NORMAL:
default:
return 0.95f;
case WIDE:
return 1.0f;
}
} }
} }
@@ -378,17 +378,5 @@ int CrossPointSettings::getReaderFontId() const {
case EXTRA_LARGE: case EXTRA_LARGE:
return NOTOSANS_18_FONT_ID; return NOTOSANS_18_FONT_ID;
} }
case OPENDYSLEXIC:
switch (fontSize) {
case SMALL:
return OPENDYSLEXIC_8_FONT_ID;
case MEDIUM:
default:
return OPENDYSLEXIC_10_FONT_ID;
case LARGE:
return OPENDYSLEXIC_12_FONT_ID;
case EXTRA_LARGE:
return OPENDYSLEXIC_14_FONT_ID;
}
} }
} }
+2 -1
View File
@@ -98,7 +98,8 @@ class CrossPointSettings {
enum SIDE_BUTTON_LAYOUT { PREV_NEXT = 0, NEXT_PREV = 1, SIDE_BUTTONS_DISABLED = 2, SIDE_BUTTON_LAYOUT_COUNT }; enum SIDE_BUTTON_LAYOUT { PREV_NEXT = 0, NEXT_PREV = 1, SIDE_BUTTONS_DISABLED = 2, SIDE_BUTTON_LAYOUT_COUNT };
// Font family options (built-in fonts only; SD card fonts use sdFontFamilyName) // Font family options (built-in fonts only; SD card fonts use sdFontFamilyName)
enum FONT_FAMILY { NOTOSERIF = 0, NOTOSANS = 1, OPENDYSLEXIC = 2, FONT_FAMILY_COUNT }; enum FONT_FAMILY { NOTOSERIF = 0, NOTOSANS = 1, FONT_FAMILY_COUNT };
static constexpr uint8_t LEGACY_OPENDYSLEXIC = 2;
static constexpr uint8_t BUILTIN_FONT_COUNT = FONT_FAMILY_COUNT; static constexpr uint8_t BUILTIN_FONT_COUNT = FONT_FAMILY_COUNT;
// Font size options // Font size options
enum FONT_SIZE { SMALL = 0, MEDIUM = 1, LARGE = 2, EXTRA_LARGE = 3, FONT_SIZE_COUNT }; enum FONT_SIZE { SMALL = 0, MEDIUM = 1, LARGE = 2, EXTRA_LARGE = 3, FONT_SIZE_COUNT };
+10 -1
View File
@@ -244,11 +244,20 @@ bool JsonSettingsIO::loadSettings(CrossPointSettings& s, const char* json, bool*
CrossPointSettings::validateFrontButtonMapping(s); CrossPointSettings::validateFrontButtonMapping(s);
// Font family — uses dynamic getter/setter in SettingsList so the generic loop skips it. // Font family — uses dynamic getter/setter in SettingsList so the generic loop skips it.
s.fontFamily = clamp(doc["fontFamily"] | (uint8_t)0, CrossPointSettings::BUILTIN_FONT_COUNT, 0); const uint8_t storedFontFamily = doc["fontFamily"] | (uint8_t)0;
s.fontFamily = clamp(storedFontFamily, CrossPointSettings::BUILTIN_FONT_COUNT, 0);
// SD card font family name — not in SettingsList, load manually // SD card font family name — not in SettingsList, load manually
const char* sfn = doc["sdFontFamilyName"] | ""; const char* sfn = doc["sdFontFamilyName"] | "";
strncpy(s.sdFontFamilyName, sfn, sizeof(s.sdFontFamilyName) - 1); strncpy(s.sdFontFamilyName, sfn, sizeof(s.sdFontFamilyName) - 1);
s.sdFontFamilyName[sizeof(s.sdFontFamilyName) - 1] = '\0'; s.sdFontFamilyName[sizeof(s.sdFontFamilyName) - 1] = '\0';
if (storedFontFamily == CrossPointSettings::LEGACY_OPENDYSLEXIC && s.sdFontFamilyName[0] == '\0') {
s.fontFamily = CrossPointSettings::NOTOSERIF;
strncpy(s.sdFontFamilyName, "OpenDyslexic", sizeof(s.sdFontFamilyName) - 1);
s.sdFontFamilyName[sizeof(s.sdFontFamilyName) - 1] = '\0';
if (needsResave) *needsResave = true;
} else if (storedFontFamily >= CrossPointSettings::BUILTIN_FONT_COUNT) {
if (needsResave) *needsResave = true;
}
// Language -- stored as code string for stability across enum reorders. // Language -- stored as code string for stability across enum reorders.
if (doc["language"].is<const char*>()) { if (doc["language"].is<const char*>()) {
+2 -4
View File
@@ -18,7 +18,7 @@
// are appended after the built-in fonts. Otherwise only built-in fonts are listed. // are appended after the built-in fonts. Otherwise only built-in fonts are listed.
inline SettingInfo buildFontFamilySetting(const SdCardFontRegistry* registry) { inline SettingInfo buildFontFamilySetting(const SdCardFontRegistry* registry) {
// Built-in font labels (StrId) // Built-in font labels (StrId)
std::vector<StrId> enumValues = {StrId::STR_NOTO_SERIF, StrId::STR_NOTO_SANS, StrId::STR_OPEN_DYSLEXIC}; std::vector<StrId> enumValues = {StrId::STR_NOTO_SERIF, StrId::STR_NOTO_SANS};
// Runtime string labels for SD card fonts // Runtime string labels for SD card fonts
std::vector<std::string> enumStringValues; std::vector<std::string> enumStringValues;
@@ -41,7 +41,6 @@ inline SettingInfo buildFontFamilySetting(const SdCardFontRegistry* registry) {
if (sdFontCount > 0) { if (sdFontCount > 0) {
allStringValues.push_back(I18N.get(StrId::STR_NOTO_SERIF)); allStringValues.push_back(I18N.get(StrId::STR_NOTO_SERIF));
allStringValues.push_back(I18N.get(StrId::STR_NOTO_SANS)); allStringValues.push_back(I18N.get(StrId::STR_NOTO_SANS));
allStringValues.push_back(I18N.get(StrId::STR_OPEN_DYSLEXIC));
allStringValues.insert(allStringValues.end(), enumStringValues.begin(), enumStringValues.end()); allStringValues.insert(allStringValues.end(), enumStringValues.begin(), enumStringValues.end());
} }
@@ -134,8 +133,7 @@ inline std::vector<SettingInfo> getSettingsList(const SdCardFontRegistry* regist
// Built-in font-family entry. Replaced per-call with a registry-aware // Built-in font-family entry. Replaced per-call with a registry-aware
// version when SD fonts are installed. // version when SD fonts are installed.
SettingInfo::Enum(StrId::STR_FONT_FAMILY, &CrossPointSettings::fontFamily, SettingInfo::Enum(StrId::STR_FONT_FAMILY, &CrossPointSettings::fontFamily,
{StrId::STR_NOTO_SERIF, StrId::STR_NOTO_SANS, StrId::STR_OPEN_DYSLEXIC}, "fontFamily", {StrId::STR_NOTO_SERIF, StrId::STR_NOTO_SANS}, "fontFamily", StrId::STR_CAT_READER),
StrId::STR_CAT_READER),
SettingInfo::Enum(StrId::STR_FONT_SIZE, &CrossPointSettings::fontSize, SettingInfo::Enum(StrId::STR_FONT_SIZE, &CrossPointSettings::fontSize,
{StrId::STR_SMALL, StrId::STR_MEDIUM, StrId::STR_LARGE, StrId::STR_X_LARGE}, "fontSize", {StrId::STR_SMALL, StrId::STR_MEDIUM, StrId::STR_LARGE, StrId::STR_X_LARGE}, "fontSize",
StrId::STR_CAT_READER), StrId::STR_CAT_READER),
@@ -21,7 +21,6 @@ void FontSelectionActivity::onEnter() {
fonts_.push_back({I18N.get(StrId::STR_NOTO_SERIF), true, 0}); fonts_.push_back({I18N.get(StrId::STR_NOTO_SERIF), true, 0});
fonts_.push_back({I18N.get(StrId::STR_NOTO_SANS), true, 1}); fonts_.push_back({I18N.get(StrId::STR_NOTO_SANS), true, 1});
fonts_.push_back({I18N.get(StrId::STR_OPEN_DYSLEXIC), true, 2});
if (registry_) { if (registry_) {
const auto& families = registry_->getFamilies(); const auto& families = registry_->getFamilies();
-8
View File
@@ -9,10 +9,6 @@
#define NOTOSANS_14_FONT_ID (-1589315735) #define NOTOSANS_14_FONT_ID (-1589315735)
#define NOTOSANS_16_FONT_ID (1669013660) #define NOTOSANS_16_FONT_ID (1669013660)
#define NOTOSANS_18_FONT_ID (37077304) #define NOTOSANS_18_FONT_ID (37077304)
#define OPENDYSLEXIC_8_FONT_ID (-853313197)
#define OPENDYSLEXIC_10_FONT_ID (963754926)
#define OPENDYSLEXIC_12_FONT_ID (858950283)
#define OPENDYSLEXIC_14_FONT_ID (1877344218)
#define UI_10_FONT_ID (22918846) #define UI_10_FONT_ID (22918846)
#define UI_12_FONT_ID (1635686837) #define UI_12_FONT_ID (1635686837)
#define SMALL_FONT_ID (674098198) #define SMALL_FONT_ID (674098198)
@@ -27,10 +23,6 @@ static_assert(NOTOSANS_12_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(NOTOSANS_14_FONT_ID != 0, "Font ID collision with sentinel"); static_assert(NOTOSANS_14_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(NOTOSANS_16_FONT_ID != 0, "Font ID collision with sentinel"); static_assert(NOTOSANS_16_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(NOTOSANS_18_FONT_ID != 0, "Font ID collision with sentinel"); static_assert(NOTOSANS_18_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(OPENDYSLEXIC_8_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(OPENDYSLEXIC_10_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(OPENDYSLEXIC_12_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(OPENDYSLEXIC_14_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(UI_10_FONT_ID != 0, "Font ID collision with sentinel"); static_assert(UI_10_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(UI_12_FONT_ID != 0, "Font ID collision with sentinel"); static_assert(UI_12_FONT_ID != 0, "Font ID collision with sentinel");
static_assert(SMALL_FONT_ID != 0, "Font ID collision with sentinel"); static_assert(SMALL_FONT_ID != 0, "Font ID collision with sentinel");
-28
View File
@@ -94,30 +94,6 @@ EpdFont notosans18BoldItalicFont(&notosans_18_bolditalic);
EpdFontFamily notosans18FontFamily(&notosans18RegularFont, &notosans18BoldFont, &notosans18ItalicFont, EpdFontFamily notosans18FontFamily(&notosans18RegularFont, &notosans18BoldFont, &notosans18ItalicFont,
&notosans18BoldItalicFont); &notosans18BoldItalicFont);
EpdFont opendyslexic8RegularFont(&opendyslexic_8_regular);
EpdFont opendyslexic8BoldFont(&opendyslexic_8_bold);
EpdFont opendyslexic8ItalicFont(&opendyslexic_8_italic);
EpdFont opendyslexic8BoldItalicFont(&opendyslexic_8_bolditalic);
EpdFontFamily opendyslexic8FontFamily(&opendyslexic8RegularFont, &opendyslexic8BoldFont, &opendyslexic8ItalicFont,
&opendyslexic8BoldItalicFont);
EpdFont opendyslexic10RegularFont(&opendyslexic_10_regular);
EpdFont opendyslexic10BoldFont(&opendyslexic_10_bold);
EpdFont opendyslexic10ItalicFont(&opendyslexic_10_italic);
EpdFont opendyslexic10BoldItalicFont(&opendyslexic_10_bolditalic);
EpdFontFamily opendyslexic10FontFamily(&opendyslexic10RegularFont, &opendyslexic10BoldFont, &opendyslexic10ItalicFont,
&opendyslexic10BoldItalicFont);
EpdFont opendyslexic12RegularFont(&opendyslexic_12_regular);
EpdFont opendyslexic12BoldFont(&opendyslexic_12_bold);
EpdFont opendyslexic12ItalicFont(&opendyslexic_12_italic);
EpdFont opendyslexic12BoldItalicFont(&opendyslexic_12_bolditalic);
EpdFontFamily opendyslexic12FontFamily(&opendyslexic12RegularFont, &opendyslexic12BoldFont, &opendyslexic12ItalicFont,
&opendyslexic12BoldItalicFont);
EpdFont opendyslexic14RegularFont(&opendyslexic_14_regular);
EpdFont opendyslexic14BoldFont(&opendyslexic_14_bold);
EpdFont opendyslexic14ItalicFont(&opendyslexic_14_italic);
EpdFont opendyslexic14BoldItalicFont(&opendyslexic_14_bolditalic);
EpdFontFamily opendyslexic14FontFamily(&opendyslexic14RegularFont, &opendyslexic14BoldFont, &opendyslexic14ItalicFont,
&opendyslexic14BoldItalicFont);
#endif // OMIT_FONTS #endif // OMIT_FONTS
EpdFont smallFont(&notosans_8_regular); EpdFont smallFont(&notosans_8_regular);
@@ -315,10 +291,6 @@ void setupDisplayAndFonts(bool seamless = false) {
renderer.insertFont(NOTOSANS_14_FONT_ID, notosans14FontFamily); renderer.insertFont(NOTOSANS_14_FONT_ID, notosans14FontFamily);
renderer.insertFont(NOTOSANS_16_FONT_ID, notosans16FontFamily); renderer.insertFont(NOTOSANS_16_FONT_ID, notosans16FontFamily);
renderer.insertFont(NOTOSANS_18_FONT_ID, notosans18FontFamily); renderer.insertFont(NOTOSANS_18_FONT_ID, notosans18FontFamily);
renderer.insertFont(OPENDYSLEXIC_8_FONT_ID, opendyslexic8FontFamily);
renderer.insertFont(OPENDYSLEXIC_10_FONT_ID, opendyslexic10FontFamily);
renderer.insertFont(OPENDYSLEXIC_12_FONT_ID, opendyslexic12FontFamily);
renderer.insertFont(OPENDYSLEXIC_14_FONT_ID, opendyslexic14FontFamily);
#endif // OMIT_FONTS #endif // OMIT_FONTS
renderer.insertFont(UI_10_FONT_ID, ui10FontFamily); renderer.insertFont(UI_10_FONT_ID, ui10FontFamily);
renderer.insertFont(UI_12_FONT_ID, ui12FontFamily); renderer.insertFont(UI_12_FONT_ID, ui12FontFamily);