diff options
author | Robert Tari <robert@tari.in> | 2024-02-16 21:11:22 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2024-02-24 11:43:04 +0100 |
commit | bbf0a26a24de252be762e157a8e77450524f7ab1 (patch) | |
tree | 90a1c52128c2e928cc51217904fec5b81d1f1cf0 /contrib | |
parent | 2a2384391fa456c8c5b703a2c2dc09b989056393 (diff) | |
download | ayatana-indicator-keyboard-bbf0a26a24de252be762e157a8e77450524f7ab1.tar.gz ayatana-indicator-keyboard-bbf0a26a24de252be762e157a8e77450524f7ab1.tar.bz2 ayatana-indicator-keyboard-bbf0a26a24de252be762e157a8e77450524f7ab1.zip |
contrib/ayatana-indicator-keyboard-icon-generator.py: Update and improve the script
Diffstat (limited to 'contrib')
-rw-r--r--[-rwxr-xr-x] | contrib/ayatana-indicator-keyboard-icon-generator.py | 359 |
1 files changed, 187 insertions, 172 deletions
diff --git a/contrib/ayatana-indicator-keyboard-icon-generator.py b/contrib/ayatana-indicator-keyboard-icon-generator.py index 5d631d33..9600f601 100755..100644 --- a/contrib/ayatana-indicator-keyboard-icon-generator.py +++ b/contrib/ayatana-indicator-keyboard-icon-generator.py @@ -12,166 +12,165 @@ import getopt #import subprocess m_lLanguages = [ -'Ap', #APL -'Fa', #Afghani -'Ak', #Akan -'Sq', #Albanian -'Am', #Amharic -'Ar', #Arabic -'Hy', #Armenian -'As', #Asturian -'At', #Atsina -'Av', #Avatime -'Ae', #Avestan -'Az', #Azerbaijani -'Bm', #Bambara -'Bn', #Bangla -'Ba', #Bashkirian -'Be', #Belarusian -'Bl', #Belgian -'Bb', #Berber -'Bs', #Bosnian -'Bi', #Braille -'Bg', #Bulgarian -'By', #Burmese -'Zg', #Zawgyi -'Cm', #Cameroon -'Cn', #Canadian -'Ca', #Catalan -'Ck', #Cherokee -'Zh', #Chinese -'Cu', #Church Slavonic -'Cv', #Chuvash -'Cl', #CloGaelach -'Sx', #Coeur d'Alene Salish -'Cp', #Coptic -'Tt', #Tatar -'Hr', #Croatian -'Cs', #Czech -'Da', #Danish -'Dv', #Dhivehi -'Dl', #Dutch -'Dz', #Dzongkha -'Ed', #Elfdalian -'En', #English -'Eo', #Esperanto -'Et', #Estonian -'Ek', #EurKEY -'Ee', #Ewe -'Fo', #Faroese -'Ph', #Filipino -'Fi', #Finnish -'Fr', #French -'Fu', #Friulian -'Ff', #Fula -'Gh', #Ga -'Ka', #Georgian -'De', #German -'Gr', #Greek -'Gu', #Gujarati -'Hp', #Hanyu Pinyin -'Ha', #Hausa -'Hw', #Hawaiian -'He', #Hebrew -'Hi', #Hindi -'Hu', #Hungarian -'Is', #Icelandic -'Ig', #Igbo -'Il', #Indian -'Ip', #Indic -'Id', #Indonesian -'Ix', #International Phonetic Alphabet -'Iu', #Inuktitut -'Iq', #Iraqi -'Ga', #Irish -'It', #Italian -'Ja', #Japanese -'Kb', #Kabyle -'Kx', #Kalmyk -'Kn', #Kannada -'Kp', #Kashubian -'Kk', #Kazakh -'Km', #Khmer -'Ki', #Kikuyu -'Kv', #Komi -'Ko', #Korean -'Ku', #Kurdish -'Kt', #Kutenai -'Ky', #Kyrgyz -'Lo', #Lao -'Lv', #Latvian -'Lt', #Lithuanian -'Sb', #Lower Sorbian -'Mk', #Macedonian -'Ms', #Malay -'Ml', #Malayalam -'Mt', #Maltese -'Ma', #Manipuri -'Mi', #Maori -'Mr', #Marathi -'Mx', #Mari -'Mu', #Mmuock -'Md', #Modi -'Ro', #Moldavian -'Mn', #Mongolian -'Me', #Montenegrin -'Mb', #Multilingual -'Nk', #N'Ko -'Ne', #Nepali -'Ns', #Saami -'No', #Norwegian -'Oc', #Occitan -'Og', #Ogham -'Ol', #Ol Chiki -'Or', #Oriya -'Os', #Ossetian -'Rs', #Rusyn -'Ps', #Pashto -'Fa', #Persian -'Pl', #Polish -'Pt', #Portuguese -'Pa', #Punjabi -'Ro', #Romanian -'Ru', #Russian -'Sy', #Saisiyat -'Sf', #Samogitian -'Sa', #Sanskrit -'Sp', #Secwepemctsin -'Sr', #Serbian -'Hs', #Serbo-Croatian -'Sj', #Sicilian -'Sj', #Silesian -'Sd', #Sindhi -'Si', #Sinhala -'Sk', #Slovak -'Sl', #Slovenian -'Es', #Spanish -'Sw', #Swahili -'Sv', #Swedish -'Ls', #Syriac -'Tw', #Taiwanese -'Tg', #Tajik -'Ta', #Tamil -'Tt', #Tatar -'Te', #Telugu -'Th', #Thai -'Bo', #Tibetan -'Tn', #Tswana -'Tr', #Turkish -'Tk', #Turkmen -'Ud', #Udmurt -'Ua', #Ugaritic -'Uk', #Ukrainian -'Ur', #Urdu -'Ug', #Uyghur -'Uz', #Uzbek -'Vi', #Vietnamese -'Wo', #Wolof -'Ya', #Yakut -'Yo', #Yoruba -'emoji', #Emoji -'custom', #Custom -'00' #Unknown +'00', +'Ae', +'Ak', +'Am', +'An', +'Ap', +'Ar', +'As', +'At', +'Av', +'Az', +'Ba', +'Bb', +'Be', +'Bg', +'Bi', +'Bl', +'Bm', +'Bn', +'Bo', +'Bs', +'By', +'Ca', +'Ck', +'Cl', +'Cm', +'Cn', +'Cp', +'Cs', +'Cu', +'custom', +'Cv', +'Da', +'De', +'Dl', +'Dv', +'Dz', +'Ed', +'Ee', +'Ek', +'emoji', +'En', +'Eo', +'Es', +'Et', +'Fa', +'Ff', +'Fi', +'Fo', +'Fr', +'Fu', +'Ga', +'Gh', +'Go', +'Gr', +'Gu', +'Ha', +'He', +'Hi', +'Hp', +'Hr', +'Hs', +'Hu', +'Hw', +'Hy', +'Id', +'Ig', +'Il', +'Ip', +'Iq', +'Is', +'It', +'Iu', +'Ix', +'Ja', +'Ka', +'Kb', +'Ki', +'Kk', +'Km', +'Kn', +'Ko', +'Kp', +'Kt', +'Ku', +'Kv', +'Kx', +'Ky', +'Lo', +'Ls', +'Lt', +'Lv', +'Ma', +'Mb', +'Md', +'Me', +'Mi', +'Mk', +'Ml', +'Mn', +'Mr', +'Ms', +'Mt', +'Mu', +'Mx', +'Ne', +'Nk', +'No', +'Ns', +'Oc', +'Og', +'Ol', +'Or', +'Os', +'Pa', +'Ph', +'Pl', +'Ps', +'Pt', +'Ro', +'Rs', +'Ru', +'Sa', +'Sb', +'Sd', +'Sf', +'Si', +'Sj', +'Sk', +'Sl', +'Sp', +'Sq', +'Sr', +'Sv', +'Sw', +'Sx', +'Sy', +'Sz', +'Ta', +'Te', +'Tg', +'Th', +'Tk', +'Tn', +'Tr', +'Tt', +'Tw', +'Ua', +'Ud', +'Ug', +'Uk', +'Ur', +'Uz', +'Vi', +'Wo', +'Ya', +'Yo', +'Zg', +'Zh' ] def printHelp(): @@ -179,7 +178,7 @@ def printHelp(): print('') print('Usage:') print('') - print('ayatana-indicator-keyboard-icon-generator -p <padding> -c <colour> -f <font> -n -o <outdir>') + print('ayatana-indicator-keyboard-icon-generator -p <padding> -c <colour> -f <font> -n -x -o <outdir>') print('') print('<padding> The padding between the fill and the edges of the image') print(' Defaults to 0.8') @@ -189,6 +188,8 @@ def printHelp(): print(' Defaults to "Sans Regular"') print('-n Do not fill the icon, draw the border only') print(' Not used by default') + print('-x Generate high colour icons') + print(' Overrides all other options') print('<outdir> The output directory') print(' Defaults to the current directory') print('') @@ -202,11 +203,12 @@ if __name__ == '__main__': nFont = 15 nWeight = 500 bNoFill = False + bHighColour = False lOpts = [] try: - lOpts = getopt.getopt(sys.argv[1:], 'hp:c:f:no:')[0] + lOpts = getopt.getopt(sys.argv[1:], 'hp:c:f:nxo:')[0] except getopt.GetoptError: @@ -236,6 +238,11 @@ if __name__ == '__main__': bNoFill = True + elif sOpt == '-x': + + bHighColour = True + fBorder = 0.0 + elif sOpt == '-o': pOutDir = Path(sArg) @@ -243,16 +250,11 @@ if __name__ == '__main__': pOutDir.mkdir(parents=True, exist_ok=True) fRx = 2.4 - - if fRx == 0: - - fRx = 3.0 - fSize = 24.0 - (fBorder * 2) fIconX = (24.0 - fSize) / 2 fIconY = (24.0 - fSize) / 2 - if bNoFill == True: + if bNoFill: nWeight = 300 nFont = 13 @@ -260,6 +262,14 @@ if __name__ == '__main__': fIconX = fBorder + 0.4 fIconY = fBorder + 0.4 + if bHighColour: + + nWeight = 500 + nFont = 13 + fSize -= 0.8 + fIconX = fBorder + 0.4 + fIconY = fBorder + 0.4 + pFontMap = PangoFT2.FontMap.new() pContext = Pango.FontMap.create_context(pFontMap) pFontDescription = Pango.FontDescription.new() @@ -293,13 +303,18 @@ if __name__ == '__main__': fLayoutX = (24.0 - (nLayoutWidth / Pango.SCALE)) / 2 + (fBorder * 0.1) fLayoutY = (24.0 - (nLayoutHeight / Pango.SCALE)) / 2 + (nBaseline / Pango.SCALE) + (fBorder * 0.1) - if bNoFill == False: + if bHighColour: - pFile.write('<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="' + str(fLayoutX) + '" y="' + str(fLayoutY) + '" style="font-family:' + sFont + ';font-weight:' + str(nWeight) + ';font-size:' + str(nFont) + ';fill:black">' + sLanguage + '</text></mask></defs><rect x="' + str(fIconX) + '" y="' + str(fIconY) + '" width="' + str(fSize) + '" height="' + str(fSize) + '" rx="' + str(fRx) + '" mask="url(#m)" style="fill:' + sColour + '"/></svg>') + pFile.write('<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><rect x="' + str(fIconX) + '" y="' + str(fIconY) + '" width="' + str(fSize) + '" height="' + str(fSize) + '" rx="' + str(fRx) + '" style="stroke:black;stroke-width:0.8;fill:white;"/><text x="' + str(fLayoutX) + '" y="' + str(fLayoutY) + '" style="font-family:' + sFont + ';font-weight:' + str(nWeight) + ';font-size:' + str(nFont) + ';fill:black">' + sLanguage + '</text></svg>') - else: + elif bNoFill: pFile.write('<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><rect x="' + str(fIconX) + '" y="' + str(fIconY) + '" width="' + str(fSize) + '" height="' + str(fSize) + '" rx="' + str(fRx) + '" style="stroke:' + sColour + ';stroke-width:0.8;fill:none;"/><text x="' + str(fLayoutX) + '" y="' + str(fLayoutY) + '" style="font-family:' + sFont + ';font-weight:' + str(nWeight) + ';font-size:' + str(nFont) + ';fill:' + sColour + '">' + sLanguage + '</text></svg>') - #subprocess.run('inkscape "' + str(sOutPath) + '" --export-text-to-path --export-plain-svg --export-filename="' + str(sOutPath) + '"', shell=True, check=True); + + else: + + pFile.write('<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" width="24" height="24"><defs><mask id="m"><rect x="0" y="0" width="24" height="24" style="fill:white"/><text x="' + str(fLayoutX) + '" y="' + str(fLayoutY) + '" style="font-family:' + sFont + ';font-weight:' + str(nWeight) + ';font-size:' + str(nFont) + ';fill:black">' + sLanguage + '</text></mask></defs><rect x="' + str(fIconX) + '" y="' + str(fIconY) + '" width="' + str(fSize) + '" height="' + str(fSize) + '" rx="' + str(fRx) + '" mask="url(#m)" style="fill:' + sColour + '"/></svg>') + + #subprocess.run('inkscape "' + str(sOutPath) + '" --export-text-to-path --export-plain-svg --export-filename="' + str(sOutPath) + '"', shell=True, check=True); sys.exit(0) |