Create handwritten fonts from your own handwriting and send messages via any messaging platform in your handwriting. This project includes a Desktop Application for font generation, and a Chrome Extension for sending and displaying messages in handwritten fonts, and leverages fully decentralized technologies (IPFS and Ethereum Blockchain) for all storage and processing logic, and its own encryption system for security using a mix of symmetric and asymmetric encryption algorithms.
-
Clone the repository
git clone https://github.com/mahmoudaboueleneen/T13-Handwritten-Fonts.git
-
Download and Install
MavenandFontForgeand ensure they are both added to your system's PATH environment variable. -
Move into the Desktop App directory and into the Java directory
cd "Desktop App" cd src/java
-
Manually add some required dependencies from the
libfolder to the local Maven Repository. (These dependencies aren't present on the Maven Central Repository so they were downloaded manually, added to the lib folder of the project, and so they must be added to the local Maven Repository)mvn install:install-file -Dfile='lib/doubletype.jar' -DgroupId='com.example' -DartifactId='doubletype' -Dversion='1.0' -Dpackaging=jar mvn install:install-file -Dfile='lib/geomerative.jar' -DgroupId='com.example' -DartifactId='geomerative' -Dversion='1.0' -Dpackaging=jar mvn install:install-file -Dfile='lib/sfntly.jar' -DgroupId='com.example' -DartifactId='sfntly' -Dversion='1.0' -Dpackaging=jar mvn install:install-file -Dfile='lib/sfnttool.jar' -DgroupId='com.example' -DartifactId='sfnttool' -Dversion='1.0' -Dpackaging=jar mvn install:install-file -Dfile='lib/catalina.jar' -DgroupId='org.apache.tomcat' -DartifactId='tomcat-catalina' -Dversion='1.0' -Dpackaging=jar
-
Build the Java App into one JAR file including all dependencies
mvn clean install
-
Start the Electron App
cd ../.. npm start
-
Move into the Browser Extension directory
cd "Browser Extension"
-
Install dependencies
npm install
-
Build the extension into a
distfoldernpm run build
-
Go to
chrome://extensions/on your Chrome browser -
Turn on
Developer mode -
Click on
Load unpacked -
Find and select the generated
distfolder -
Pin the extension to your Chrome browser and start using it on any webpage.
Desktop App
- Electron
- React
- Electron-React Boilerplate Template
- TypeScript
- Cropper.js
- Tailwind
- DaisyUI
- Java
- Maven
- Fontastic
- FontForge
Browser Extension
- Vite
- React
- TypeScript
- Tailwind
- DaisyUI
- Web3.js
- NFT.Storage
- JSEncrypt
- Crypto-JS
Blockchain and File Storage
- Ethereum
- Solidity
- IPFS
Unit tests were developed for the Ethereum Smart Contract using Mocha, Ganache, and Web3.js.
Postman was also used to test fetching encrypted font files from the IPFS
Credits to Dr. Wael Abouelsaadat for supervising the project.

