Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'polskie literki'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 1 wynik

  1. I znowu rozwiązanie programowe, w dodatku z tym i18n to trochę na wyrost... Ale o co chodzi? Biblioteka Arduino_GFX jest popularna, ma dość duże możliwości, niestety ma co najmniej jedną wadę: wbudowany font 5x8 zawiera oprócz ASCII tylko kilka liter z zakresu ISO-8859-1 i mnóstwo fajnych nader rzadko używanych znaczków typu "serduszko", "kwadracik", "kółeczko" i tak dalej. A w wielu przypadkach potrzeba wyświetlić po prostu tekst na wyświetlaczu, i to przy użyciu jak najmniejszej ilości pamięci. Co prawda biblioteka pozwala na zaimportowanie jakiejś czcionki, ale i tak jest ograniczona do ośmiobitowego wyświetlania... Już wcześniej pokazywałem jak można w tej bibliotece (trochę trickowo) zaimplementować przynajmniej polskie literki. Tym razem postanowiłem pójść dalej, czyli spróbować wyświetlić oprócz podstawowego ASCII wszystkie znaczki z zakresu 0xa0..0x17f (czyli cały zakres ISO-1, ISO-2 i kilka innych literek pochodzących z różnych języków). Oczywiście wydaje się to niemożliwe - nawet jeśli użyć całej dostępnej przestrzeni 8-bitowego kodowania można uzyskać dodatkowo zakres 0x01 do 0x1f (z wyłączeniem 0x0a i 0x0d) i 0x7f do 0xa0, czyli dokładnie 63 możliwe glify. Użyłem więc zmów pewnego tricku. Ponieważ przy tak małej czcionce nie da się stworzyć różnych glifów do wszystkich liter, niektórym literom odpowiadają te same glify. I tak przykładowo litery Š i š wyglądają na wyświetlaczu identycznie, a więc glif jest wspólny. W wielu przypadkach nie da się inaczej narysować tyldy, makrona czy brewisa: zastępuje je pojedyncza kreska nad literą. Poza tym niektóre nader rzadko używane litery (jak Ħ czy ſ) wyświetlane są po prostu jako H i s. Jak mi to wyszło - oceńcie sami; niestety nie mam szans na zrobienie ostrego zdjęcia z małego wyświetlacza ale możecie uwierzyć że coś tam jest wyświetlane 🙂 A więc jak tego używać? Na początek ściągnąć potrzebne pliki: gfxi18n.zip Teraz w bibliotece Adafruit_GFX należy podmienić plik glcdfont.c na ten wyciągnięty z zipa. Można skopiować bibliotekę (wraz z używanym driverem wyświetlacza) do folderu szkicu, ale prościej będzie zrobić to po prostu w folderze biblioteki (gdzieś w Arduino/libraries). Teraz można już ich używać. W przypadku małych AVR-ów ograniczymy się raczej do wyświetlania stałych tekstów (chociaż nic nie stoi na przeszkodzie aby użyć programowej konwersji z UTF-8 na lokalny kod wyświetlania - oprócz oczywiście ilości pamięci). Aby nie przeliczać sobie ręcznie można użyć programu convloc.py. Tekst w kodowaniu UTF-8 (czyli pewnie takim w którym pracujesz) można podać albo jako parametry w linii poleceń, albo na wejście programu. W wyniku program wypisuje tekst, którego można już użyć do wyświetlania: Można również użyć konwertera, np. jakoś tak: void displayText(const char *utf8_text) { char buffer[128]; utf2local(utf8_text, buffer, 128); display.print(buffer); } Załączony przykład dotyczy małego wyświetlacza OLED, ale można go przerobić na dowolny inny. Ważne, aby wywołać przy inicjalizacji funkcję cp437 informującą bibliotekę, że ma działać zgodnie ze standardem (nie uwzględniając błędu, który kiedyś tam w bibliotece istniał). A jeśli komuś się nie podobają moje wersje glifów - załączam prosty programik którego można użyć do edycji. Wystarczy w przeglądarce otworzyć załączony plik edytor.html. Na dziś tyle 🙂
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.