8 bitų šriftų įrankis

Laikas nuo laiko programuoju visokius niekalus ir kartais prireikia rašyti tekstą į grafinį ekraniuką. Kad ir į tokį:
8 bit font on graphics lcd
(tai ekraniukas iš Husqvarnos automatinės žoliapjovės. Iš broko)

Ir kad nesukti galvos dėl šriftų aš naudojų “klasiką”- vogtus šriftus iš Atari, Commodore, ZX Spectrum ar net Texas Instruments TI99/4A kompiuteriukų. Dar galima naudoti šriftus iš IBM PC video plokščių BIOSo. Svarbu tik nenaudoti tokį specifinį šriftą kur naudoja visi Kinijos programuotojai. Dabar, jau tik pamatęs ekraniuko tekstą galiu atpažinti ar tai Kinijos programuotojų darbas.

Ekraniukai skirtingi- jų ekrano atminties rodymo sistema skiriasi, todėl kartais reikia šriftą manipuliuoti- apversti, veidrodinti, pasukti ar pastumti. Kartais nereikia visų simbolių ar reikia papaišyti kažką specifinio. Tokiam darbui jau reikia specialaus softo. Tačiau čia bėda- softas iš interneto dažnai daro biški ne taip, kaip man reikia. Vieną dieną “triuko plionkė” ir per kelius vakarus gimė mano softas. Jis skirtas man, bet gali pasinaudoti ir blogo skaitytojai. Gal pravers. Bėda ta, kad programa skirta šiuolaikiniams kompams, o šie reikalauja, kad programa turėtų elektroninį parašą. Deja, parašas kainuoja, o aš tikrai iš to nedarau pelno. Todėl softas yra “self signed” ir instaliavimo metu iššoka visokie gąsdinantys įspėjimai.

8 bit font editor rotator C exporter for MCU

Mano programa minimalistinė. Ji gali užkrauti binarinį failą- kokį nors sena ROM dumpą, sukompiliuotą “firmwarą” ir leidžia jį kiek paredaguoti. Jei binarinis failas turi kokį nors 8 bitų pločio sriftą ar grafiką, galima tai surasti ir panaudoti.
Programa gali: redaguoti pixelius, įterpti baitą, ištrinti baitą, sukeisti bitų seką (MSB-LSB), pastumti bitus į abi puses su praradimu ar be jo (cikliškai), dirbant su 8 baitų blokais- pasukti 8×8 taškelių matricą pagal ar prieš laikrodžio rodyklę ar sukeisti baitų seką: manipuliacijų rezultatas- 8 bitų šriftas sukinėjasi į bet kurią pusę, apsiverčia ar gaunasi veidrodiškas atspindys.
Visos šitos manipuliacijos reikalingos kai reikia pakeisti rodymo kryptį ar vaizdą LCD ekrane.
Gautą rezultatą galima išsaugoti binariniam faile arba išeksportuoti į C kalbos “source code”.

Pati programa kartas nuo karto atnaujinama, todėl jį turi specialų puslapį: FontRotator install page.

Programa parašyta naudojant nemokamą Microsoft Visual Studio 2019, Basic kalboje. Deja reikalauja naujoviško kompiuterio. Turėtu veikti ir 32 bitų sistemoje, tačiau neturiu kur išbandyti,

Angliškos mini instrukcijos: Fontrotator- free bitmap font editor manual.

8 replies on “8 bitų šriftų įrankis”

  1. Labas,
    Gal galėtum pateikti kinietiško šrifto pavyzdį? Vieną visišką kinietį sudeginau su visu ekranu, tai negaliu palyginti

  2. Darbe nufotkinsiu prietaiso LCD ekraną.

    O šiaip, va kiniško softo dalis:
    china
    Kinai labai mėgsta serifinį šriftą kuriame yra ir kiniški simboliai, o senoviškas windowsinis biški kreivas. Pvz atstumas tarp “i” ir “a”.

    Arba ima kažką tokio:
    china
    Atkreipti dėmesį, kad raidės kažkokios nedadarytos ir su spygliukais.

  3. Kad visur jie tokį tragišką šriftą naudoja, prietaisų lipdukai, manualai… Iškart atmetimo reakciją sukelia.

  4. Vėl nebuvo ką veikti ir kiek patobulinau softą:
    font rotator
    Pridėjau ilgą “preview” juostelę kur rodo buferį. Dabar žymiai lengviau rasti grafinę dalį atminties buferyje.
    Dar pridėjau skirtingo aukščio šriftų palaikymą (dar pilnai netestuota), kad ir 14 pix VGA šriftams. Aišku šiame režime neveikia pasukimas.

  5. Dar potobulinimai:
    font rotator

    Atsirado galimybė “aprašyti” šriftą. T.y. pažymėti kur kokia raidė ar simbolis. Ši informacija eksportuojama į C kalbos source ir tai palengvina programavimą. Kad neprarasti aprašymų, rašant binarinį failą šalia sukuriamas XML failas su aprašymu. Atitinkamai, atidarant binarinį failą, jei yra šalia lydintis XML, pakeliui užkraunami ir aprašymai. Netgi pasiskaičiuojam CRC32, kad užtikrinti binario ir XML failo tapatumą.
    Kodėl XML? Todėl kad tai “trendas” ir norėjau pasiaiškinti, kaip MS VS dirba su tuom.
    Jei nėra XML arba nesukuriamas aprašymas, jokie XML nenaudojami.

    Jaučiu jau laikas rašyti vartojimo instrukciją, nes programa darosi sudėtinga.

    Tikrai dar liko keletas bugų.

    Va kaip eksportuojasi aprašymai:

    
     0x78, 0x60, 0x78, 0x60, 0x7E, 0x18, 0x1E, 0x00, // [Esc]
     0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x00, // [strele virsun]
     0x00, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, // 1D
     0x00, 0x18, 0x30, 0x7E, 0x30, 0x18, 0x00, 0x00, // [strėlė kairėn]
     0x00, 0x18, 0x0C, 0x7E, 0x0C, 0x18, 0x00, 0x00, // [strele desinen]
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [space]
     0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00, // [!]
     0x00, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, // ["]
     0x00, 0x66, 0xFF, 0x66, 0x66, 0xFF, 0x66, 0x00, // [#]
     0x18, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x18, 0x00, // [$]
     0x00, 0x66, 0x6C, 0x18, 0x30, 0x66, 0x46, 0x00, // [%]
     0x1C, 0x36, 0x1C, 0x38, 0x6F, 0x66, 0x3B, 0x00, // [&]
     0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, // [']
     0x00, 0x0E, 0x1C, 0x18, 0x18, 0x1C, 0x0E, 0x00, // [(]
    

Leave a Reply

Your email address will not be published. Required fields are marked *