OldComp.cz
http://oldcomp.cz/

Generátor znaků pro XY4131
http://oldcomp.cz/viewtopic.php?f=144&t=7721
Stránka 11

Autor:  RaceSoft [ 05.10.2019, 09:46 ]
Předmět příspěvku:  Generátor znaků pro XY4131

Ahoj, hraju si s XY4131 a dospěl jsem do fáze, kdy potřebuju vytvořit znakový generátor - do programu vstoupí ASCII hodnota znaku a ten se postará o jeho vykreslení na plotru.

Taď používám formát, kdy každý byte z generátoru v sobě obsahuje informaci o zvednutém/spuštěném peru (bit 7), směru pohybu pera (8 směrů, bity 6,5 a 4) a o délce pohybu pera (16 kroků, bity 3 az 0). Byte s hodnotou 0 znamená konec definice znaku. Část mám hotovou a funguje to. Jen mi připadá, že ty definice zabírají dost místa.

Snažil jsem se pochopit systém použitý programem Superplott, ale nějak se mi to nepovedlo. Podobně jsem dopadl s obsluhou z PMD85 - tam vím, že se definice každého znaku před jeho vykreslením načítá z ROM modulu, ale jak jsou přesně data kódována, na to jsem nepřišel.

Je nějaký "standard", který se běžně používá nebo někdo tady má nějaké své "know-how"? Stačí mi princip, nemusí tobýt zdroják :D .

Za odpovědi děkuji.

Petr

Přílohy:
img_20191005_093736.jpg
img_20191005_093736.jpg [ 145.99 KiB | Zobrazeno 7586 krát ]

Autor:  zxcygnus [ 07.10.2019, 15:25 ]
Předmět příspěvku:  Re: Generátor znaků pro XY4131

Standard asi není. V manuálu Alfi je popsán jejich způsob uložení znaků, ale i když je možná velmi úsporný, je taky velmi omezený na znaky složené pouze z čar svislých, vodorovných a šikmých 45°.

Co mě ale velmi zaujalo je, že existují docela pěkná písma od pana Alana Hersheyho cca z 1960-1970 určená pro CRT tiskárny (to není překlep a opravdu to znamená CRT obrazovku).

Viz external links z Wikipedie https://en.wikipedia.org/wiki/Hershey_fonts

Tady je malá přednáška o autorovi a písmech https://vimeo.com/178015110 vč. vysvětlení jak funguje původní formát. Někde jinde to je ještě lépe a detailněji, příp. popíšu, není to těžké. Jediná záludnost je, že jako command se počítá i pen_up a pen_up se skládá z mezery a znaku R. Vtipné je, že čísla souřadnic včetně znaménka jsou zakódovaná jako vzdálenost znaku od R v ASCII.

Oproti fontům se kterými jsme zvyklí pracovat jsou Hersheyho písma v rastru 32 x 32 souřadnic. resp. v rozsahu -16 až + 16 s nulou uprostřed a přehozenými znaménky pro osu X.

Rozhodně to jsou písma, která bych rád na některém ze svých plotrů viděl. Pár písmenek jsem zkoušel vyplotrovat a vypadají moc pěkně.

A krom toho mám nakreslené písmo v rastru 40x20 souřadnic, ale ještě jsem ho z SVG nepřevedl do použitelných dat. Narozdíl od Hersheyho je vyšší, podobně detailní, záměrně neproporcionální a zároveň připravené na diakritiku.

Mám do SVG překreslené i písmo z MZXR pro Aritmu 0507 (podle ukázky v manuálu), které narozdíl od Alfi není tak omezené a vyskytují se v něm čáry i v jiných úhlech než 0°, 90° a 45°. Jak přesně je kódované zatím netuším. Nicméně data jsou na mém webu ke stažení, povede-li se rozkódovat.
https://cygnus.speccy.cz/download/aritm ... er.tar.bz2

Autor:  Jiiira [ 07.10.2019, 16:16 ]
Předmět příspěvku:  Re: Generátor znaků pro XY4131

RaceSoft: Já bych se ještě přimlouval - jestli budeš řešit kódování češtiny, tak kdyby to mohlo být ISO Latin-2 (ISO-8859-2)

Autor:  RaceSoft [ 07.10.2019, 18:30 ]
Předmět příspěvku:  Re: Generátor znaků pro XY4131

Díky za odpovědi. Odkazy se budu snažit nastudovat v samostudiu. Kódování češtiny jsem zatím neřešil, předpokládám jen znaky do 127. Pokud se mi podaří něco rozumně vykoumat, nebráním se ani druhé polovině tabulky.

Petr

Autor:  RaceSoft [ 08.10.2019, 13:20 ]
Předmět příspěvku:  Re: Generátor znaků pro XY4131

Takže, domácí úkol jsem částečně splnil a problematiku Hersheyových fontů jsem si přečetl a video shlédl. Jsou sice krásné, ale pro můj účel nepoužitelné - zabírají spoustu místa.

Uložení ve formátu Alfi je hodně podobné tomu, co používám já. V mém případě ale každý bajt obsahuje i informaci o tom, zda je písátko nahoře nebo dole (viz 1. příspěvek).

Každý znak je definován v matici 8x6 kroků + 2 kroky meziznaková mezera. Každý znak se začíná kreslit od jeho levého dolního okraje a po jeho dokončení je písátko na levém dolním okraji dalšího znaku. Oba směry pohybu (X i Y) mají ještě svůj vlastní koeficient zvětšení, což umožňuje písmo zvětšovat v obou osách navzájem nezávisle.

Třeba zápis 007h,00B6h,031h,021h,000h (pro znak "\") znamená:
007h - udělěj 7 kroků směrem vzhůru se zvednutým perem
0B6h - udělěj 6 kroků směrem vpravo dolů se spuštěným perem
031h - udělej 1 krok směrem vpravo dolů se zvednutým perem
021h - udělěj 1 krok směrem v pravo se zvednutým perem

Pro vlastní výpočty přesunu písátka používám Bresenhamův algoritmus pro výpočet čáry - pro neznalé, vyznačuje se tím, že je rychlý a používá pouze celočíselnou aritmetiku. Stejný algoritmus jsem použil i pro kreslení souborů ve formátu HPGL/PLT. Oba programy (tisk znaků a obrázků) zprovozňuji na svém Stone64kB se systémem CP/M 2.2 s CF kartou 64MB. Výhoda je v tom, že zdrojový soubor HPGL může být i hodně velký, systém si ho postupně načítá do paměti.

Na přiloženém scanu písma je zvětšení jednotlivých bloků: 3x; 4x; 6x; 4x osa X a 6x osa Y; 6x osa X a 4x osa Y

Petr

Přílohy:
xy4131.jpg
xy4131.jpg [ 155.32 KiB | Zobrazeno 7447 krát ]

Autor:  l00k [ 12.11.2019, 13:37 ]
Předmět příspěvku:  Re: Generátor znaků pro XY4131

Ahoj,
pokud by si se chtěl vrtat v datech můžu poslat definiční soubory pro kreslení znaků čárama z IQ151-Grafik, dále pak definiční soubory jak pro XY tak Minigraf opět z modulů IQ151.
L.

Autor:  l00k [ 12.11.2019, 15:44 ]
Předmět příspěvku:  Re: Generátor znaků pro XY4131

Jestli ještě bádáš nad fontama pro zapisovač, můžu poskytnout data z Modulů pro IQ151 jak pro minigraf tak pro XY, případně data z modulu jemné grafiky, kde je ale v interpolátoru možnost kreslit oblouky, takže to font využívá při definici...

Autor:  RaceSoft [ 13.11.2019, 15:26 ]
Předmět příspěvku:  Re: Generátor znaků pro XY4131

Ahoj, dík za nabídku, .BIN soubory tu samozřejmě zveřejnit můžeš, rád se do nich podívám (a možná nejen já). Prozatím je to uzavřený projekt, ale nevylučuji, že bude obnoven - třeba právě na základě souborů z IQ-čka.

Díky

Petr

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/