forum speccy.pl

Komputery z Z80 => AMSTRAD => Wątek zaczęty przez: ZbyniuR w 2014.03.01, 03:14:30

Tytuł: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.03.01, 03:14:30
Każdy wie że w CPC wygląd znaków definiuje komenda SYMBOL a znaczenie klawiszy KEY DEF.  Jest to tak łatwe że wiele osób porobiło sobie polskie znaki po swojemu. Kilka razy poruszano ten temat w Bajtku. I nie tylko w nim. I niemal za każdym razem proponowano inny standard.

Bajtek 5/6-86 s13  -  11-86 s8  -  8-87 s12 (CPM)  -  5-88 s14 (PCW)  -  3-89 s20 (Hisoft Pascal)  -  8-89 s20 (w druku z cofaniem karetki)  - 
11-89 s17 (niestandardowe 7bitowe i przerabianie Tasworda na PL)  -  6-91 s27 (komunikator przez RS i PL-Mazowia)  -  10-93 s17 (prosty edytor)

Pomieszanie z poplątaniem, a i wygląd proponowanych znaczków też nie raz budzi zastrzeżenia. Z okazji że moda na retro komputery, chip-tune i 8bitowe kanciaste grafiki zatacza coraz szersze kręgi, a wiekowe komputery w tym i Amstrady/Schneidery wracają do łask. Dylemat który standard użyć wraca pod strzechy. ;)

Chciałbym wam przedstawić dwa standardy które jak dotąd nie były popularne w Amstradach, ale mają poważne zalety.

Pierwszym jest oficjalna polska norma kodowania polskich znaków w 7bitach zastępująca 12 zbędnych znaków ASCII o numerach poniżej 127.

`~@|]{^[} \ $#
ąćęłńóśźż Ł ŚŻ

Właściwie jest to polskie uzupełnienie międzynarodowego standardu ISO/IEC646 który stosowano dość powszechnie w latach 70ych i 80ych w czasach gdy w biurach były tylko 8bitowe kompy na systemie CP/M. W niemal każdym kraju który używa łacińskiego alfabetu utworzono miejscowe normy jak uzyskać narodowe znaki na tych 12 dostępnych do modyfikacji kodach. I wiele drukarek miało w ROM-ach takie narodowe znaki. A te przerabiane nad Wisłą także te nasze. A w latach 90ych jedna z sieci komórkowych stosowała go w SMS-ach. Te same 12 znaków modyfikowały po swojemu inne narody które korzystały z Łacińskiego alfabetu w CP/M. http://pl.wikipedia.org/wiki/ISO/IEC_646
Zachodnie publikacje nie wspominają o polskiej normie w tym temacie, a rodzime różnią się w szczegółach. Np Wiki podaje tu późniejszą wersję w której znak dolara ma być znaczkiem zł a jedyna duża litera Ł znika, bo gdy PC wyparły z biur 8bitowce to znak \ zaczęto używać do podawania ścieżki dostępu do plików.

A jak to wygląda w Amstradzie? - Francuskie i skandynawskie wersje do dziś używają tego kodowania swoich literek w ROMie, a także w niemieckich programach choć tu muszą sobie same modyfikować wygląd znaków i mapę klawiatury. Art-Studio pozwala tworzyć fonty o kodach od 32 do 126, więc i PL w 7bit się w nich mieści. Takie pliczki zajmują 768 bajtów i sporo czcionek w takiej postaci krążyło na 3 calowych dyskach. Także tych dodawanych do Art-Studia. Jeśli masz (wiekową) drukarkę z odpowiednim ROMem możesz drukować w tym standardzie polskie znaki nawet bez dorabiania w CPC 8-go bitu. Co jest bardzo wygodne. A jeśli drukarka ci niepotrzebna to możesz wykorzystać na maksa te 12 znaków i dopisać prócz Ł także Ś na dolarku i Ż na heszu, co w domowych zastosowaniach wystarcza. Bo reszta dużych polskich znaków jest dość rzadko spotykana. Na ąęń nie zaczyna się żadne słowo a na ćóź jest ich zaledwie po kilka. :)

Żeby ich użyć w swoich programach wystarczą 2 linijki Basica. Tyle że komendę SYMBOL trzeba zastąpić jej odpowiednikiem w postaci znaku sterującego CHR$(25) uzyskiwanego przez Ctrl+Y i wstawić ją w PRINT a po nim znak który chcemy zmienić, a wtedy 8 następnych znaków które "wyświetlimy" PRINTem nie ukażą się tylko utworzą nowy wygląd tego znaku. Czyli w zaledwie w 10 bajtach na każdy znak. Więc 12 znaków zmieści się w jednej linijce Basica. Jedynie znaku CHR$(0) nie można użyć bezpośrednio a jako zmienną. Byle na początku ustawić SYMBOL AFTER 32 aby zezwolić na modyfikowanie znaków powyżej tego kodu. Po czymś takim można korzystać z czcionek z Art-Studia wystarczy LOAD"nazwa.fnt",HIMEM+1 i już mamy nową czcionkę. :) A jeśli nie ma w niej polskich znaków, to w pliczku POL.BAS w liniach 190-200 jest procedurka co kopiuje wygląd podstawowych znaków pod właściwe adresy a potem dodaje kreski i ogonki. W takiej wersji zadziała to na czcionkach o normalnej szerokości 8 pikseli. :) Wszystkie te znaki są dostępne z klawiatury choć w dziwnych miejscach np ć jest na Ctrl+2, ale KEY DEF pozwala je podstawić gdzie tylko chcemy, jednak prościej jest dzięki POKE. Od adresu 46230 zaczyna się mapa klawiatury. 80 klawiszy razy 3 ich znaczenia (same, ze shiftem i controlem, w sumie to 240 bajtów) czyli od początkowego adresu tej mapy dodajesz nr klawisza + (ewentualnie) 80, jeśli chodzi ci o znaczenie ze shiftem lub + 160 z Ctrl i masz komórkę gdzie musisz wpisać POKE z kodem który chcesz na tym klawiszu. W pętli FOR NEXT wystarczy linijka Basica by zdefiniować dziesiątki takich klawiszy.

Z okazji że CPC ma tylko 3 znaczenia każdego klawisza* a edytory tekstu z Controlem mają jakieś tam swoje funkcje, to polskie znaki w CPC zwykle podstawiano na klawiszach funkcyjnych/numerycznych, ale w naszych własnych produkcjach możemy na literowych tak jak w PC. O ile nie korzystamy ze znaczków sterujących. ;) W POL.BAS w lini 170 komentarz wyjaśnia jak to wybrać w razie potrzeby. :)
*Tylko 3 znaczenia klawisza, tzn tak to definiuje OS, ale np w SymbOS-ie są 4 znaczenia bo tam Ctrl+Shift daje 4-te znaczenie.



Jeśli jeszcze nie przestałeś tego czytać, to dowiesz się jaki drugi standard uważam za warty uwagi. ;)

A jest nim http://pl.wikipedia.org/wiki/Windows-1250
To oficjalna nazwa standardu który używamy w PeCetach.  PL znaki mają w nim kody powyżej 127, a pliki tekstowe które je zawierają bez problemu wyświetlają się na CPC, (co widać choćby na tej dyskietce z listingami i artykułami z Bajtka) i to bez potrzeby konwertowania. Co uważam za jego ogromną zaletę, gdyż cały zasób plików z których korzysta bez mała cały mówiący po polsku świat, staje przed nami otworem. A czego nam nie da ŻADEN INNY standard. :)
Oki, wyświetla się bez problemu a jak z pisaniem na CPC i przenoszeniu tego do PC? - Kody o numerach mniejszych niż 160 gryzą się troszkę z definicjami dla klawiszy funkcyjnych. Co poprawiamy kilkoma poleceniami  KEY i KEY DEF. A znaki o kodach większych niż 239 w CPC sterują kursorami i nie da się nimi pisać, a w tym standardzie są takie dwa, małe litery ń i ó...  Dlatego proponuję by na CPC zdefiniować te literki dwa razy, raz pod 241 i 243 by dobrze się wyświetlały teksty z PC, i jeszcze na 210 i 212 by nimi pisać w CPC, a na PC te kody widać jako duże Ň i Ô z daszkami wziętymi bodajże od naszych południowych sąsiadów. A w razie potrzeby można łatwo je zmienić w całym tekście dzięki Ctrl+H na zwyczajne ń i ó. :)  Kilka poniższych linijek wystarczy by CPC wyświetlał 18 polskich znaków + myślniki, wielokropek, dolny i górny cudzysłów oraz znak Euro na F0 i Ctrl+U. A są to znaczki które się zdarzają w netowych i reduxowych tekstach. W sumie modyfikujemy wygląd następujących znaków:

ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ ŇÔ €…—„”    - wygląd w PC
ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ ńó €…—„”    - wygląd w CPC

Procedura które definiuje i podkłada pod klawisze te znaczki jest w liniach 280-310 w POL.BAS :)
A procedura która dorabia wszystkie te polskie znaki do dowolnej czcionki jest w liniach 340-350.

Znaki są na funkcyjnych, małe z Ctrl a duże ze shiftem, oraz małe z ctrl i literą podstawową jak na PC (źnaX), a duże też między klawiszami literowymi a Returnem i prawym shiftem (też z Ctrl). A czemu akurat na takich? bo w tych samych linijkach są ich małe wersje. :)
               _
QWęRTY€IóP  ĘÓ| |ąćę
ąśDFGHJKł  ĄŚŁ|_|łńó
żźćVBńM   ŻŹĆŃ|_|śźż
|__|_|_______|__|€-F0

Teraz tylko pozostaje mi przerobić TASWORDa na oba standardy, który może nie jest najlepszym ale był najpopularniejszym edytorem i łatwo się go przerabia, więc kiedyś się wezmę, słowo. ;)  Można też napisać programik do konwersji między nimi i ewentualnie innymi jak ktoś zgłosi taką potrzebę. Lub do drukowania plików na drukarce bez polskich znaków, albo w Latin2 bo chyba w takim standardzie są te z lat 90ych. Bo teraz to już chyba tylko w trybie graficznym się drukuje. Ale w sumie to chętnie się dowiem na ten temat więcej bo jestem zielony. :)

SYMBOL AFTER 32:CALL &BB00    <- Jakby co, to to przywraca czcionkę i mapę klawiszy z ROM-u.


A tu dokładniejszy opis co gdzie jest w POL.BAS

RUN - tryb, kolory, włącza PL-7bit i opis standardu w LIST 90-150
GOSUB 160 - PL-7bit - kończy się RETURN-em w lini 170
RUN 190  - to przerabia czcionkę z ArtStudia dorabiając znaki PL-7bit
LIST 210-270  - opis standardu Windows 1250 (najpierw RUN by były znaczki)
RUN 280  - tworzy znaki Win-1250 i wstawia je na F0-F9 oraz na klawiszach A-Z i obok
RUN 340  - dorabia do dowolnej czcionki w pamięci znaki PL w Win-1250
RUN 360  - wyświetla aktualną mapę klawiatury i wszystkie znaki od 32 - 255

I jeszcze ciekawostka dawać znać która czcionka się podoba to zakosimy Atarowcom do CPC, a co? ;) :P :D
I dorobi się programik co konwertuje je do takiej postaci jaki ma Art-Studio.
http://atarionline.pl/v01/index.php?subaction=showfull&id=1236639234&archive=&start_from=&ucat=7&ct=poczatki

Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: Waldow w 2014.03.01, 11:26:43
Gratulacje za posta, wprawdzie "Amstradowiec" ze mnie żaden lecz pomysł ciekawy także dla reszty retro sprzętu, gdzie z polonizacją krucho.
Mam tylko dwie uwagi:
1.
Cytuj
Pierwszym jest oficjalna polska norma kodowania polskich znaków w 7bitach zastępująca 12 zbędnych znaków ASCII o numerach poniżej 127.
`~@|]{^[} \ $#
ąćęłńóśźż Ł ŚŻ
...
Zachodnie publikacje nie wspominają o polskiej normie w tym temacie, a rodzime różnią się w szczegółach. Np Wiki podaje tu późniejszą wersję w której znak dolara ma być znaczkiem zł a jedyna duża litera Ł znika, bo gdy PC wyparły z biur 8bitowce to znak \ zaczęto używać do podawania ścieżki dostępu do plików.

Jesteś pewny, że Wiki podaje późniejszą wersje? cokolwiek by to nie miało znaczyć, podajesz Ł Ś Ż których w polskiej normie BN-74/3101-01 brak.
W normie brak jakichkolwiek dużych polskich znaków.
# $  @ [ \ ]  ^  ` { |  } ~     ISO/IEC 646
# zł  ę  ź \ ń ś ą ó ł  ż ć     BN-74/3101-01

2. Czy nie lepiej jako standard kodowania wybrać standard czyli ISO8859-2 a nie CP-1250 który standardem nie jest.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.03.01, 15:15:49
Odp.1 - Po pierwsze wiki nie zawsze ma rację. Trochę poszperałem w necie zanim sobie te znaczki tak zrobiłem. I niektóre opisy tego standardu jakie znalazłem zostawiają dolarka jaki jest, czyli nie wciskają tam zł, za to na \ jest w nich jako jedyna duża litera Ł. I było to raczej na stronach bez tzw hiperłączy i reklam (które są wynalazkiem stosowanym w AmigaGuide i potem w HTML z drugiej połowy lat 80ych) stąd moje wrażenie że wersje z Ł były starsze. Jednak głowy za to nie dam, a dat w nich nie szukałem. Jeden z tych tekstów był napisany w tym 7bitPL. A nawet na jakiejś stronce kody do ź i ż były podane odwrotnie. I nie każ mi teraz tego znowu szukać. Te backsleshe w ścieżkach dostępu to jedyne sensowne uzasadnienie zniknięcia tej litery jakie przyszło mi do głowy. Uznajmy to za moją nadinterpretację. :)

A dodanie znaków Ś i Ż na $ i # to moja inicjatywa zmodyfikowania/poszerzenia tego standardu. I może nie podkreśliłem tego dostatecznie wyraźnie w poprzednim poście. A czemu proponuję akurat te litery i czemu tam?
Przed laty gdy CPC był moim jedynym kompem, przez kilka lat posługiwałem się spolszczonym Taswordem który z dużych liter miał tylko Ł i Ż. Sprzedałem to dawno temu i nie pamiętam na jakich kodach były te znaki. Ale jestem pewien że angielskie znaki których nie używamy w polskim jak QXV były w nim nie zmienione, a w Bajtku 11-89 s17 artykuł o tym jak dorobić do angielskiego Tasworda polskie znaki. Proponują by ć  było zamiast X. Więc nie miałem identycznej wersji, zwłaszcza że moja była w pełni spolszczona a nie tylko z dodanymi znaczkami. Nawiasem mówiąc resztę kodów które modyfikują w tym artykule wzięto z tych 12 znaków z ISO/IEC646 ale tylko ź i Ż są na tym samym znaku a reszta jest zupełnie inaczej. W każdym bądź razie mając tylko Ł i Ż, jedynym dużym polskim znakiem jakiego czasem mi brakowało było Ś. Stąd moja propozycja takich akurat dużych znaków, a czemu na $ i # ? - Cóż, dolar w Basicu jest używany do zmiennych tekstowych a gdy wygląda jak Ś to listing nadal jest czytelny. A więcej znaków  ISO/IEC646 modyfikować nie pozwala. Wydaje mi się to najrozsądniejszym rozwiązaniem. I kto wie czy już ktoś wcześniej na to nie wpadł, ale widać nie zdołał przekonać i programistów i polonistów do takiego rozwiązania. :)

Odp.2 - ISO8859-2 od CP-1250 (czyli Latin2 od WindowsPL) różni się tylko sześcioma innymi kodami z pośród 18 wszystkich polskich znaków, (ĄŚŹąśź), pozostałe znaczki typu €, myślniki i cudzysłowy też są identyczne. Latin2 powszechnie jest używany na stronkach internetowych, a system operacyjny Windows tak sprytnie konwertuje teksty między tymi dwoma "sposobami kodowania" (skoro słowo standard ci się nie podoba) ;) np. przy przenoszeniu fragmentów tekstu z przeglądarki do edytora lub z edytora do okienka na stronce w której wpisujemy posty na forum. I to w locie w sposób niezauważalny dla użytkownika, że większość ludzi nie jest świadoma że to są dwa różne "sposoby kodowania". Tak na marginesie dzięki temu że akurat te dwa sposoby się ze sobą nie gryzą, tzn nie ma przypadków by jakiś kod miał jedno znaczenie w jednym z nich a inne w drugim, można zrobić (także na CPC) czcionkę która wyświetla prawidłowe ogonki w TXT z Windy jak i w HTML. Jak dojdziemy do tego że będziemy tworzyć na CPC przeglądarkę internetową lub choćby pokazywałkę HTM to mam już gotowe rozwiązanie. ;) Moim celem jest zaproponować/rozpropagować taki standard który będzie najprostszy, najbardziej użyteczny i najmniej kłopotliwy dla użytkowników przy pisaniu i przenoszeniu tekstów między platformami. :) Jestem leniwy i wygodnicki, świata nie zmienię a Winda jest wszechobecna, stąd pomysł na WinPL i moja modyfikacja dla literek ń i ó.

Nie wiem czy na innych platformach takie rozwiązanie nie napotkałoby na jakieś przeszkody. Dlatego moja propozycja jest kierowana do Amstradowców. Choć nie widzę przeszkód by rozmowa o standardach polskich znaków, czy też o czcionkach i ich konwersji między platformami nie mogła się toczyć w tym wątku. A nawet mam na to nadzieję. :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: Waldow w 2014.03.01, 16:14:32
Odp.1 Po pierwsze wiki nie zawsze ma rację.

Jestem za a nawet przeciw, ale tu nie chodzi o Wiki tylko twoje stwierdzenie, "Pierwszym jest oficjalna polska norma kodowania polskich znaków" podczas gdy nie opisujesz normy, lecz implementacje niezgodne z nią, ISO 646 zatwierdzono w 1972 nasza norma BN-74/3101-01 to bodajże 1974.
Późniejsza zmiana normy ISO w 1991 roku, to zamienienie uniwersalnego znaku waluty dolarem.
Co do kodowania 7-bit, nie lepiej użyć dwóch podmian
# zł ę ź \ ń ś ą ó ł ż ć          pl
# ZŁ Ę Ź \ Ń Ś Ą Ó Ł Ż Ć          PL
jest to o tyle funkcjonalne, że można WRZESZCZEĆ ILE WLEZIE ;) jak i normalnie pisać, a sama podmiana, by była jak najbardziej uniwersalna nie tylko dla nas, lecz dla innych odmian narodowych Niemcy, Francja.

Odp.2 Nie mogę się z tym zgodzić, najlepiej widać to w poniższym pliku str. 16, 17 i 18.

http://we.pb.edu.pl/~jforenc/2008_2009_02/INF1-2009-Wykl-03-Dzienne.pdf
 (http://we.pb.edu.pl/~jforenc/2008_2009_02/INF1-2009-Wykl-03-Dzienne.pdf)
W obszarze nieużywanym w ISO, CP przechowuje masę fontów.

Cytuj
Moim celem jest zaproponować/rozpropagować taki standard który będzie najprostszy, najbardziej użyteczny i najmniej kłopotliwy dla użytkowników przy pisaniu i przenoszeniu tekstów między platformami.

No i tu CP1250 nie specialnie się sprawdza, bo zawiera fonty których gdzie indziej nie ma, dopiero UTF8 może to pogodzić. A to już całkiem inna bajka.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.03.01, 17:28:35
Testy nie wykazały bym miał małą inteligencję, a jednak cie nie rozumiem. Jakoś tak niejasno, bez ładu i składu napisałeś.
Proponowane przeze mnie rozwiązania działają, a zajmują tylko po 2-3 linijki Basica. Jeśli zajdzie taka potrzeba mogę zrobić podobnymi metodami wersje dla innych języków i to nie tylko tych co korzystają z łacińskiego alfabetu. Faktem jest że nie przywiązuję przy tym wagi do ścisłych definicji, bo liczę na inteligencję i aplauz otoczenia, a nie na czepialstwo tych co nawet nie zamierzają używać tego o czym tu piszę.

"nie lepiej użyć dwóch podmian" - cokolwiek masz na myśli - Możesz napisać program który to realizuje na dowolnej platformie i podać pod ocenę forumowiczów, bo ja nie widzę w tym sensu.

Po co tego PDF-a wysłałeś, nie mam bladego pojęcia. Nie widzę związku z tematem wątku.

A jeśli uważasz że UTF-8 jest tu pomocny w czymkolwiek to wg. mnie raczej nie zrozumiałeś moich intencji. Przecież Unicode zawiera tysiące znaków co tylko by skomplikowało sprawę. Co w ogóle nie jest tu potrzebne i na pewno nie zmieściłoby się w trzech linijkach. ;) A moje rozwiązanie się sprawdza i to bardzo dobrze. Po to je stworzyłem i po to nadałem mu taką a nie inną postać. :)

Jeśli twoje dalsze wypowiedzi będą równie konstruktywne, to będę ignorował twoje wpisy.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: Waldow w 2014.03.01, 17:35:39
Sorki za błędny link, już jest poprawiony.

Problemem jest konwersja
ISO8859-2 -> CP1250  sześć znaków różnicy to jest ok
CP1250 -> ISO8859-2 trzydzieści trzy znaki różnicy, 27 których nie ma i sześć z polskimi znakami.

Czy teraz widzisz problem? Bo to co piszesz to czysty syndrom użytkownika Windows, czyli "U mnie ładnie konwertuje". Dlatego pisze o UTF8, bo konwersja CP1250 -> UTF8 u mnie też ładnie konwertuje. ;)
Cytuj
Latin2 powszechnie jest używany na stronkach internetowych, a system operacyjny Windows tak sprytnie konwertuje teksty między tymi dwoma "sposobami kodowania" (skoro słowo standard ci się nie podoba)
Internet to ISO nie twój Latin2

W przypadku 7-bit jak masz zamiar pisać "DRUKOWANYMI" tekst? Lepszy już brak dużych polskich liter, tak jak proponuje norma, niż taka prowizorka.


Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.03.01, 20:33:18
Ech zapomniałem wspomnieć o jeszcze jednej prostej i często spotykanej w Amstradowych programach metodzie uzyskiwania na ekranie, yyy tym razem takich pseudo-polskich znaków. :) Znanej także z drukowania na drukarkach które nie mają w sobie polskich czcionek. Mówię o cofaniu karetki (lub kursora w przypadku ekranu) i wydrukowaniu na znaku litery drugiego który doda kreseczkę lub ogonek, by uzyskać coś co każdy Polak odczyta jako polski znak, nawet jeśli wygląda niezbyt ładnie.

W obu przypadkach do cofnięcia, stosuje się ten sam kod ASCII nr 8. Tyle że na ekranie CPC trzeba wpierw włączyć przezroczyste tło, aby wydrukowanie znaku z ogonkiem na literze nie skasowało tej litery. Aby to zrobić, trzeba wyświetlić komendą PRINT znak CHR$(22) a po nim dowolną nieparzystą cyfrę, (parzysta wyłącza przeźroczyste tło). Przerwanie programu i wyświetlenie się Ready także wyłącza przeźroczystość.

Znak 22 można też uzyskać przez Ctrl+V a znak cofnięcia 8 przez Ctrl+H. I taką metodą można uzyskać praktycznie wszystkie polskie znaki. np. o+'=ó, e+,=ę, a Z+-=Ż itd. itp.  Co stosuje się dość powszechnie w programach które są tak krótkie że definiowanie w nich polskich znaków zajęłoby ich połowę, a wyświetlenie jakiegoś komunikatu bez ogonków mogłoby się okazać zbyt nieczytelne. :)  Przykładem zastosowania tego triku jest program ANIMACJA.BAS z dysku jaki dodałem do pierwszego wpisu w tym wątku.

Dopiero gdy ilość takich komunikatów w programie jest dość duża, ma sens definiowanie w nim polskich znaków, (wszak każdy taki znak zajmuje 3 bajty zamiast jednego i jest mało wygodny we wpisywaniu), np. samych małych w 7bit które są dostępne z klawiatury od razu, (by sobie odpuścić konieczność definiowania klawiszy) lub dowolnie pełniejszą wersję, zależnie od potrzeb. :)

A tak w sumie to jestem ciekaw czy na innych platformach podobny trik też działa. :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: pear w 2014.03.01, 20:50:14
(...)I taką metodą można uzyskać praktycznie wszystkie polskie znaki. np. o+'=ó, e+,=ę, a Z+-=Ż itd. itp.  (...)
A tak w sumie to jestem ciekaw czy na innych platformach podobny trik też działa. :)
Mam współczesną drukarkę etykiet Casio, która potrafi drukować tą metodą.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: Waldow w 2014.03.03, 12:47:11
Moje dwie uwagi dotyczą prośby byś nie proponował rozwiązań sprzecznych z obowiązującą normą.
Dotyczy to podanego przez ciebie "ąćęłńóśźż Ł ŚŻ" jak i użycia CP1250 do kodowania 8-bit. I tylko tyle.

Co do proponowanej "podwójnej podmiany", jest podobna do opisanego przez ciebie "cofania karetki".

Przyjmijmy, że tworzysz procedurę wyświetlającą tekst z pliku na ekran komputera.
Pierwsza podmiana to zadeklarowanie w jakiej odmianie narodowej normy ISO 646 ma być interpretowany kod znaku, druga to w naszym przypadku "trik" by na 12 dostępnych kodów znaków przypadało 18 polskich fontów.

Jak to powinno działać:
Procedura po napotkaniu określonego kodu sterującego interpretuje następny w kolejce znak w określony sposób np. jeżeli następnym kodem jest "0x4C" czyli "L" procedura "interpretuje" jego kod jako "0x7C", lecz wyświetla nie font normowany "ł" lecz zamienny "Ł".

Pozostawiasz wtedy nietknięty standard, a masz dostępne wszystkie potrzebne nam znaki.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.08.26, 14:26:07
Zrobiłem sobie ruską czcionkę. I naprawdę zabawnie wyglądają listingi Basica wyświetlane ruskimi literami. :)
Ale mam problem z przeniesieniem rosyjskiego tekstu z PC do CPC tak by go wyświetlił.

Podstawiłem je pod takie kody jak tu:  http://en.wikipedia.org/wiki/ISO/IEC_8859-5
Ale gdy zapisuję plik jako tekst tak by przypadało po jednym bajcie na znak to wszystkie się zamieniają w pytajniki. :(
Jedyny sposób jaki znalazłem by zapisał tekst bez dodatkowych informacji o krojach liter (co bardzo zwiększa i komplikuje plik) to np. w WordPadzie "Unicode Text". Oczywiście zapisuje każdy znak jako dwa bajty. Pierwszy to kod jak w tabelce z linka, ale zmniejszony o 160, a drugi to zawsze kod 4. Niby proste, tylko że coś się pierdzieli z kodami kontrolnymi mimo że nie powinno i po parę znaków wyświetli, a parę nie, w jakimś chaotycznym porządku. :(

Co zrobić by zapisać ruskie litery na PC jako jednobajtowe?
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.08.26, 20:49:59
Problem rozwiązany. Importuję plik jako Binarny a nie ASCII i przestaje grymasić tzn pomijać całe słowa i widzieć kod końca pliku już w pierwszych linijkach. Działa - wyświetla ruskie teksty, ale nie jestem zadowolony z prędkości bo nim wyświetli każdą "bukwę" musi analizować w kilku IF-ach dwa sąsiednie bajty. Więc myślę by jednak przerobić to na konwerter, wtedy plik wynikowy będzie zajmował połowę tego miejsca i jednym PRINT-em będzie wyświetlał całe linijki. :)
Póki co upchałem to w 9 linijek Basica, razem z wyglądem 66 znaków i mapą klawiatury w standardzie zbliżonym do jaWERTY - Russian Phonetic.
Na razie zajmę się się czymś podobnym, ale dla kilkunastu zachodnioeuropejskich języków w jednym. Będzie prościej bo nie będzie już Unicode, czcionkę mam wydłubaną ze CPM-a, tylko trzeba poukładać kolejność liter by pasowała do Win-1252, no i stworzyć albo znaleźć jakąś uniwersalną mapę klawiatury, lub kilka dla popularniejszych języków. ;)

Nie pytajcie dlaczego - dla jaj. ;) A prace nad Bajtkami leżą.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.09.02, 08:07:21
Ostatnio jakbym obsesji dostał na punkcie robienia czcionek. Zrobiłem zestaw zachodnich i środkowo europejskich ogonków, oraz alfabety ...., A nie, nie powiem - może ktoś rozpozna z drugiego obrazka wszystkie 5. :D

W planach jeszcze hinduskie i arabskie. I na tym zakończę obce alfabety. Choć może jeszcze parę ładnych czcionek zrobię każdy z innej beczki, ale już tylko angielskie i polskie. W tym przynajmniej jedną 16x16 pikseli i przynajmniej jedną ze zmienną szerokością każdej z liter. No i programik do wyświetlania plików txt z Unicode. W tym także alfabety pisane od prawej do lewej.

Z Arabskim będzie kłopot ma 28 liter i większość z nich występuje w 4ech formach, (czasem bardzo różnych), zależnie czy są na początku wyrazu, w środku, na końcu lub samotnie. A do tego część kodów to nie litera a jakieś ogonki czy akcenty które się nakładają na litery. Brrrr. Będzie ciężko to zgrać. W Atarkach kiedyś zastosowano uproszczoną postać z dwoma zestawami znaków plus zawijasek udający koniec wyrazu. Może się zainspiruję. ;)

W Devanagari (bo tak się nazywa alfabet do Hindi, Sanskrytu i jeszcze paru języków) jest sporo dwuznaków i wszystkie muszą się ładnie stykać gdy są obok siebie. Na deser w obu językach są inne cyfry niż u nas.
Nad mapami klawiatur się nawet nie męczę tylko podstawiam pod takie znaki które są odpowiednikami tych samych liter w Łacińskim. Choć w jednym z alfabetów się tak nie dało. Ciekawe czy ktoś zgadnie w którym i czemu? ;)

Oczywiście jeśli ktoś jest zainteresowany to niech da znać. Łatwo przenieść na inne 8bit jakby co. :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: pear w 2014.09.02, 08:21:12
chiński, cyrylica, grecki, hebrajski i celtyckie runy :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.09.02, 08:41:00
No ciepło, ale jeszcze troszkę poczekam, może ktoś sprecyzuje. ;)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ikci w 2014.09.02, 08:53:47
W Cyrylicy !
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.09.02, 22:03:08
Pierwszy alfabet to Japońskie Katakana. Podstawowym zestawem japońskich znaków jest tzw Kanji (czyt. kandżi) składa się z ponad 6 tys znaków z których każde jest całym słowem, a spora ich część to nazwy własne np z geografii. Dorosły wykształcony Japończyk zna blisko 3 tys z nich, a wystarczy zaledwie 500 by przeczytać ze zrozumieniem ok 75% tekstów, np w gazecie. Drugim zestawem uzupełniającym jest Hiragana, składa się z 48 znaków (tak samo jak Katakana) a służą jako zmienione końcówki lub przedrostki do Kanji, dla słów które nie mają w nich swojego znaku. To taki odpowiednik naszej ortografii. Zwykle to właśnie Hiragana są widoczne na japońskich klawiaturach. Każde Kanji da się też sylabizować/zapisać ciągiem od 2 do 7 Hiragana lub Katakana. To pierwsze stosuje się do wklepywania słów w komputerach, (działa podobnie jak słownik T9 w komórkach), a to drugie stosuje się tak jak u nas druk wytłuszczony by podkreślić jakieś słowo w tekście oraz w banerach reklamowych. Także do zapisywania słów z obcych języków oraz w początkowym etapie nauki japońskiego. :)

W 8-bitowcach stosowano dodatkowy ROM 16KB w którym się mieścił zestaw znaków Katakana i Hiragana, razem z 500 popularniejszych Kanji o matrycy 16x16 pikseli. Fajnie byłoby skądś to wytrzasnąć. ;) Ale nie będę robił całego Kanji ani chińskiego z którego się wywodzi, stąd ich podobieństwo. :)
Można uznać że tylko tu Pear się pomylił. Co prawda w chińskich słownikach używa się zestawu kilkudziesięciu znaków które określają sposób wymowy słów i znaków, niezależnie od języka ich pochodzenia. I pewnie czegoś podobnego używają do pisania SMS-ów, ale nie stosuje się ich w gazetach tak jak te kilkadziesiąt liter japońskiego Katakana.


Drugi alfabet to Rosyjska cyrylica. Dokładnie 33 znaki plus drugie tyle małych. Aby zrobić z tego pełny zestaw cyrylicy musiałbym dodać kilkanaście znaków które używają inne narody w swoich wersjach tego alfabetu. Praktycznie każdą łacińską literę da się zapisać w takiej rozszerzonej cyrylicy. Część z nich jest zawarta w tym środkowo-europejskim zestawie łacińskich "ogonków". Zresztą znaku E z kropeczkami na górze nie ma w rosyjskich słowach, ale używają go do zapisywania słów obcych. Podobnie jak w polskim Q, V i X.

Trzeci alfabet to Grecki. 24 duże i 25 małych. (bo inne małe "s" się stosuje na końcu wyrazów niż w środku). A zamiast Q mają coś jakby apostrofy, widać potrzebne w ich gramatyce. Tu też łatwo podstawić pod łacińskie znaki, które brzmią tak samo choć wyglądają inaczej.

Kolejny to Hebrajski. I tu czegoś nie rozumiem wszędzie podają że ich alfabet ma 22 znaki a przecież jest ich 27, bo 5 z nich ma dwie formy. Może to coś takiego jak polskie U i Ó. Małych liter nie mają, ani "pisanych samogłosek" - co jeszcze dziwniejsze. Jidysz (który też używa tego alfabetu), do ich zapisu stosuje dodatkowe zestawy kropek i kresek, przez co niektóre znaki stają się samogłoskami. Sprawdźcie w Google, dowolne zdanie przetłumaczone na Hebrajski jest krótsze niż na Jidysz. ;)

A ostatni to Runy. Używane przez Celtów i ludy germańskie od 2go stulecia przez niemal tysiąclecie nim wyparła go łacina. Najstarsze wersje (do dziś używane do wróżenia) miały 24 znaki, a późniejsze zależnie od rejonów od 16 do 31 znaków. Ja tutaj sobie pożyczyłem 2 znaki do C i X z tej późniejszej wersji, by mieć dla wszystkich 26 łacińskich liter. :)


Niemal wszystkie z tych liter mają odpowiedniki w łacińskim alfabecie. A dodatkowe to często dwuznaki jak np niemieckie umlauty zapisywane jako dwie samogłoski razem, albo ruskie SZ które wygląda jak 3 pionowe kreski połączone u podstawy. Jedynie z Katakana się tak nie da bo tam z tych 48 znaków 5 to samogłoski A,I,U,E,O, jedna to N a reszta to sylaby które w dodatku zależnie od sąsiedztwa innych znaków czyta się inaczej, więc nie da się ich przedstawić jednym łacińskim znakiem. :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: pear w 2014.09.03, 13:37:30
Z alfabetów "krzaczastych" rozpoznaję tylko koreański, bo jako jedyny ma kółeczka w tych krzakach, a pozostałe są kolczaste :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.09.04, 08:17:10
Pear - też  niedawno to zauważyłem gdy się przyglądałem różnym alfabetom. :)

Jak mówiłem tak zrobiłem, dorobiłem Hindi i Arabski. :D Choć nie bez problemów.

Hindi ma 53 znaki (nie rozróżnia się dużych i małych) plus 20 kodów które stuknięte z klawiatury nie przesuwają kursora a zamiast tego dodają do ostatniego znaku jakieś "ogonki". Zapewne tylko niektóre z nich są używane w Hindi, a reszta jest do innych języków, które korzystają z tego samego alfabetu. Zrobiłem tylko 3 z nich które są tak duże jak litera. Nawet bez tych dodatków niektóre litery ledwo się zmieściły w matrycę 8x8. Nie wiem czy jakiś Hindus umiałby takim uszczuplonym zestawem znaków napisać coś tak by inny to odczytał. Ale przypuszczam że tak, i że to by było jak pisanie po polsku bez ogonków. ;)

Arabski ma 30 znaków, (a nie 28 jak pisałem wcześniej) plus naście kodów dodających "ogonki". Znaki mają po 4 lub rzadziej 2 formy. Choć jeśli 4 to po dwie z nich są do siebie bardzo podobne. Ograniczyłem się do końcowych i środkowych jako duże i małe. Końcowych, bo skoro oni piszą od prawej to właśnie końcowe w pisaniu od lewej będą robić za duże. ;) Jest też kilka liter do innych języków posługujących się takim alfabetem i kolejnych kilka ogonków. Długo się w tym nie mogłem połapać i nawet policzyć liter nie umiałem. W zestawie znaków Arabsko-Windowsowym są nawet francuskie litery. No cóż w północnej Afryce oba języki bywają oficjalnymi. Z kolei muzułmanie z krajów bliżej Indii niż Egiptu mają naleciałości językowo literowe też spod Himalajów a nie tylko z Arabii. ;) 

Co gorsza litery w tym języku zmieniają swój kształt zależnie od stykania się z innymi znakami i to jest strasznie dziwne. Za dużo jest tych komplikacji i moje plany przeglądarkowe ograniczę do alfabetów łacińskich i cyrylicy. Odpuszczam sobie też edytorek piszący od prawej do lewej. Około 2/3 liter w obu językach ma odpowiednik w łacinie, a resztę przypisałem niezgodnie z żadnymi normami do wolnych liter. Tak więc te czcionki mają cel jedynie estetyczny i nadają się co najwyżej do Matriksowych wygaszaczy. ;)  Więcej egzotycznych liter tworzyć nie zamierzam. Ale planuję jakoś je ogarnąć tak by w użytecznej i estetycznej formie zaprezentować je na zachodnim forum. ;)  Co zaprezentuję także tutaj. Na razie mam to w dwóch postaciach, 6 pliczków FNT i Basic 8K. I programik który przerabia FNT na BAS. A skoro nikt nie zgłosił zainteresowania to nie będę się śpieszył. :)

PS.: Zapomniałem wcześniej wspomnieć, że Runy są dziś używane przez fanów Tolkiena do zabawy w język Elficki. ;)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.09.11, 08:47:12
Zgadywanka. :)  Z jakich komputerów są te czcionki?

Na pierwszym obrazku 6 fontów z 8-bitówek. A na drugim 6 fontów z 16-bitówek, z tym że ostatnie dwa to moja interpretacja pomniejszenia ich do matrycy 8x8, a pozostałe to piksel w piksel jak w ROMach tych maszyn. :)

Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: pear w 2014.09.11, 09:08:54
Trzecia z pierwszego obrazka to ZX. Reszcie się aż tak długo nie przyglądałem jak tej jednej. :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: UIMP w 2014.09.11, 15:48:24
Drugi na drugim obrazku, to font Juniorowy, ale mogę się mylić, bo jest podobny do kilku innych.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: pear w 2014.09.11, 17:36:34
Eeeee, była 16-bitowa wersja Juniora ?  :o
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.09.11, 20:01:23
Słabo panowie słabo. Na Atari.org rozpoznano już dwa ze 16 bit, oraz najbardziej znaną im 8bitówkę. ;)

UIMP - nie mam pojęcia jaki jest w Juniorze, myślałem że jest taki jak w Speccy. Czytałem tylko że ma polskie znaki we własnym standardzie, ale jak Pear zauważył to nie 16bitowiec.

No śmiało próbować! - Co prawda trzy fonty z 8bit były w Polsce egzotyczne, ale pozostałe na pewno widzieliście u kolegów albo w popularnych magazynach. A niektórzy tutaj mają te kompy w kolekcji. :)

Jeszcze podpowiem że w 16bit z dwóch najpopularniejszych platform pokazałem po dwie czcionki z różnych generacji tego sprzętu.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.10.23, 05:31:37
Dawno nie przynudzałem o fontach. No i nie wyjawiłem (a przynajmniej nie tu) z jakich kompów są te czcionki z obrazków kilka postów wcześniej. Rozwiązanie jest w pliczku "8&16BIT.BAS". Na dysku jest ciut nowsza wersja uruchamiadełka
"0.BAS" - z literkami do wyświetlania plików txt w zachodnich językach: niemiecki, francuski, hiszpański, norweski, szwedzki, holenderski. (planuję dodać portugalski i turecki).
"00.BAS" - to wersja z literkami polskimi i węgierskimi. Na razie tylko te dwa a już zajmują tyle miejsca co te zachodnie razem wzięte. (planuję dodać czeski, słowacki i rumuński). W tej wersji widać też w dolnej linijce funkcje jakie planuję w późniejszych wersjach, które na razie nie działają.
W obu przyspieszyłem wyświetlanie tekstów, dodałem pokazywanie plików z fontami i obrazki z Art-Studia, ale tylko skompresowane i z paletą, na tych bez tego jest na razie zonk. A paseczkiem do wybierania plików można teraz przeskoczyć ze skrajnie górnych i dolnych pozycji na przeciwną stronę. :)

BIG.BAS - pozwala pisać po ekranie kulfonami 16x16 pikseli. Wygląd narodowych ogonków jest zdefiniowany, ale nie ma ich jeszcze na klawiaturze. Uruchamia się w MODE 2, ale można przerwać program (2xESC) i wpisać MODE 1 i cont. Można by to zrobić w 8x16 w 4 kolorach, albo prościej w 2óch. Może kiedyś wykluje się z tego jakiś prosty edytorek. ;)
CALEN.BAS - to angielska wersja kalendarza który był już na dysku z listingami z Bajtka, ale tu z wąską kolorowszą czcionką.
FNT2BAS.BAS - to programik który pomaga zmienić czcionkę z pliku .FNT do takiej dość zwartej postaci Basica.
KEYS.BAS - to programik który zmienia mapę klawiatury np AZERTY na QWERTY, lub odwrotnie. Do wyboru są też gotowe wersje niemieckiego, węgierskiego oraz brytyjska z rozkładem jak na PC co ucieszy emulatorowców. Ta ostatnia ma też na funkcyjnych znaczki do tworzenia tabelek. ;) Wyświetla też aktualną mapę klawiszy, od lewej wciskanych bez niczego, potem ze Shiftem, a z prawej z Ctrl.  Planuję dodać więcej gotowych języków oraz edytor mapy klawiatury. Do samodzielnego dłubania.
RUSSIAN.BAS - To ruski alfabet zastępujący znaki ASCII. Jeśli po pojawieniu się Ready wpiszesz cont, to zmieni kilka znaczków na Białoruski, a ponowne cont, na Ukraiński, co się objawi inną ostatnią literą w Ready. :)

NARROW.BAS - To moje eksperymenty z wąską czcionką 4x8 pikseli. Tu też wpisywanie cont po Ready uwidoczni kolejny bajerek, co widać na obrazkach. Kiedyś o tym pisałem na Trickach, ale widać nie dość jasno bo niedawno mnie o to pytano. No więc po kolei. :)
Aby przełączyć CPC na wyświetlanie wąskiej a jednocześnie 4 kolorowej czcionki wystarczy po komendzie MODE, wpisać POKE w 47043, liczbę o 1 większą niż wpisaliśmy przy MODE. Można też mniejszą, ale wtedy czcionka będzie szersza niż standardowa w danym trybie, ale o tym może innym razem. ;)  Ale to nie wszystko...
Pamiętacie komendę WINDOW ? - podajemy tam lewą i prawą kolumnę tekstu, oraz górną i dolną linijkę trybu tekstowego, w której chcemy mieć dane okienko tekstowe. Przypominam że mamy 8 takich okien od 0-7. A po komendzie MODE wszystkie przybierają maksymalne w danym trybie rozmiary, czyli np po MODE 1  jest to WINDOW 1,40,1,25. Oczywiście drugi parametr może być inny zależnie od ilości znaków dostępnych w linii w danym trybie. A to jest kłopocik bo w trybie 1 Basic nie pozwala by w tej komendzie było tam więcej niż 40, więc po zwężeniu czcionki mamy dostęp tylko do połowy ekranu. Poprawiamy to POKE 46892, i tu prawa kolumna, ale inaczej niż w WINDOW tu liczona od 0 a nie od 1.
Czyli podsumowując:
MODE 1:POKE 47043,2:POKE 46892,79 - i mamy 80 znaków w 4 kolorach, albo:
MODE 0:POKE 47043,1:POKE 46892,39 - i mamy 40 znaków w 16 kolorowym trybie z czcionką w 4 kolorach.
Niestety oryginalna czcionka po tych "pokach" jest nieczytelna i trzeba sobie przygotować lepszą. I zaraz o tym, ale wpierw dodam że aby zdefiniować okno inne niż 0 trzeba dodać jego nr. np.: WINDOW#3,1,40,24,25. Podobnie trzeba dopisywać do PRINT, PEN, PAPER i CLS jeśli chcemy by dotyczyło to okna innego niż 0. A ten drugi POKE do okna #1 jest pod adresem o 14 większym niż z okna #0. I o kolejne 14 bajtów do każdego następnego okna. Komenda MODE kasuje nam te "poki" więc o ile nie jest to naszym celem, to aby ich ponownie nie wpisywać do kasowania ekranu lepiej używać CLS.
I jeszcze dodam że 1szy z tych POKE zniekształca linie rysowane przez DRAW itp komendy więc, przed ich użyciem wpisujemy tam nr zgodny z ostatnio użytym MODE, a żeby znowu pisać wąską czcionką przywracamy tam o 1 większą. :)

Teraz o czcionce. - Najpierw jak wczytać sobie gotowego fonta. Trzeba zacząć od komendy SYMBOL AFTER. Jedynym  parametrem jest nr kodu ASCII od którego w górę potrzebujemy dostępu do zmieniania wyglądu znaków. Ta komenda rezerwuje pamięć RAM przesuwając odpowiednio ruchomy adres HIMEM i kopiuje tam wygląd tych znaków z ROM, więc jakby co można nią przywracać standardowy wygląd. Domyślnie po resecie jest ustawione 240, co oznacza że ostatnie 16 znaków są wyświetlane wg tego jak wyglądają w RAM a nie w ROM. By zmienić standardowego fonta wpisujemy SYMBOL AFTER 32:h=HIMEM+1:LOAD"nazwa.fnt",h    A po tym, Ready już się powinien wyświetlić w nowej czcionce. :)  Nie próbujcie wpisywać LOAD"nazwa.fnt",himem+1  bo choć za pierwszym razem to zadziała to HIMEM się obniży o 4KB i ponowne użycie takiej linijki wczyta nam fonta niżej niż to potrzebne, więc font się nie zmieni, a po kilku takich próbach komputer reaguje już tylko komunikatem że brak mu pamięci. Nie wiem czemu, bo powinno działać, to chyba błąd w ROMie.

Jeśli zamierzamy oprócz fonta wczytywać także inne pliki binarne, (np. RSX-y albo obrazki na dolny ekran a nie ten standardowy), to można obniżyć HIMEM komendą MEMORY po wczytaniu fonta, którego obszar zostanie wyżej, ale wtedy nie mamy możliwości użycia komendy SYMBOL AFTER ponownie (wyświetla błąd). Bardziej elegancko jest wpierw wyłączyć możliwość definiowania znaków SYMBOL AFTER 256 <- to nie jest błąd. Potem obniżyć HIMEM np przez MEMORY &3FFF  a potem SYMBOL AFTER 32  co obniży też HIMEM o 224 znaki razy 8 bajtów dla każdego czyli o 1792. To pozwoli nadal używać komendę SYM..AFT.. a jeśli parametrem będzie 256 to na ponowne przestawienie MEMORY. Co się przyda np by uruchamiać bez resetu inne programy które organizują sobie pamięć po swojemu. Można też dodać w 1ej linijce IF-a który sprawdzi czy już przestawiono HIMEM albo PEEK czy już coś wczytywał, by się niepotrzebnie nie wykonywały za każdym razem jak przerwiemy program by w nim podłubać i ponownie go uruchomimy. :)


No dobra, a teraz jak przygotować wąskiego fonta. - Normalnie matryca znaków ma 8x8 pikseli. Jednak gładki jednokolorowy font do 80 znaków w 4-ro-kolorowym MODE 1 rysujemy go w prawej połówce. Dowolnym edytorem, a jest tego pełno, bo to chyba najczęściej pisany program przez początkujących programistów na CPC, ale jeszcze nie spotkałem takiego co pozwala tworzyć wąskie kolorowe fonty. Trzeba będzie kiedyś taki napisać, póki co używam tego w Art-Studio. Efekt będzie taki jak na obrazku z czarnymi literkami, font ma kolor 2, ale kolor kursora to 3. Co jest dość dziwne i fajne zarazem. :)  Jednak font narysowany tylko na jednej połówce nie pozwala korzystać ze wszystkich kombinacji po 4 różne PEN i PAPER. A jedynie takie jak widać na górze obrazka w tej kolorowej linijce z pytaniami pod czarnym fontem. Czyli inwers dzięki chr$(24) lub Ctrl+X oraz dzięki zmianie koloru tła za pomocą POKE. Inne kombinacje oznaczają pen i paper w takim samym kolorze czyli bez sensu. Ale wystarczy w lewej połówce matrycy zrobić kopię co do piksela, tego co narysowaliśmy po prawej. Tworząc taką podwójną literkę w każdym znaku. I mamy do dyspozycji gładki font który za pomocą POKE może mieć dowolny z 4ech kolorów i tak samo z tłem. Czyli nie licząc tych niewidocznych (np czarny na czarnym), mamy 12 różnych kombinacji, a nie 3 jak w matrycy w połowie pustej. Ale z fontem z podwójnymi literkami kursor zawsze ma taki sam kolor jak font którym w danej chwili piszemy. Co jest mniej cool.  ::)

Teraz o kolorach. - Po wpisaniu tego pierwszego POKE na wąską czcionkę komputer "myśli" że wyświetla znaki w MODE 2, więc PEN 1 i PEN 3 to jest ten sam kolor. Ale można to zmienić POKE 46895 dla koloru pisaka, a następny bajt to kolor tła. (Dla kolejnych okien są to adresy o 14 większe dla każdego następnego okna).  Z tym że nie wpisujemy tam nr koloru tylko maskę, które kolumny matrycy znaku mają być wyświetlane. I tak by literki miały kolor 1 wpisujemy tam 240, ponieważ binarnie to &x11110000. Dla koloru 2 wpisać 15, a dla 3 to 255. Zero jak się domyślacie to 0. :)  Z tłem jest tak samo, a inne wartości dają pionowe paski. Nie polecam tego w tle bo będzie nieczytelnie, ale pisak może wyglądać tak jak w przykładzie na obrazku - te literki na czarnym tle. Co ciekawe kursor przybiera takie same kolorowe pionowe paski jak maska pisaka. :)
Pewnie się domyślacie że font kolorowy jak np ten z cieniem, tworzy różnica między prawą a lewą połówką matrycy. najlepiej go wyświetlać z penem 255 i tłem 0, lub w inversie. A pen wpisany POKiem jako 240 da gładki font bez cienia (kolor z górnej części litery), podobnie jak pen 255 ale z tłem 15 (kolor dolnej części litery na tle koloru cienia). Inne kombinacje dają albo mniej czytelne kombinacje kolorów, albo kompletnie nieczytelne kształty. Można też tak przygotować fonta by różne znaki miały różne kolory lub zestawy poziomych pasków albo piksele antyaliasingu w innym kolorze niż podstawowy na ostrych kątach. Choć osobiście nie jestem fanem tego ostatniego pomysłu. I to tyle o 80 w MODE 1. :)


Teraz o tym czym się różni font 40 w MODE 0 od tego poprzedniego. - Tym razem patrzymy na ten kolorowszy obrazek. Tym razem czcionkę rysujemy w środkowych czterech kolumnach czyli w 00111100. A dwie lewe kolumny matrycy to kopia (w przypadku jednokolorowego fonta), lewej połówki litery, a dwie prawe kolumny matrycy to kopia prawej połowy litery. Z tym że pierwszy składowy bit ostatecznego koloru w docelowej matrycy 4x8 w 4 kolorach, jest w jedynkach wg wzoru 11001100, a drugi składowy to zera. Innymi słowy w obu wersjach fonta do 80 i do 40 znakowego trybu bity 11000011 są identyczne, a pary kolumn 1 i 2 wg wzoru 00112200 muszą być zamienione miejscami. Można przerobić jeden font w drugi dokonując na każdym bajcie fonta:
b=PEEK(a):POKE a,(b AND 195)+(b AND 48)/4+(b AND 12)*4
Font z Art-Studia zawierający znaki od 32 do 127, zajmuje 768 bajtów. A pod jaki adres go wczytacie to już sami wiecie.
Jeszcze trochę o kolorach. Po tym jak po MODE 0 wpisaliśmy POKE na wąskie literki, CPC "myśli" że wyświetla je w MODE 1 więc dostępne jest przełączanie kolorów PEN i PAPER od 0 do 3. A kolejne czyli 4 i 5 itd. będzie wyświetlał jako 0 i 1 itd. Stąd słowa w  "Shadow text !!!" mają 3 różne kolory, a właściwie to 3 zestawy 3ech kolorów. ;)
Wracając do gładkiej czcionki w 1 kolorku. Jak widać na obrazku można użyć wszelkich kombinacji 16 kolorów pisaka i tła. Wpisując pod te same POKE 46895 i 46896 jako PEN i PAPER. Tu również wpisujemy maskę a nie kolor. Aby uzyskać kolory od 0 do 15, będą to wartości po kolei: 0, 192, 12, 204, 48, 240, 60, 252, 3, 195, 15, 207, 51, 243, 63, 255. jak komuś się tego nie chce przepisywać to ma gotowca w DATA w linii 50 w NARROW.BAS. Inne wartości dają kombinacje pionowych kolorowych pasków, co zwykle nie jest czytelne. Jeszcze słowo o dobraniu palety. W przypadku fonta 4 kolorowego i użycia PEN 1, litery się składają z kolorów o numerach 1,4 i 5, w PEN 2 to będą 2,8 i 10, a w PEN 3 to 3,12 i 15. Więc wypadałoby nadać im jakieś sensowne komponujące się ze sobą kolorki, zależnie od wizji artysty. ;)
A jeśli czyta to jakiś początkujący Amstradowiec, a dotąd Spectrumowiec lub inny owiec. - INK w CPC nie służy do zmiany koloru pisaka tylko do zdefiniowania palety, a pisak się zmienia komendą PEN. W INK podaje się 2 parametry, 1szy to numer buteleczki na farbę od 0 do 15, a 2gi to nr farby od 0 do 26. A potem w PEN i PAPER podajemy nr buteleczki. A jaki w niej jest kolor zdecydował INK. Można też w INK podać 3ci parametr od 0 do 26. Wtedy w buteleczce są dwa kolory i sobie mrugają. :D


No i to tyle mojego dzisiejszego przynudzania. Teraz już chyba wszystko jasne. Dodaję kilka obrazków i oczywiście DSK. Na którym są wszystkie fonty jakie w tym wątku wcześniej pokazywałem na obrazkach. Zarówno te z innych komputerów jak i te z egzotycznymi oraz wąskimi alfabetami. Łatwo je pooglądać za pomocą 0.BAS. W trakcie gdy się wyświetlają można przerwać program (2xESC) i poklikać sobie danym fontem. Zobaczyć jak w nim wygląda listing (Ctrl+TAB), albo katalog dyskietki (Shift+TAB). A samo TAB uruchamia program od nowa, przywracając standardową czcionkę. :)  Inne BAS-y niż opisane powyżej to albo pliki które już na innych wątkach były na DSK albo jakieś niedokończone śmieci. nie chciało mi się ich posprzątać przed publikacją, jeszcze by mi je wcięło bezpowrotnie. ;)  Pytania i komentarze mile widziane. A jak nie będą pozytywne to wyślę pocztą wąglika.  ;D
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2014.10.28, 17:28:29
Widzę że prawie nikt nie dotarł do DSK, więc rozwiązanie w jasnej postaci. :)

1. Apple II
2. MSX
3. ZX Spectrum
4. Atari XL/XE
5. Commodore 64
6. BBC Micro


1. Atari ST
2. Amiga (KS.1.3)
3. Amiga (KS.2.0/3.0)
4. PC z CGA
5. PC z VGA *
6. Mackintosh *

* Dwa ostatnie w oryginalne mają większą rozdzielczość czcionki niż 8x8, więc jest to moja interpretacja jak by wyglądały ograniczone do takiej.
A pozostałe są piksel w piksel jak w oryginałach. :)

Żródła:
http://damieng.com/blog/2011/02/20/typography-in-8-bits-system-fonts
http://damieng.com/blog/2011/03/27/typography-in-16-bits-system-fonts
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2015.03.04, 22:55:57
Ostatnio Dr Piotr zauważył że moja metoda użycia wąskich czcionek działa tylko na 6128. Więc czas na lepszy sposób który działa na każdym CPC. :)

Pisałem że:
MODE 1: POKE 47043,2: POKE 46892,79 - i mamy 80 znaków w 4 kolorach, albo:
MODE 0: POKE 47043,1: POKE 46892,39 - i mamy 40 znaków w 16 kolorowym trybie z czcionką w 4 kolorach.
I ten sposób działa tylko na 6128...

A na wszystkich CPC działa to:
MODE 2:CALL &bd1c,1 - daje 80 znaków w MODE 1
MODE 1:CALL &bd1c - daje 40 znaków w MODE 0.

* Brak parametru po CALL to nie błąd, bo parametrem jest ilość parametrów a nie ich wartość, czyli brak parametrów znaczy 0 a dwa i to dowolne parametry np CALL &BD1C,20,88  zmieni wyświetlanie na MODE 2.
Gdyby ktoś chciał to zrobić w kodzie maszynowym to ten CALL trzeba poprzedzić wrzuceniem parametru z żądanym trybem do rejestru [A]. Amstradowy Basic wrzuca tam ilość parametrów po CALL. Dziwne ale skuteczne. :)


Teraz jeszcze zmiana kolorków PEN i PAPER w tej wąskiej czcionce. Pisałem że robi to POKE 46895 dla PEN i 46896 dla PAPER. Co działa na 6128 i na 664.

Ale w 464 tym adresem do zmiany kolorków są 45711 i 45712. :)  Przypominam że wpisujemy tam nie nr koloru ale maskę co opisałem 2 posty wyżej. ;)

Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: Abrimaal w 2015.03.11, 23:56:38
Trzeci, czwarty, piąty i drugi na drugim obrazku "sie zna". Pierwszy lub drugi powiedziałbym że to SAM, ale rzeczywiście Apple był dużo wcześniej. Pasowałby do tego standardowy zestaw z gier arcade do roku około 1984 (Pac-Man, Galaxian) - wtedy prawie wszystkie miały te same litery. Zastanawiam się jaki jest oryginalny font (o ile jest) w klasycznych konsolach np. NES, GB, PCE, starsze SEGA.

Różne alfabety to super sprawa, gdy ktoś tworzy grę z akcją osadzoną w pewnych realiach, np. Dizzy in Valhalla, Bolek i Lolek jadą do Tokio, Jihad 2025...  ;)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2015.03.12, 02:56:21
Też się zastanawiałem nad fontem z NESa. Niedawno znalazłem takie coś:
https://www.behance.net/gallery/22965951/Fami-Variety-NES-Fonts
Podobno drugi obrazek z góry ten niebieski, to jego standardowy font. Ale na obrazkach z gier zwykle widać same duże litery, więc nie mam pewności.
Myślałem że w Samie jest taki jak w Speccu ale też nie wiem. Nie wiem co to jest PCE. :o

A jak chcesz więcej tematycznych to na Ataroskich stronach jest pełno Ataroskich i Commodoroskich. Przed ściągnięciem można je obejrzeć na obrazkach. Sporo z nich jest z gier albo tematyczne np dziki zachód, gotyk itp.
http://atarionline.pl/v01/index.php?subaction=showfull&id=1236639234&archive=&start_from=&ucat=7&ct=poczatki
http://atarionline.pl/v01//index.php?subaction=showfull&id=1242399102&archive=&start_from=0&ucat=7&ct=poczatki

Nie wiem do jakiego kompa je potrzebujesz, ale zwyczajowo pliczek z fontem zawiera znaki w nieco innej kolejności (tzn linijki po 32 znaki w każdej), zależnie od tego z jakiego kompa pochodzi:
w CPC i ZX:    cyfry,    DUŻE,    małe,    kwadraty     // dalej tylko w CPC> ramki, greka, ukośniki, obrazki, strzałki.
w XL/XE:       cyfry,    DUŻE,    ramki,    małe.    // dalej jeśli plik ma ponad 1KB to i tak kopia w inversie.
w C64:          małe,    cyfry,    DUŻE,   ramki.
C64   upper:   DUŻE,    cyfry,      paski,    ramki.  //  W niektórych wersjach językowych ten alternatywny zestaw ma znaki narodowe już w ROMie.

Zwykle te pliczki mają po 1024 bajty w tym 4 porcje po 32 znaki czyli po 256 bajtów, które czasem trzeba sobie przestawić zależnie od maszyny z jakiej i do jakiej bierzemy. To i tak łatwiejsze niż pikselowanie od zera. :)
Choć Art Studio przynajmniej to w CPC nagrywa w pliku z fontem tylko 96 znaki a nie 128.

Jeśli chodzi o narodowe znaczki to w CPC można sobie przypisać dowolny znak do dowolnego klawisza, ale w pozostałych po prostu muszą być we właściwym miejscu w pamięci by były pod konkretnymi klawiszami. :)

Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: Abrimaal w 2015.03.12, 05:19:45
PCE = PC Engine, inaczej Turbografx 16 (https://en.wikipedia.org/wiki/TurboGrafx-16), dość znana konsola.

W załączniku zestaw znaków ze SAM'a, ale gdzie znajduje się w ROM, to tego nie wiem.

Ja z kolei miałem i prawdopodobnie jeszcze gdzieś mam kasetę na ZX z fontami z CPC, Juniora, C64 i różnymi z gier. Może ją znajdę.

Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2015.03.12, 08:01:21
Zgrabna ta czcionka ze Sama. Dzięki, także za przypomnienie tej konsoli bo przegapiłem ją jak robiłem zestawienie najlepiej sprzedających się platform. :)
Chcesz ją do pliku zapisać?  Podeślij mi ROMa to znajdę. Wystarczy napisać programik by zapełniał pamięć ekranu bajtami tego roma, ale by kolejne bajty umieszczał kolumnami a nie linijkami, to się go zauważy. :)
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: Abrimaal w 2015.03.13, 02:11:30
Mi nie jest potrzebny ten font. Przesyłam ROM, usuń rozszerzenie .bin
Ten ROM jest z emulatora ASCD100, inne zawierają ROM w pliku .exe
O ile dobrze kojarzę, to SAM ma organizację ekranu linia po linii, przynajmniej w rozszerzonych trybach.
Tytuł: Odp: Czcionki i polskie znaki w CPC
Wiadomość wysłana przez: ZbyniuR w 2018.12.23, 07:08:16
Phonex we wątku o Startach na ZX użył procedury do przerabiania oryginalnego fonta na ukośny.
I przypomniało mi się że zrobiłem coś takiego w Basicu parę miesięcy temu, a nigdzie tego nie wstawiałem.
Obrazek pokazuje wszystkie przekształcenia jakie ten programik potrafi na przykładzie fonta CPC. Ale równie dobrze można by go użyć w innym komputerze, lub na innym foncie. Dlatego wstawiam jako tekst anie plik wykonywalny. Przecież każdy potrafi zapisać tekst skopiowany ze strony jako plik tekstowy i wczytać go do emulatora prawda?

W listingu na końcu każdej linii jest komentarz co ta linijka robi. Może nie wszystkie znaki wyglądają dobrze po takich przeróbkach, ale zawsze to oszczędność czasu w porównaniu do pikselowania wszystkiego od zera. Można modyfikować ten sam font kilkakrotnie na różne sposoby. Np. fajnie wygląda zwęzić font, potem przechylić i dodać te kreseczki na bokach które nadają złudzenie pisma odręcznego.

Obrazek pokazuje fonty po następujących modyfikacjach:
normalny
pogrubiony
wychudzony
przechylony
pismo ręczne (standardowy font słabo z tym wygląda)
podkreślony
obniżony
podwyższony
zwężony o 1 piksel
poszerzony o 1 piksel
zwężony o połowę
poszerzenie wąskiego ze zachowaniem kanciastości

A oto co robią poszczególne podprogramy w liniach o numerach:
40 normal,
50 wyświetl fonta
60 Bold, pogrubiony
70 skiny, wychudzony
80 script, dodaje kreski jak przy piśmie odręcznym
90 underline, podkreślenie
100 Italic, ukośne
110 smaller, obniżenie fonta o linijkę (w Spectrum i małym Atari są takie)
130 bigger, podwyższenie o linijkę
150 narrow, zwężenie o jeden piksel (np w Apple i w MSX są takie węższe)
160 wider, poszerzenie o jeden piksel
170 half, zwężenie o połowę z 8 na 4 piksele
180 double, poszerzenie z 4 pikseli na 8

10 MODE 2:GOSUB 40:DEFINT a-z:m=VAL("&"+HEX$(HIMEM))+1:GOSUB 50'  ZbyniuR 2018   
20 GOSUB 60:GOSUB 50:GOSUB 40:GOSUB 70:GOSUB 50:GOSUB 100:GOSUB 50:GOSUB 40:GOSUB 80:GOSUB 50:GOSUB 40:GOSUB 90:GOSUB 50:GOSUB 40:GOSUB 110:GOSUB 50:GOSUB 130:GOSUB 50:GOSUB 40:GOSUB 40:GOSUB 150:GOSUB 50:GOSUB 160:GOSUB 50:GOSUB 40:
30 GOSUB 170:GOSUB 50:GOSUB 180:GOSUB 50:GOSUB 40:CALL &BB18:END
40 SYMBOL AFTER 32:INK 0,0:INK 1,26:RETURN'   back to normal font
50 FOR a=32 TO 126:PRINT CHR$(a);:NEXT:PRINT:g=m+8:q=m+95*8:RETURN' show all
60 FOR a=g TO q:p=PEEK(a):POKE a,(p OR p/2):NEXT:RETURN'               Bold
70 FOR a=g TO q:p=PEEK(a):POKE a,(p AND p/2):NEXT:POKE m+511,255:RETURN' skiny
80 g=g+261:FOR a=g TO q STEP 8:POKE a,PEEK(a)OR 195:NEXT:RETURN'      script
90 g=g-1:FOR a=g TO q STEP 8:POKE a,255-PEEK(a):NEXT:RETURN'         underline
100 FOR a=g TO q STEP 8:FOR e=0 TO 1:POKE a+e,PEEK(a+e)/2:NEXT:FOR e=5 TO 7:POKE a+e,PEEK(a+e)*2 MOD 256:NEXT:NEXT:RETURN'                              Italic
110 FOR a=g TO q STEP 8:IF a<-24492 OR a>-24124 THEN w=3 ELSE w=2
120 FOR e=w TO 1 STEP-1:POKE a+e,PEEK(a+e-1):NEXT:POKE a,0:NEXT:RETURN' smaller
130 FOR a=g TO q STEP 8:IF a<-24492 OR a>-24124 THEN w=3 ELSE w=1
140 FOR e=0 TO w:POKE a+e,PEEK(a+e+1):NEXT:NEXT:RETURN'                 bigger
150 FOR a=g TO q:p=PEEK(a):POKE a,(p AND 240)OR(p AND 7)*2:NEXT:RETURN'  narrow
160 FOR a=g TO q:p=PEEK(a):POKE a,(p AND 240)OR(p AND 30)/2:NEXT:RETURN'  wider
170 FOR a=g TO q:p=PEEK(a):POKE a,(p AND 64)+(p AND 16)*2+(p AND 4)*4:NEXT:RETURN' half
180 FOR a=g TO q:p=PEEK(a):POKE a,(p AND 64)*1.5+(p AND 32)*0.75+(p AND 16)*0.375:NEXT:RETURN' double


Przydałoby się dodać opcje do wczytywania i zapisywania fonta, ale jakoś tego nie dokończyłem. :)