LAST UPDATED: 1 month ago
I like open-source software and have been using LibreOffice for many years. I haven't encountered many – actually: any – disadvantages compared to Microsoft Office – except one: the ability to set different colors for tashkeel markers (تَشْكِيل) in Arabic!
Using colors for diacritical marks in LibreOffice has been a topic in forums for many years. I have no idea why it has never been implemented since it seems to me that this shouldn't cause too many difficulties. However, at least there are two tricks which partially solve our problem.
The basics
What are diacritical marks in computer terms?
In Arabic, diacritical marks (Tashkeel), the Harakat or short vowel marks, are separate glyphs. So, basically, they are separate letters. This should give us the option to select them and change the size, font or color.
How can I add Taskheel?
This is an easy task. You just type the Arabic letter and then add the diacritical mark you want. For example, you type the Arabic letter ب and then press Shift+q which produces a Fatha (فتحة) resulting in: بَ
- Vowel Fatha: shift + q
- Fatha with Tanween: shift + w
- Vowel Kasra: shift + a
- Kasra with Tanween: shift + s
- Vowel Damma: shift + e
- Damma with Tanween: shift + r
- Non-vowel Sukuun: shift + x
- Shadda: shift + tilde key (in German: °)
OPTION 1: Using a makro
This is the sophisticated solution. With a simple click, you can automatically change the color of every diacritical mark automatically. However, you have to choose the color in advance and edit a macro. I use the macro provided by user pᴇʜ.
A macro is a saved sequence of commands or keystrokes that are stored for later use. Macros are very useful when you have to repeat the same task in the same way over and over again. LibreOffice's macros are usually written in a language called LibreOffice Basic, sometimes abbreviated to Basic.
Necessary steps
#1: Click Tools – Makros – Edit macros.
#2: Copy the source code (from below) and paste it.
#3: Press save.
#4: Now, you can execute the macro.
The source code of the makro
Copy and paste the following source code:
Sub ChangeTashkeelColors CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "َ" ' Unicode Character 'ARABIC FATHA' (U+064E) or Shift+q on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 1400606 ' Dark Green Color next i CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "ً" ' Unicode Character 'ARABIC FATHATAN' (U+064B) or Shift+w on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 9498256 ' Light Green Color next i CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "ُ" ' Unicode Character 'ARABIC DAMMA' (U+064F) or Shift+e on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 9109504 ' Dark Red Color next i CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "ٌ" 'Unicode Character 'ARABIC DAMMATAN' (U+064C) or Shift+r on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 16764107 ' Light Red Color next i CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "ِ" ' Unicode Character 'ARABIC KASRA' (U+0650) or Shift+a on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 139 ' Dark Blue Color next i CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "ٍ" ' Unicode Character 'ARABIC KASRATAN' (U+064D) or Shift+s on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 11393254 ' Light Blue Color next i CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "ْ" ' Unicode Character 'ARABIC SUKUUN' (U+0652) or Shift+x on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 16753920 ' Orange Color next i CrRepDesc = ThisComponent.createReplaceDescriptor CrRepDesc.searchRegularExpression = True CrRepDesc.searchString = "ّ" ' Unicode Character 'ARABIC SHADDA' (U+0651) or Shift+^ on the Arabic keyboard FnAllRepDesc = ThisComponent.findAll(CrRepDesc) for i = 0 to FnAllRepDesc.count-1 FoundTxt = FnAllRepDesc.getByIndex(i) FoundTxt.CharColor = 6950317 ' Purple Color next i End Sub
Converting colors from hex to decimal
In the macro, I used the decimal value of colors (and not the hex or rgb value). You can easily convert colors to a decimal value using this website: https://convertingcolors.com/
OPTION 2: Using search and replace
Since diacritical marks are separate signs we can also just use the “search and replace” option of LibreOffice. It is actually pretty easy but you need to do it for every sign.
You need to check the following 3 options. Afterwards, don't forget to change the color (step 4).
#1: Regular expressions
#2: Diacritic-sensitive
#3: Kashida-sensitive
#4: Press “Format” and then, on the second tab (“effects”), choose a color.
The result
OPTION 3: LibreOffice extension Mishkallo
In December 2021, a new LibreOffice extension appeared. It is called Mishkallo and was developed by mejlad alsubaie. Besides using colors for the Tashkeel, it actually puts tashkeel automatically on words – but watch out, there are mistakes! (always double check manually).
You can download it here: https://extensions.libreoffice.org/en/extensions/show/5805
You should use English, Arabic or French as your user interface language – otherwise, it does not work. Furthermore, make sure that you have libreoffice-script-provider-python installed
If you know any other solution, please let me know!
Colored Tashkeel in Microsoft Word
In MS Word, you can easily use colored diacritical marks – however, you can only use one color for all marks.
Go to File > Options > Advanced. Under the section “Show document content”, you will see “Diacritics – Use this color for diacritics”. Choose the color you want.
If you can't find this option there, make sure that Arabic is added to the Editing Languages in File > Options > Language.
Note: Both options also work for other Semitic languages too – for example, for Hebrew.
picture credit: Gerald Drißner; Myriam Zilles from Pixabay
Hallo ,
entschuldige dass ich deutsch schreibe…
Vielen Dank für diesen Post , ich hab schon lange nach einer Möglichkeit gesucht die Farben der Vokale etc. zu ändern.
Nun meine Frage ( bin kein Computerexperte ) : benötigt man für https://extensions.libreoffice.org/en/extensions/show/5805 eine bestimmte libreofffice-version und funktioniert dies nur mit linux ?
MfG
Holger
Nein, das müsste bei allen Plattformen gehen; diese Extension ist in Python programmiert. Es kann also sein, dass Sie noch was dazu installieren müssen. Da ich Linux verwende, kann ich Ihnen leider keine Details sagen. Aber: Der Developer ist sehr hilfsbereit. Ich würde ihn an Ihrer Stelle einfach anschreiben, falls Sie Probleme bei der Installation oder der Verwendung haben. Hier ist seine Gitlab-Seite: https://gitlab.com/mejlad
Falls Sie Windows oder einen Mac verwenden, würde ich mich freuen, wenn Sie kurz bestätigen könnten, dass die Extension funktioniert bzw. was man unternehmen muss, um sie zum Laufen zu kriegen. Vielen Dank!
Danke für die Rückmeldung
Ich arbeite mit momentan Windows
Also Punkt 1 mit ‘ Makro ‘ , Punkt 2 mit ‘ Suchen und Ersetzen ‘ hier gibt es keine Probleme nur Punkt 3 ‘ extension Mishkallo ‘ funktioniert nicht ist aber nicht schlimm.
Das Problem ist aber, dass sich die Position der Vokale nach ihrer Färbung ändert , wie z.B. das Fathah und das Dammah nicht an ihrer richtigen Position stehen ( siehe Beispiel ) , ich weiß nicht ob man wie und ob man dies lösen kann .
Mfg
Holger
Hello, the extension currently works on Linux only in all versions, as I remember. I have not tried it on a Mac. If you own Mac devices, please let me know if it works. Regarding the problem of changing places after coloring, the problem is in LibreOffice, see here