From 1483c25924c8f98b62cf5cd1fcff79e98834210d Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Thu, 9 Sep 2021 01:36:48 +0200 Subject: Add Lomiri icon generator and move both generators to /contrib --- ...ana-indicator-keyboard-icon-generator-lomiri.py | 272 +++++++++++++++++++++ .../ayatana-indicator-keyboard-icon-generator.py | 263 ++++++++++++++++++++ data/ayatana-indicator-keyboard-icon-generator | 263 -------------------- 3 files changed, 535 insertions(+), 263 deletions(-) create mode 100644 contrib/ayatana-indicator-keyboard-icon-generator-lomiri.py create mode 100755 contrib/ayatana-indicator-keyboard-icon-generator.py delete mode 100755 data/ayatana-indicator-keyboard-icon-generator diff --git a/contrib/ayatana-indicator-keyboard-icon-generator-lomiri.py b/contrib/ayatana-indicator-keyboard-icon-generator-lomiri.py new file mode 100644 index 00000000..069dd81d --- /dev/null +++ b/contrib/ayatana-indicator-keyboard-icon-generator-lomiri.py @@ -0,0 +1,272 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import gi + +gi.require_version('PangoFT2', '1.0') + +from gi.repository import PangoFT2, Pango +from pathlib import Path +import sys +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 +'00' #Unknown +] + +def printHelp(): + + print('') + print('Usage:') + print('') + print('ayatana-indicator-keyboard-icon-generator-lomiri -b -c -f -o ') + print('') + print(' The width of the border around the image') + print(' Defaults to 1') + print(' The colour of the image') + print(' Defaults to "#707070"') + print(' The font family') + print(' Defaults to "Ubuntu"') + print(' The output directory') + print(' Defaults to the current directory') + print('') + +if __name__ == '__main__': + + nBorder = 1 + sColour = '#707070' + sFont = "Ubuntu" + pOutDir = Path.cwd() + nFont = 15 + lOpts = [] + + try: + + lOpts = getopt.getopt(sys.argv[1:], 'hp:c:f:o:')[0] + + except getopt.GetoptError: + + printHelp() + sys.exit(1) + + for sOpt, sArg in lOpts: + + if sOpt == '-h': + + printHelp() + sys.exit(0) + + elif sOpt == '-b': + + nBorder = int(sArg) + + elif sOpt == '-c': + + sColour = sArg + + elif sOpt == '-f': + + sFont = sArg + + elif sOpt == '-o': + + pOutDir = Path(sArg) + + pOutDir.mkdir(parents=True, exist_ok=True) + + nSize = 24 - nBorder + fIconX = (24 - nSize) / 2 + fIconY = (24 - nSize) / 2 + pFontMap = PangoFT2.FontMap.new() + pContext = Pango.FontMap.create_context(pFontMap) + pFontDescription = Pango.FontDescription.new() + pFontDescription.set_family(sFont) + pFontDescription.set_weight(300) + pFontDescription.set_size(nFont * Pango.SCALE) + pLayout = Pango.Layout.new(pContext) + pLayout.set_font_description(pFontDescription) + + for sLanguage in m_lLanguages: + + sOutPath = pOutDir.joinpath('ayatana-indicator-keyboard-' + sLanguage + '.svg') + sLanguageText = sLanguage + + if sLanguage == '00': + + sLanguageText = '?' + + elif sLanguage == 'emoji': + + sLanguageText = '😐' + + with open(sOutPath, 'w') as pFile: + + pLayout.set_text(sLanguageText, -1) + nLayoutWidth, nLayoutHeight = pLayout.get_size() + nBaseline = pLayout.get_baseline() + fLayoutX = (24.0 - (nLayoutWidth / Pango.SCALE)) / 2 + fLayoutY = (24.0 - (nLayoutHeight / Pango.SCALE)) / 2 + (nBaseline / Pango.SCALE) + pFile.write('' + sLanguageText + '') + + subprocess.run('inkscape "' + str(sOutPath) + '" --export-text-to-path --export-plain-svg --export-filename="' + str(sOutPath) + '"', shell=True, check=True); + + sys.exit(0) diff --git a/contrib/ayatana-indicator-keyboard-icon-generator.py b/contrib/ayatana-indicator-keyboard-icon-generator.py new file mode 100755 index 00000000..0316d7f4 --- /dev/null +++ b/contrib/ayatana-indicator-keyboard-icon-generator.py @@ -0,0 +1,263 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import gi + +gi.require_version('PangoFT2', '1.0') + +from gi.repository import PangoFT2, Pango +from pathlib import Path +import sys +import getopt + +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 +'00' #Unknown +] + +def printHelp(): + + print('') + print('Usage:') + print('') + print('ayatana-indicator-keyboard-icon-generator -p -c -f -o ') + print('') + print(' The padding between the fill and the edges of the image') + print(' Defaults to 0 pixels') + print(' The colour of the fill') + print(' Defaults to "#ffffff"') + print(' The font family') + print(' Defaults to "Sans Regular"') + print(' The output directory') + print(' Defaults to the current directory') + print('') + +if __name__ == '__main__': + + nPadding = 0 + sColour = '#ffffff' + sFont = "Sans Regular" + pOutDir = Path.cwd() + nFont = 15 + lOpts = [] + + try: + + lOpts = getopt.getopt(sys.argv[1:], 'hp:c:f:o:')[0] + + except getopt.GetoptError: + + printHelp() + sys.exit(1) + + for sOpt, sArg in lOpts: + + if sOpt == '-h': + + printHelp() + sys.exit(0) + + elif sOpt == '-p': + + nPadding = int(sArg) + + elif sOpt == '-c': + + sColour = sArg + + elif sOpt == '-f': + + sFont = sArg + + elif sOpt == '-o': + + pOutDir = Path(sArg) + + pOutDir.mkdir(parents=True, exist_ok=True) + + nSize = 24 - (2 * nPadding) + fIconX = (24 - nSize) / 2 + fIconY = (24 - nSize) / 2 + pFontMap = PangoFT2.FontMap.new() + pContext = Pango.FontMap.create_context(pFontMap) + pFontDescription = Pango.FontDescription.new() + pFontDescription.set_family(sFont) + pFontDescription.set_weight(500) + pFontDescription.set_size(nFont * Pango.SCALE) + pLayout = Pango.Layout.new(pContext) + pLayout.set_font_description(pFontDescription) + + for sLanguage in m_lLanguages: + + sOutPath = pOutDir.joinpath('ayatana-indicator-keyboard-' + sLanguage + '.svg') + + with open(sOutPath, 'w') as pFile: + + if sLanguage == '00': + + sLanguage = '?' + + pLayout.set_text(sLanguage, -1) + nLayoutWidth, nLayoutHeight = pLayout.get_size() + nBaseline = pLayout.get_baseline() + fLayoutX = (24.0 - (nLayoutWidth / Pango.SCALE)) / 2 + fLayoutY = (24.0 - (nLayoutHeight / Pango.SCALE)) / 2 + (nBaseline / Pango.SCALE) + pFile.write('' + sLanguage + '') + + sys.exit(0) diff --git a/data/ayatana-indicator-keyboard-icon-generator b/data/ayatana-indicator-keyboard-icon-generator deleted file mode 100755 index 0316d7f4..00000000 --- a/data/ayatana-indicator-keyboard-icon-generator +++ /dev/null @@ -1,263 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import gi - -gi.require_version('PangoFT2', '1.0') - -from gi.repository import PangoFT2, Pango -from pathlib import Path -import sys -import getopt - -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 -'00' #Unknown -] - -def printHelp(): - - print('') - print('Usage:') - print('') - print('ayatana-indicator-keyboard-icon-generator -p -c -f -o ') - print('') - print(' The padding between the fill and the edges of the image') - print(' Defaults to 0 pixels') - print(' The colour of the fill') - print(' Defaults to "#ffffff"') - print(' The font family') - print(' Defaults to "Sans Regular"') - print(' The output directory') - print(' Defaults to the current directory') - print('') - -if __name__ == '__main__': - - nPadding = 0 - sColour = '#ffffff' - sFont = "Sans Regular" - pOutDir = Path.cwd() - nFont = 15 - lOpts = [] - - try: - - lOpts = getopt.getopt(sys.argv[1:], 'hp:c:f:o:')[0] - - except getopt.GetoptError: - - printHelp() - sys.exit(1) - - for sOpt, sArg in lOpts: - - if sOpt == '-h': - - printHelp() - sys.exit(0) - - elif sOpt == '-p': - - nPadding = int(sArg) - - elif sOpt == '-c': - - sColour = sArg - - elif sOpt == '-f': - - sFont = sArg - - elif sOpt == '-o': - - pOutDir = Path(sArg) - - pOutDir.mkdir(parents=True, exist_ok=True) - - nSize = 24 - (2 * nPadding) - fIconX = (24 - nSize) / 2 - fIconY = (24 - nSize) / 2 - pFontMap = PangoFT2.FontMap.new() - pContext = Pango.FontMap.create_context(pFontMap) - pFontDescription = Pango.FontDescription.new() - pFontDescription.set_family(sFont) - pFontDescription.set_weight(500) - pFontDescription.set_size(nFont * Pango.SCALE) - pLayout = Pango.Layout.new(pContext) - pLayout.set_font_description(pFontDescription) - - for sLanguage in m_lLanguages: - - sOutPath = pOutDir.joinpath('ayatana-indicator-keyboard-' + sLanguage + '.svg') - - with open(sOutPath, 'w') as pFile: - - if sLanguage == '00': - - sLanguage = '?' - - pLayout.set_text(sLanguage, -1) - nLayoutWidth, nLayoutHeight = pLayout.get_size() - nBaseline = pLayout.get_baseline() - fLayoutX = (24.0 - (nLayoutWidth / Pango.SCALE)) / 2 - fLayoutY = (24.0 - (nLayoutHeight / Pango.SCALE)) / 2 + (nBaseline / Pango.SCALE) - pFile.write('' + sLanguage + '') - - sys.exit(0) -- cgit v1.2.3