Zarnegar has employed two different character sets and file formats.
Zarnegar used an Iran System-based character encoding system, named Zarnegar1, with text file formats for its early versions, up to its "Zarnegar 75" version. Zarnegar1 character set is a 2-form left-to-right visual encoding, meaning the every Perso-Arabic letter receives different character codes based on its cursive joining form, but most letters receive only 2 forms, because of the limited code-points available2 forms, because of the limited code-points available.
This project has a partial implementation of Zarnegar1 encoding (zarnegar_converter/zar1_encoding.py) and a full implementation of its binary and text file formats (zarnegar_converter/zar1_file.py).
With "Zarnegar 75" version of the program, a new character encoding system was introduced, and the file format was changed to another binary format. Zarnegar75 character set is a 4-form bidirectional encoding, meaning that every Perso-Arabic letter receives one, two, or four character code, depending on its cursive joining form, and these letters are stored in the memory in the semantic order.
Support for Zarnegar75 file format and encoding is still in progress.