Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

LCD_Graf - Rosyjskie czcionki - cyrylica, grażdanka.

dziechu 29 Mar 2014 14:15 6249 23
  • #1 29 Mar 2014 14:15
    dziechu
    Poziom 27  

    Szukam rosyjskich czcionek (cyrylica, grażdanka) dla wyświetlaczy graficznych LCD w formacie .h lub .c
    Może ktoś wie gdzie takie znaleźć? Wielkość 8x16, 16x24 itp.

    0 23
  • #3 29 Mar 2014 15:15
    Marek_Skalski
    Moderator Projektowanie

    Użyj dowolnego programu do konwersji czcionek na pliki .h lub .c
    Na przykład:
    - FontCvt V5.22 (for emWin od Segger'a), mało wygodny, ograniczenie do stosowania z produktami ST, produkuje pliki w dość niewygodnym formacie (ASCII).
    - LCD Image Converter (freeware) - wygodny w obsłudze, dużo opcji konwersji, ale produkuje dość duże pliki.
    - Font.exe - ktoś kiedyś popełnił taki program w Niemczech. Zaletą jest gęste spakowanie bitów.
    - Możesz rzeźbić czcionki samodzielnie, ale to strata czasu, kiedy są gotowe zestawy w przynajmniej kilku podstawowych krojach i dowolnych wielkościach.

    0
  • #4 29 Mar 2014 15:23
    dziechu
    Poziom 27  

    No można samemu wyrysować lub użyć konwertera i czcionek z windows. Ale konwertowane czcionki nie są tak dopracowane jak dobrze zaprojektowane dla danej wielkości matrycy. Czcionki win są wektorowe i przy konwersji zachodzi przeliczanie z przybliżeniami do wielkości zadanej w pikselach. Powoduje to przeważnie pogorszenie jakości czcionek. Przecież w Rosji też bawią się różnymi Arduino itp. i pewnie gdzieś są gotowe do pobrania.

    0
  • #5 29 Mar 2014 18:14
    tmf
    Moderator Mikrokontrolery Projektowanie

    Marek_Skalski napisał:
    Użyj dowolnego programu do konwersji czcionek na pliki .h lub .c

    - LCD Image Converter (freeware) - wygodny w obsłudze, dużo opcji konwersji, ale produkuje dość duże pliki.


    Używam :CD Image Converter i jest naprawdę niezły. Jeśli się zmieni opcje konwersji (np. na skanowanie top-bottom) to produkowane pliki są bardzo dobrze spakowane. Dokadniej - uzyskujemy mapę bitową znaku. Przy skanowaniu left-right są straty wynikające z tego, że fonty na szerokość zwykle nie mają wielokrotności 8 bitów.
    Co do konwersji z czcionki wektorowej - oczywiście nie wygląda to za dobrze, ale są gotowe czcionki rastrowe, także z cyrylicą. Wystarczy zmienić stronę kodową czcionki. W rzeczonym programie LCD Image Converter wystarczy wybrać czcionkę rastrową i dalej wybrać Cyrillic.

    0
  • #6 29 Mar 2014 19:05
    dziechu
    Poziom 27  

    Mam ten program, ale cos jest nie tak. Po wybraniu Nowy font, w Font Setup wybieram Cyrylica (pokazują się znaki cyrylicy), daję ok, i w Character preview mam tylko normalne znaki, bez cyrylicy.

    0
  • Pomocny post
    #7 29 Mar 2014 19:49
    Marek_Skalski
    Moderator Projektowanie

    0. Uruchom program
    1. Wybierz New Font i podaj nazwę fontu. Ta nazwa będzie te zużywana wewnątrz pliku jako nazwa kroju (fontu), tablic i znaków.
    2. W lewym, górnym rogu wybierz typ czcionki, np. Arial.
    3. Na liście, po lewej stronie okna kliknij Cyrillic. Pojawi się zestaw znaków kodowanych od 0x400 do 0x4ff.
    4. Zaznacz kursorem wszystkie znaki z grupy, które chcesz dodać.
    5. Na dole, po lewej kliknij Append.
    6. Kliknij OK. Na liscie znaków znajdziesz podstawowy alfabet łaciński i dołączone (przez Append) znaki w cyrylicy (na dole listy).
    Tak samo dodajesz Hebrew, Arabic, Kanji i dowolne inne.
    Jeżeli nie możesz znaleźć czcionki zawierającej wymagane znaki, poszukaj w internecie tej właściwej, zainstaluj i skonwertuj ją do pliku .h lub .c w ten sam sposób.

    0
  • #8 29 Mar 2014 22:25
    dziechu
    Poziom 27  

    Ok, dzięki za pomoc.

    Dodano po 12 [minuty]:

    Jeszcze mam takie problemy - po wybraniu znaków można jakoś przekonwertować wszystkie? na razie mogę wybrać tylko jeden znak do konwersji. Drugi problem - znaki mają różne szerokości w pikselach, zależnie od znaku, a powinny mieć jednakowe, np. 16x24. Można gdzieś to ustawić?

    0
  • #9 30 Mar 2014 00:54
    Marek_Skalski
    Moderator Projektowanie

    7. Kiedy masz otwartą listę znaków, to możesz powiększyć obraz i edytować każdy znak osobno.
    8. Options->Conversion... i w zakładce Prepare wybierasz rodzaj kodowania. Dla fontów na ogół wystarcza Monochrome.
    9. Po ustawieniu kierunku skanowania (zwróć uwagę na to jak pracuje Twój wyświetlacz) przechodzisz do zakładki Image, gdzie możesz określić formatowania/strukturę pliku wynikowego. Ja zaznaczam Split to rows, 8-bit, RLE compression, LE. Może na początek spróbuj bez kompresji RLE.
    10. Klikasz OK, zapisujesz zmiany i zamykasz okno.
    11. File->Convert i podajesz nazwę pliku. Najlepiej taką samą jak fonty w środku.
    12. Save i gotowe.

    Teraz tylko potrzebujesz napisać funkcję, która to rozpakuje dla LCD w Twoim systemie. Trudne to nie jest i było gdzieś na Forum przy okazji rozmów na temat pakowania grafiki i wykorzystania RLE.
    Mimo tego, że procedura konwersji fontów wydaje się być dość skomplikowana, to naprawdę bardzo szybko przebiega. Znacznie więcej czasu trzeba na samodzielne przygotowanie fontów dla każdego rozmiaru.

    W sumie, to jestem ciekawy czy ktoś kiedyś napisze w miarę sensowne funkcje do obsługi czcionek TrueType + wygładzanie krawędzi? Niestety, większość istniejących rozwiązań jest albo chroniona licencjami, albo tak duża i powolna, że łatwiej wklejać gotową grafikę niż renderować napisy z liter.

    0
  • #10 30 Mar 2014 11:34
    dziechu
    Poziom 27  

    Kompresja grafik RLE to był mój temat i teraz używam w zasadzie wyłącznie skompresowanych grafik:)

    Dodano po 14 [minuty]:

    Mam jeszcze takie pytania - edycja typu resize działa na wszystkie znaki jednocześnie. Jeżeli np. jeden znak ma szerokość 11 px. a inny 19, to powiększając pierwszy o 5 (do 16), ten 19 tez powiększa się o 5. Poza tym dając na koniec convert otrzymuję plik z jednym, wybranym znakiem. Czy to znaczy że muszę robić resize i convert dla każdego znaku osobno i na koniec sobie wszystko sam posklejać w jeden plik?

    Dodano po 21 [minuty]:

    Mam wybrane znaki cyrylicy. Po ustwieniu monochrom itd. daje convert i save - i co właściwie zostaje przekonwertowane? Otrzymuję plik jakby z jedną literką, np. 48 bajtów (przy fontach 16x24). Konwertuje jeden znak? Po prawej stronie mam te znaki, wybieram dowolny i zaznaczam, ale po convert otrzymuję ciagle ten sam plik z tymi samymi 48 bajtami. Co robię nie tak?

    Dodano po 9 [minuty]:

    Po Convert All nic się nie dzieje - nie zapisuje żadnego pliku. Po Save zapisuje jakiś plik w formacie xml. Po Convert... zapisuje jakby tylko jeden znak.

    0
  • #11 08 Kwi 2014 19:47
    dziechu
    Poziom 27  

    Odnawiam temat. Czy ktoś wie gdzie sciągnąć rosyjskie czcionki? Konwertowane TTF czy inne z win jakimkolwiek programem, wyglądają niezbyt dobrze, a konwertowane do bardzo małych matryc jak 8x16 lub mniejsze wyglądają tragicznie. Na pewno są gdzieś na rosyjskich stronach do sciągnięcia, ale mi się nie udało znaleźć (trzeba też zapytania w gogle wpisywać po rosyjsku).

    0
  • #12 10 Kwi 2014 20:11
    Marek_Skalski
    Moderator Projektowanie

    Szukajcie, a znajdziecie...
    Proście, a będzie Wam dane...
    Tak na dobry początek: http://free.type.org.ua/en/
    Poza tym, coś mi się wydaje, że problemem nie jest konwersja, tylko trochę niewłaściwy sposób wyświetlania czcionek. Jeżeli stosujesz czcionki monochromatyczne, pisane cienką linią, to efekt zawsze będzie brzydki.
    Do wyboru masz: przygotować czcionki jako bitmapy 4..8-bit z wygładzaniem krawędzi albo poszukać algorytmu wygładzania krawędzi dla czcionek mono. W systemach opartych na mikrokontrolerach, oba rozwiązania znacznie spowalniają proces drukowania znaków na ekran. Vide post #9.

    0
  • #13 10 Kwi 2014 20:26
    dziechu
    Poziom 27  

    Dziękuję za linka. Raczej trudno zastosować antyaliasing przy czcionkach 8x16px. Podobnie jak np. dla HD44870, nie stosuje się wygładzania, a czcionki muszą być ładnie zaprojektowane, bo przy tak małej matrycy jak 5x8 jest bardzo trudno uzyskać ładne i czytelne wszystkie literki. A konwersje czcionek TTF do tak małych rozmiarów całkowicie odpadają. Powstają nieczytelne potworki.

    Dodano po 2 [minuty]:

    Dlatego szukam plików dla wysw.graficznych w formacie .c lub .h jak dla np. arduino itp.

    0
  • #14 10 Kwi 2014 21:46
    Mundi1970
    Poziom 24  

    Na tej stronie jest archiwum z dwoma plikami binarnymi czcionka 8x8 (2048 bajtów) i czcionka 8x16 (4096) kodowanie win1251 Link.

    Są też dwa przykłady czcionek, ale tu trzeba się trochę pobawić. (kliknąć na obrazek, miniatura jest większa od oryginału)

    LCD_Graf - Rosyjskie czcionki - cyrylica, grażdanka.

    LCD_Graf - Rosyjskie czcionki - cyrylica, grażdanka.

    0
  • #15 10 Kwi 2014 22:02
    tmf
    Moderator Mikrokontrolery Projektowanie

    dziechu napisał:
    Dziękuję za linka. Raczej trudno zastosować antyaliasing przy czcionkach 8x16px. Podobnie jak np. dla HD44870, nie stosuje się wygładzania, a czcionki muszą być ładnie zaprojektowane, bo przy tak małej matrycy jak 5x8 jest bardzo trudno uzyskać ładne i czytelne wszystkie literki. A konwersje czcionek TTF do tak małych rozmiarów całkowicie odpadają. Powstają nieczytelne potworki.

    Dodano po 2 [minuty]:

    Dlatego szukam plików dla wysw.graficznych w formacie .c lub .h jak dla np. arduino itp.


    A dlaczenie uważasz, że trudno jest stosować antyaliasing dla małych czcionek?
    Z drugiej strony - już ci dawno temu rozwiązanie podałem - rastrowe czcionki systemowe zawierają zestawy także z cyrylicą. Np. wspomniany wcześniej LCD Image Converter umożliwia ich proste wyeksportowanie (jest zresztą napisany przez Rosjanina, więc dziwne, aby właśnie cyrylicę olewał). Wybierasz dowolną czcionkę rastrową i wybierasz cyrylicę po czym eksportujesz. W czym problem?
    Tak to wygląda:
    LCD_Graf - Rosyjskie czcionki - cyrylica, grażdanka.
    Jeśli ci się nie podoba LCD Image Converter to sobie napisz sam program konwertujący pliki fon/fnt na dowolny format jaki jest potrzebny - to parenaście linii kodu.

    0
  • #16 10 Kwi 2014 23:05
    dziechu
    Poziom 27  

    tmf napisał:
    A dlaczenie uważasz, że trudno jest stosować antyaliasing dla małych czcionek?

    Gdzie zmieścić piksele 'pośrednie' jeżeli piksele czcionki zabierają pole od krwędzi do krawędzi?
    A dlaczego nie ma antyaliasingu w HD44780 itp.? Poza tym jak zrobić antyaliasing na czcionkach w formacie bitmapy (czyli tylko 1-piksel czarny, 0-piksel biały)? Tak mam zrobione wszystkie czcionki których używam w tym programie i tylko rosyjskie byłyby np. w 8bit skali szarości czy innym.
    O LCD_Image_Converter napisałem już w #10.

    Dodano po 2 [minuty]:

    Oczywiście że w ostateczności zrobię te czcionki sam, ale jak pisałem, dla matrycy np. 5x8 nie jest to wcale takie łatwe, i raczej nie w trybie automatycznej konwersji. To tak jak czcionki dla wspomnianego HD44780 - to nie jakieś przypadkowo dobrany krój, ale właśnie taki który przy tak małej matrycy jest względnie ładny i czytelny i raczej jego opracowanie zajęło trochę czasu. Na pewno nie był to jakiś Arial automatycznie przekonwertowany, ale specjalnie opracowany krój dla 5x8. Dlatego wolałbym dobrze zrobionego gotowca, bo przecież na rosyjskich stronach na pewno są. Po prostu myślałem że może ktoś robił coś w wersji z menu rosyjskim i wie gdzie tego szukać.

    0
  • #17 11 Kwi 2014 13:43
    tmf
    Moderator Mikrokontrolery Projektowanie

    Na czym wyświetlasz te czcionki? Na LCD monochromatycznym? Wtedy antyaliasing jest niemożliwy, ale jeśli na jakimś TFT to jest prosty na dowolnej matrycy.
    Co do czcionek - może tym razem trafi - Windows, Linux i inne systemy posiadają czcionki rastrowe w tym cyrylicę. Więc o jakim szukaniu czcionek mowa? Nie potrafisz posłużyć się LCD Image Converter (swoją drogą bezproblemowo można w nim wyeksportować dowolną czcionkę do dowolnego formatu), to przekonwertuj sobie sam pliki fnt Windowsa czy linuxa na potrzebny format. Pokazałem ci na zrzucie przykład czcionki rastrowej z Windows - MS Sans Serif, na matrycy 8 pikseli + 5 linii odstępu. Ale są i mniejsze czcionki dostępne, nawet na matrycach 5 pikseli. Są to specjalne czcionki rastrowe dostosowane do matrycy o niskiej rozdzielczości.
    Więc czego chcesz szukać, skoro gotowce masz pod nosem?

    0
  • #18 11 Kwi 2014 14:56
    dziechu
    Poziom 27  

    tmf napisał:
    Na czym wyświetlasz te czcionki? Na LCD monochromatycznym?

    Na TFT i monochromatycznym (KS0108). Ale na TFT też większość w trybie bitmapy, choć oczywiście mogę wybierać dowolnie kolor czcionki. To małe TFT, 2,2", więc takie wystarczają.

    tmf napisał:
    Są to specjalne czcionki rastrowe dostosowane do matrycy o niskiej rozdzielczości.

    Np. które? TTF to wektorowe, OTF chyba też, FON to chyba rastrowe?

    0
  • Pomocny post
    #19 11 Kwi 2014 15:10
    tmf
    Moderator Mikrokontrolery Projektowanie

    A czy w plikach fon, czy fnt przechowywane są czcionki wektorowe, czy rastrowe? Przecież od początku mówimy o czcionkach rastrowych, dostosowanych do niskich rozdzielczości, które są w OS. Na zrzucie ekranu, który ci pokazałem też masz czcionkę rastrową (MS Sans Serif, chociaż pewnie jakach rastrowa Courier będzie czytelniejsza). Zobacz sobie też inne - wspomniany LCD Image Converter wyświetla typ czcionki i z listy wybieraj wyłącznie rastrowe. Czcionki truetype z oczywistych względów w niskich rozdzielczościach wyglądają paskudnie i odpadają na wstępie.
    BTW, jeśli używasz także TFT to nie ma przeszkód aby zrobić antyaliasing, rzeczony program umożliwia nawet wygodny eksport czcionki rastrowej z AA.

    0
  • #20 11 Kwi 2014 21:39
    dziechu
    Poziom 27  

    Ok, to jakoś dam radę. Dzięki za pomoc.

    Dodano po 2 [godziny] 34 [minuty]:

    Chyba w ogóle wezmę się za czcionki, bo używa się tego sporo, a opracować wystarczy raz. Jednym z problemów typowych czcionek dla wyświetlaczy graficznych jest brzydki kerning. Z reguły wszystkie znaki mają taką samą szerokość, a przy czcionkach bezszeryfowych 'i' lub 'l' to pionowa kreska. W takim przypadku odległość między np. 'a' i 'm' jest dużo mniejsza niż między 'i' i 'l'. Dlatego takie pismo wygląda brzydko. Opracuję sobie czcionki ze zmienną szerokością znaku, gdzie np. pierwszy bajt każdego znaku będzie zawierał jego szerokość.

    0
  • #21 11 Kwi 2014 23:04
    tmf
    Moderator Mikrokontrolery Projektowanie

    Ale znowu odkrywasz koło na nowo. W systemie masz czcionki proporcjonalne, gdzie jest właśnie tak jak piszesz - zawierają one tablicę w której jest zawarta szerokość znaku w pikselach + wskaźnik do bitmapy opisującej znak. Tu znowu polecę ci LCD Image Converter. Do ksiażki "AVR. Układy peryferyjne" wkrótce pojawią się przykłady. Tam znajdziesz szablony eksportu takich czcionek z tego programu oraz funkcje ich obsługi dla ST7565R, które łatwo można przerobić na inne kontrolery.

    0
  • #22 11 Kwi 2014 23:18
    dziechu
    Poziom 27  

    tmf napisał:
    Ale znowu odkrywasz koło na nowo

    No ale dlaczego odkrywam koło na nowo? Funkcje z których korzystam - moje stare i różne gotowce są przystosowane do czcionek o stałej wielkości. Także czcionki dołączane do różnych przykładów, także dla ARM (np. biblioteki dołączane do modułu TFT HY-mini STM32) są przystosowane do stałej wielkości czcionek. Jeżeli mam sam sobie konwertować czcionki, to będę to robił ze zmienną szerokością i muszę napisać sobie odpowiednią funkcję do ich wyświetlania. To żaden problem i nie muszę czekać na gotowe przykłady do przerobienia. Robiąc samemu więcej się nauczę niż korzystając z gotowych rozwiązań.

    Dodano po 1 [minuty]:

    A te przykłady konkretnie gdzie będą dostępne?

    0
  • #23 11 Kwi 2014 23:56
    mi14chal
    Poziom 28  

    dziechu napisał:
    A te przykłady konkretnie gdzie będą dostępne?

    Na stronie Helionu.

    0
  • #24 22 Kwi 2014 17:59
    dziechu
    Poziom 27  

    No więc zrobiłem rosyjskie czcionki, ale jak myślałem, nie są zbyt ładne. Kształt, odstępy, czyli położenie znaku w matrycy itd. powinny być dopracowane, czyli praktycznie trzeba by dopieszczać każdy znak. I tak to przeważnie jest w czcionkach opracowanych profesjonalnie. Dlatego szukałem gotowych plików z tak opracowanymi znakami. Może gdzieś kiedyś takie dorwę (pewnie na rosyjskich stronach o podobnej tematyce jak tu jest ich sporo). Na razie nie udało mi się znaleźć.

    0
  Szukaj w 5mln produktów