From db6a1423b097bdbfd09b332d3c36f33eece521fb Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Fri, 8 Sep 2023 15:47:38 +0300 Subject: [PATCH] Update website design --- .gitignore | 2 + Makefile | 14 +- _config.yml | 7 - _layouts/default.html | 54 --- app/assets/fonts/Qahiri-Regular.ttf | 1 - assets/css/style.scss | 101 ------ assets/images/favicon.svg | 4 - docs/_config.yml | 4 + docs/_data/messages.yml | 27 ++ {_layouts => docs/_layouts}/arabic.html | 0 docs/_layouts/default.html | 63 ++++ {app => docs/app}/Config.js | 0 {app => docs/app}/FontRemapper.js | 0 {app => docs/app}/HarfBuzz.js | 0 {app => docs/app}/OpenType.js | 0 {app => docs/app}/ServiceWorker.js | 0 {app => docs/app}/TextView.js | 0 {app => docs/app}/app.webmanifest | 0 docs/app/assets/fonts/Qahiri-Regular.ttf | Bin 0 -> 36284 bytes {app => docs/app}/assets/images/app-icon.png | Bin {app => docs/app}/assets/images/app-icon.svg | 0 {app => docs/app}/assets/images/clear.svg | 0 {app => docs/app}/assets/images/export.svg | 0 {app => docs/app}/assets/images/onum.svg | 0 {app => docs/app}/assets/images/open.svg | 0 .../app}/assets/images/remove-dots.svg | 0 .../app}/assets/images/round-dots.svg | 0 {app => docs/app}/assets/images/save.svg | 0 {app => docs/app}/hb.js | 0 {app => docs/app}/hb.wasm | Bin {app => docs/app}/index.css | 0 {app => docs/app}/index.html | 0 {app => docs/app}/index.js | 0 {app => docs/app}/override.css | 0 arabic.md => docs/arabic.md | 5 +- docs/assets/css/style.scss | 336 ++++++++++++++++++ docs/assets/fonts/Amiri-Regular.woff2 | Bin 0 -> 41260 bytes docs/assets/fonts/Qahiri-Regular.woff2 | Bin 0 -> 11660 bytes docs/assets/fonts/Raqq.woff2 | Bin 0 -> 1096 bytes docs/assets/images/favicon.svg | 5 + .../assets}/images/install-android-1-ar.png | Bin .../assets}/images/install-android-1-en.png | Bin .../assets}/images/install-android-2-ar.png | Bin .../assets}/images/install-android-2-en.png | Bin .../assets}/images/install-ios-1-ar.png | Bin .../assets}/images/install-ios-1-en.png | Bin .../assets}/images/install-ios-2-ar.png | Bin .../assets}/images/install-ios-2-en.png | Bin .../assets}/images/screenshot-clash.png | Bin .../assets}/images/screenshot-dotless.png | Bin .../images/screenshot-rounded-dots.png | Bin .../assets}/images/screenshot-spacing.png | Bin {assets => docs/assets}/images/screenshot.png | Bin README.md => docs/index.md | 7 + requirements.in | 2 +- requirements.txt | 6 +- scripts/buildwoff2.py | 31 ++ 57 files changed, 497 insertions(+), 172 deletions(-) delete mode 100644 _config.yml delete mode 100644 _layouts/default.html delete mode 120000 app/assets/fonts/Qahiri-Regular.ttf delete mode 100644 assets/css/style.scss delete mode 100644 assets/images/favicon.svg create mode 100644 docs/_config.yml create mode 100644 docs/_data/messages.yml rename {_layouts => docs/_layouts}/arabic.html (100%) create mode 100644 docs/_layouts/default.html rename {app => docs/app}/Config.js (100%) rename {app => docs/app}/FontRemapper.js (100%) rename {app => docs/app}/HarfBuzz.js (100%) rename {app => docs/app}/OpenType.js (100%) rename {app => docs/app}/ServiceWorker.js (100%) rename {app => docs/app}/TextView.js (100%) rename {app => docs/app}/app.webmanifest (100%) create mode 100644 docs/app/assets/fonts/Qahiri-Regular.ttf rename {app => docs/app}/assets/images/app-icon.png (100%) rename {app => docs/app}/assets/images/app-icon.svg (100%) rename {app => docs/app}/assets/images/clear.svg (100%) rename {app => docs/app}/assets/images/export.svg (100%) rename {app => docs/app}/assets/images/onum.svg (100%) rename {app => docs/app}/assets/images/open.svg (100%) rename {app => docs/app}/assets/images/remove-dots.svg (100%) rename {app => docs/app}/assets/images/round-dots.svg (100%) rename {app => docs/app}/assets/images/save.svg (100%) rename {app => docs/app}/hb.js (100%) rename {app => docs/app}/hb.wasm (100%) rename {app => docs/app}/index.css (100%) rename {app => docs/app}/index.html (100%) rename {app => docs/app}/index.js (100%) rename {app => docs/app}/override.css (100%) rename arabic.md => docs/arabic.md (98%) create mode 100644 docs/assets/css/style.scss create mode 100644 docs/assets/fonts/Amiri-Regular.woff2 create mode 100644 docs/assets/fonts/Qahiri-Regular.woff2 create mode 100644 docs/assets/fonts/Raqq.woff2 create mode 100644 docs/assets/images/favicon.svg rename {assets => docs/assets}/images/install-android-1-ar.png (100%) rename {assets => docs/assets}/images/install-android-1-en.png (100%) rename {assets => docs/assets}/images/install-android-2-ar.png (100%) rename {assets => docs/assets}/images/install-android-2-en.png (100%) rename {assets => docs/assets}/images/install-ios-1-ar.png (100%) rename {assets => docs/assets}/images/install-ios-1-en.png (100%) rename {assets => docs/assets}/images/install-ios-2-ar.png (100%) rename {assets => docs/assets}/images/install-ios-2-en.png (100%) rename {assets => docs/assets}/images/screenshot-clash.png (100%) rename {assets => docs/assets}/images/screenshot-dotless.png (100%) rename {assets => docs/assets}/images/screenshot-rounded-dots.png (100%) rename {assets => docs/assets}/images/screenshot-spacing.png (100%) rename {assets => docs/assets}/images/screenshot.png (100%) rename README.md => docs/index.md (97%) create mode 100644 scripts/buildwoff2.py diff --git a/.gitignore b/.gitignore index fc2f44b..57a25cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /venv /build *.swp +/docs/_site +/fonts/*.woff2 diff --git a/Makefile b/Makefile index 751c40f..8c8b7b5 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ NAME = Qahiri MAKEFLAGS := -sr SHELL = bash -CONFIG = _config.yml +CONFIG = docs/_config.yml VERSION = $(shell grep "version:" $(CONFIG) | sed -e 's/.*.: "\(.*.\)".*/\1/') DIST = $(NAME)-$(VERSION) @@ -29,17 +29,27 @@ TESTDIR = tests BUILDDIR = build FONTS = $(FONTDIR)/$(NAME)-Regular.ttf +WOFF2 = $(FONTDIR)/$(NAME)-Regular.woff2 .SECONDARY: .ONESHELL: .PHONY: all dist -all: $(FONTS) +all: ttf web +ttf: $(FONTS) + +web: $(WOFF2) + cp $(WOFF2) docs/assets/fonts/ + cp $(FONTS) docs/app/assets/fonts/ %.ttf: $(SOURCEDIR)/$(NAME).glyphs $(CONFIG) $(info   BUILD $(@F)) python $(SCRIPTDIR)/build.py $< $(VERSION) $@ +%.woff2: %.ttf + $(info   WOFF2 $(@F)) + python $(SCRIPTDIR)/buildwoff2.py $< $@ + dist: all $(info   DIST $(DIST).zip) install -Dm644 -t $(DIST) $(FONTS) diff --git a/_config.yml b/_config.yml deleted file mode 100644 index b5795e5..0000000 --- a/_config.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: "3.00" # Increment only when tagging release, download link uses it. -title: Qahiri -title_ar: قاهري -description: A manuscript Kufic typeface -description_ar: خط كوفي مصحفي -logo: assets/images/favicon.svg -theme: jekyll-theme-minimal diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 0cbcc7f..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - {% if site.google_analytics %} - - - - {% endif %} - - - - -{% seo %} - - - - -

عربي

-
-
-

{{ site.title | default: site.github.repository_name }}

- - {% if site.logo %} - Logo - {% endif %} - -

{{ site.description | default: site.github.project_tagline }}

- -

Download font

- -

Go to app

- -

View the Project on GitHub {{ site.github.repository_nwo }}

-
-
- - {{ content }} - -
- -
- - - diff --git a/app/assets/fonts/Qahiri-Regular.ttf b/app/assets/fonts/Qahiri-Regular.ttf deleted file mode 120000 index fea43e3..0000000 --- a/app/assets/fonts/Qahiri-Regular.ttf +++ /dev/null @@ -1 +0,0 @@ -../../../fonts/Qahiri-Regular.ttf \ No newline at end of file diff --git a/assets/css/style.scss b/assets/css/style.scss deleted file mode 100644 index 8df6f71..0000000 --- a/assets/css/style.scss +++ /dev/null @@ -1,101 +0,0 @@ ---- ---- - -@import "{{ site.theme }}"; -@import url('https://fonts.googleapis.com/css2?family=Mada:wght@400;700&display=swap'); - -body { - font-family: "Noto Sans", "Mada", sans-serif; -} - -body:lang(ar) { - direction: rtl; - font-family: "Mada", sans-serif; -} - -header, footer { - float: left; -} - -section { - float: right; -} - -header:lang(ar), footer:lang(ar) { - float: right; -} - -section:lang(ar) { - float: left; -} - -.lang-switcher { - font-size: 14pt; - float: right; - transform: rotate(90deg); -} - -.lang-switcher:lang(ar) { - font-size: 16pt; - transform: rotate(-90deg); -} - -p { - text-align: justify; -} - -.downloads { - height: 40px; - padding: 0; - background: #f4f4f4; - border-radius: 5px; - border: 1px solid #e0e0e0; - width: 100%; -} - -.downloads a { - line-height: 1; - font-size: 120%; - color: #676767; - display: block; - text-align: center; - padding-top: 12px; - height: 34px; -} - -section img { - vertical-align: text-bottom; -} - -section img[src*="#install"] { - width: 220px; -} - -@media print, screen and (max-width: 960px) { - header { - padding-inline-end: 320px; - padding-inline-start: 0px; - } - .lang-switcher, .lang-switcher:lang(ar) { - transform: rotate(0deg); - margin-bottom: -1.5em; - } -} - -@media print, screen and (max-width: 720px) { - header { - padding: 0px; - } -} - -@media print, screen and (max-width: 700px) { - section img[src*="#install"] { - width: 45%; - } -} - -@media print, screen and (max-width: 480px) { - p { - text-align: start; - } -} diff --git a/assets/images/favicon.svg b/assets/images/favicon.svg deleted file mode 100644 index a6a6e90..0000000 --- a/assets/images/favicon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..eeb20ae --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,4 @@ +version: "3.00" # Increment only when tagging release, download link uses it. +name: Qahiri +title: قاهري +description: خط كوفي مصحفي diff --git a/docs/_data/messages.yml b/docs/_data/messages.yml new file mode 100644 index 0000000..7c52755 --- /dev/null +++ b/docs/_data/messages.yml @@ -0,0 +1,27 @@ +en-US: + foundry: Alif Type + foundry-description: Alif Type is a virtual type foundry specialized in Arabic and mathematical libre fonts. + contact: Contact + contact-detail: Do you have questions or suggestions about our typefaces? Reach out! + facebook: Facebook + instagram: Instagram + google-fonts: Google Fonts + sitedesigner: Website design by Abdo Mohamed + github: Project page on GitHub + app: Go to app + download: Download font + description: Raqq (رَقّ) is a manuscript Kufic typeface, intends to revive (as faithfully as possible) the style of Kufic script used in writing the Qur’an in the third century AH. Raqq is Arabic for parchment, on which early Qur’ans were written. + +ar: + foundry: حروف ألف + foundry-description: «مسبك حروف ألف» هو مسبك حروف رقمی متخصص فی الخطوط العربیة والریاضیاتیة. + contact: تواصل معنا + contact-detail: هل لديك أي أسئلة أو اقتراحات عن خطوطنا؟ يمكن التواصل معنا عبر + facebook: فيسبوك + instagram: إنستاجرام + google-fonts: خطوط جوجل + sitedesigner: الموقع من تصميم عبد الرحمن محمد + download: نزِّل الخط + app: اذهب إلى التطبيق + github: صفحة المشروع على جت‌هب + description: «رَقّ» هو خط حاسوبي كوفي مصحفي، يهدف إلى إحياء الخط الكوفي الذي كتبت به المصاحف المبكرة، وتحديدا مصاحف القرن الثالث الهجري، عبر رقمنته رقمنة دقيقة قدر الإمكان. الرَقّ هو الجلد الذي كتبت عليه المصاحف المبكرة. diff --git a/_layouts/arabic.html b/docs/_layouts/arabic.html similarity index 100% rename from _layouts/arabic.html rename to docs/_layouts/arabic.html diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 0000000..44c4506 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,63 @@ +{% assign messages = site.data.messages[page.language] %} + + + + + + + + {{ page.title | default: site.title }} | {{ page.description | default: site.description }} + + + + + + + + + + + +
+ +

{{ messages.foundry }}

+

+ {% if page.language == "ar" %} + عربي | English + {% else %} + English | عربي + {% endif %} +

+

{{ messages.foundry-description }}

+

{{ messages.contact }}

+

{{ messages.contact-detail }} info@aliftype.com

+

+ {{ messages.facebook }}
+ {{ messages.instagram }}
+ {{ messages.google-fonts }}
+

+

{{ messages.sitedesigner }}

+
+ +

+ {% if page.language == "ar" %} + عربي | English + {% else %} + English | عربي + {% endif %} +

+

{{ site.title }}—{{ site.description }}

+
+ {% if page.title and page.description %} +

{{ page.title }} — {{ page.description }}

+ {% endif %} + {{ content }} +
+ + + + diff --git a/app/Config.js b/docs/app/Config.js similarity index 100% rename from app/Config.js rename to docs/app/Config.js diff --git a/app/FontRemapper.js b/docs/app/FontRemapper.js similarity index 100% rename from app/FontRemapper.js rename to docs/app/FontRemapper.js diff --git a/app/HarfBuzz.js b/docs/app/HarfBuzz.js similarity index 100% rename from app/HarfBuzz.js rename to docs/app/HarfBuzz.js diff --git a/app/OpenType.js b/docs/app/OpenType.js similarity index 100% rename from app/OpenType.js rename to docs/app/OpenType.js diff --git a/app/ServiceWorker.js b/docs/app/ServiceWorker.js similarity index 100% rename from app/ServiceWorker.js rename to docs/app/ServiceWorker.js diff --git a/app/TextView.js b/docs/app/TextView.js similarity index 100% rename from app/TextView.js rename to docs/app/TextView.js diff --git a/app/app.webmanifest b/docs/app/app.webmanifest similarity index 100% rename from app/app.webmanifest rename to docs/app/app.webmanifest diff --git a/docs/app/assets/fonts/Qahiri-Regular.ttf b/docs/app/assets/fonts/Qahiri-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..39f96d95cef6c9d0d61e1bab4d90af6ab793c863 GIT binary patch literal 36284 zcmd^o3w%_?_5aM>-MhQVX0w~@W($ieM$%y;9HMhIJ0Y!HeOtg^m)i1TsV8_%=X9D4-n$&Zrs;( z&RjTq#rHN$1Zs~8p=*oIS+cZui)a8oTPgpd#j_X9)4P8Nco*Z|E{GNuA#NFQ|7U09 zkN&5S+J}e{ul)F}znRyhJE?0QYIU4bqgec*oHjkF!~Zbp{`wP?B1jp3awF%7h!Mgj zCW%~OmQ;Cik!qC-(Q;cxp@Rm4So-y2oxRP5Bm&kyR+wb%buz9@i!Ptajyb-6(M?CN%xx%uF z;--J6HUGZ|Oas!;JcJKE&F(&7)!xB%0p@X=7%D16m8ce@#1YUQzAw%YbHzpC2jX^d zx42jQ24nDdx=Z)#1NCx!q<)P4J^d{G9Q|DV0)4r@QomBaUcX7-px>eYLjR?HpZJZGAtrh4eOk znm$AC>{HwAS+)HhwQbk;Ier`T1Pg=3!BVbmgsM%Ri5i6*lH5w%m|Tw=8h1Oz6XL(c zQ{tX4r+vBP%lMZ^B2Iick^K>0wtQLh<&ZCjep&TpIbsKVS%RPci%<7EaYwY|zqd%f ziMNh@YusB$zf}ynF2HT4Sj>r}Aqw#z+>0E__MQ@-1DhOKmK`k%GVi5>^LS*1j35+| zgVU+<7CBE|A%7^B%JXE0TqI}7PB~VNlN015d5kHb$=}Jx zTMxKTVL-beZ4(8yfwZ3jm+6LGf zZO7Qour0A&V!Oe1o9$lPqqaZWUbXGDCG}jrN&mint-ixPz#g)nU_Zq^(>~vRiTx(~ z1NJ}J-?RVIk?*K>)H_BvCOS@VEOOl9c*^mX)8VXjp6FcW{JC?7^OKyioTGEj&bc|~ z>72K6?YYBpN9VTZUXi;g_sQHnE{7}VI^Okt*L>H-t}9)4ySBMralPmIJkOq2kT)nV zme-y)CvS1yro7#G|Kl!nx47rIf8u^F-#Jk%26Yoavue^WozUSzGe*z<~q917{EX z$-teZd8J2}{#WT;r4N=qR{DPFXM>6cRScRq=!8L64q7wljzRYi`g>VfS#?=s+32#P z%T6pit!#eT#bqnYt}WY8_CVRzvX{<DG^`R$f}(SU$P@r1CS$yUMRE|5^DX<=e_% zEq}lK^PnZ@4h{%b25TXgCI?Rno)J7Zcv-MJcw=xw@ZR7Td<&Bkh zRNhzlNaa(N+bdtMe7EweD!r<{YE;#+Rnw|wRxPT!r0S}w8>%)`-COmWsy|n~SoL<* z$B{s!J~B2kC314)jL2D$^CFiu*${hB1@4H2%LQ8Igg@t-#0CW>!=Q{dyiXSyb4f+{9)3C$qPxVbae}Lo6RR8Sv z7s{b#AN{uzk~`H+soFMUHZC=5GwIUM$`!SM0~*jxR0WeK*GUz$Q@^+vxT2CYU{iOY zx3C5!+GEY$2% zxx`&|qi5~t!$Oo){h07|B=&H(E%x=^R8%T=QcV_Co?{ZD*k`d8j~)?m_ktpSoKos>7a8qK z)ssn?%!&#RyPo#;jB0vs=30y~v!2Hct?IZRv5wzO++lVG`Z1$F?Py^n>Q{~8ZmlRO zsVHmBH(QhH;erBp$v$Hwr(l{uRSz4$jL0sdw+(=F$3Usq3D|DFGqB__Vx~vBuj>*fo=M!PLx?g*{+zt(u;@`Z{}SxU$7@^`y%1q-a?z zR!$2o$Q9TxV43z4{V~-+7GY+|kZTG2`Ft62t?&fjn8Jh-Z7{ci<91-pbTLmj}?2Y5fKDVcKBD}sz%U@ zD3@!Lvp2Q|8l$aOp>%WeaqwGO0AtA#a?~OfXPuU*DeVTu-egt&6Ns)GsuA`(d?G+*GT>S5Cd`Nsx> zBPzS)9lqW<)urWSl@-oBuR;MxldR5D5U9;+zN5LWXqYFz0CSyu)7RS+8C+aq$F!(= zY+wInj;skDSsJYjH+0Bne7#52Hx3w(2jxwIhhXDE84%sndT4Gm=S8K=pqjzZUsMfU z$W4?)yMPsGX^Dj2JGCr_(Qy^};|4Cs$26}GK>&ikLlseNpv{x$y&{xvalGp5_Nh4u zwzECfsJvZs02duAaLQBeRsv;F<(3$R~#?8q}wPH;WBo4C(8GvQmy@@ZZRo7VDA1j(K}U~>#Qo76DAG)6K)m#j5Fe}Vtz?LwR6lTNh&t9S+eMIeTou>S zKx%1ZeL96G%?w3P2Pcm>x~lqwrqaQ_kE*XypsRAVx+B9)r|$QbxJp`wRm2M82F^7{ zS2s)n#^Ds{Q$1qL9P`j}9Xx8zBp35NES*OBb$ma8@Ja4X&JbS$AIKV7 zz$$$Fja!YXr<`xpWQ-&1DQw4jPJ}bN(1lftSm_4$>i^ot7SE$6*LGyqUAKk2rVhXN5~Uxp4u~xN!;TN?CrF9;wLs0 z6EL&P{DYOLn>TH=S>}YOb$-CBWG!gAAN@7yh|bjgOSnIZ?oB*^-z0^f_%rvT!f!s} zkIIT)p44ICbVEip@%|8GIC>WoiD;57xI(gal7HL%h=Y9Hf*l~pS)`GiRi!H+`R^2Q zSmsrZEp$bW-2~;|hT8J2a8fn)Fa~jGatf2}2Cn-|TxpgvTGki0%$C|!ds3zLA66-< z)1*Qghs_2Kn@wnn+DzSV!XX=)YS|WOgusoc5B?$Q9|K)CU}$U2#$*+>*JG|_U2Vn3 zUjI)qbHy=p#yXU)w%y{m(|0na(RggTGuOas)3@XSV8>Y4Xg# zpzi}Evv5C5-au*Y<-Vo=GagYm5wB$7^dIudfppvpVKvX_Yb^E!bgnKM*|%f#@@R+d z6_MESP*eJ4!2}iu@$#HLsz(Oin0a|Bk%N8^G#(yV7AW3-taP z2Id%P5(+kHGO4+p<}6)qIMI;i+B=d~Q1if7r01+Lr94gq^eq*kQW?3>PVF| zTBEc^!XlftTx7;-??;~4po;1o>1(JdE9!kawTLXK%Fhp$=$4$4V7S0vVC>33lYNiJ z)y3jz;IE5agb`fd_*aoit2kZKY8DemKP$xy;|uM)==K9vj8m#F$=ZOiSak({^lBREIkJw3kxV&`S0oUhXv4H$`F9MP=FhUh;xf0r$?9>MP+AWU9ss@&zE;4Hv+mpr^pMChPY3tLPsc6mC!)eX* zZ`GPl(VEk!HAjAn))=w|t%0mr4$dNpfW9{3fdS$#G2$Jm_^UboQX_s$D*jTAzs!io ze6QrH_#FDUn`}zNvF5%~1Nh0tfp|;Kq)s@99(*=81(Uj?H<+?WjG&fM(HD`nNx zrejvb-g$av#hl19qCJ+fY^+Ym&6p7@W9cbzDj;V-7zn$lDwUd{u~*vM1nVRW_+#a5 zT%5)Ln@Vm9}SY#mi4=TyZ>ThjDnLk)Ow5 z@pJY|fKrru3sdAKPy+gOrztV8rvUmvr=eIV18QFD0)@#+ z-iT8i%>>%l?I}+9;>8}h5*sFp_ORqbqaw{ml}*J$|6$F?(BqMgQ_ED3yp{5bM);~8 z+W$b`u-xEk#sYnxzff~P<1_QXqHS30ktM@oPio;!u-T{bO-tvaGXbV$U%Gw!kw?`JrmrPop6p4`{ZcWHI38(T-#m zT)h=XpZFvd_V#75f{C{4Iu22}Tn0EaU)R-^KI_A~@WcqMz<+@*f^5JJGH7dPbF`OS zLL)K@`^Jp!@=2?Kdyz3WqPJ3rGo9(A7A)@c^ajxx3>s)?#mo^QT?=%^ZZqhN`MtTR zwFSmzoYgwAsBy6FhoV*H*Ne)Fj^ra?)P`6rKA^Cqq;LRCfx6A1Icz%WFy~!R#l^Zq znim4$ENr_Jb7kOaaF&UwAxVHKmQ6~MKxa-_A&n&|?G?MR5KUPgVIL+MZUXIe@kXb~ zopkOapZW<1)n}fsO7m4mhjF68WKrV~RW>Jy9@t2YQ*Hzary}hB)DgN&XxXPO+E;Y? zE|ZxDM2vAmXP>g*L6#gAJUPwRdvg{<_{)17NK$DQ8M5mUs{nwm6Y zErLx}gM~V=cYA$_lLTfwCui8O%}U&*v{bY9FR|*3(G#4Idq(Y9L_8D*Owfa4Q0Z#` zpBxkiTAl8bh2X-Fs8=#3qwzd77)>`A#NLPG5Iu?rHk)P)XyO?<8fqLGjXzuBY_9US z-JYDB(IA3K9G%@03Xc}(F;$}3z$2RshlvZ5;~Q`Z`|5F|>Ts|TNytgImhmbm%@WvF zhd9G&s3`WZb)6{?E~`Jj&X z6Mpyb+ETyO+Fq8^P=@0iCbXeh&>-&mgOCZLDNgUfI4gn-8f2}_U-}01CaX+HbDJnpW$Zq(a^pS z`x|hCYvzC>czuT)Ry{Pg(U{Z4?;zvptodp@@3fgm1M5^cvW#^&pG{2J^>Ai8J<~OO z5-6}*v>aD+gluhO+UpGEUuw>8zJk1eTH+PH63^N*{0r+rs7@BTJ5YjxFMKl~llEYCvCG}AXWjMeBk z;vsnP@?oxFtu4Nthps+95O8K3!#gVd z0FtV~_UCV|w9i002wkb2nBi2teMi{=6`Mos5bf=D48>&_mx85*w$uet_P!&AkSl4_nW90c0W4ZgBsoNUqX#8vc%K# zN)TRN-Zu_}o1rVb?j)Q883(X-d}gzeX9~7dyb(O6*Js-2rka! z#PB8|!)lp=8;a7QeLFp;S+41NBr1y+Ou$1Xi3!1&BUtXdW`aE3*Zb>|64~bK-GNBm zX44Jm3hO-v^h63e;-S%l^Xo%6wTcrZP%;7EXRoWTt7oe{4qnsNJyA{08#J-pl`}Y} zkZLVNz*Ro+##q8X22WKD&Kc;H6MenU6_=M6%c!sSA9>|DgI%uBm{a&14$&ydZG4-s zfX(zi+J8Y9XL(X>j~Z>K^nLxL8}SBht^@WVvSyJ*_t5BHcX6PoAN1ozfxhTdJ2KE$ zJ@LO*TOVRU;=+;|$Eg7Dbu*q(h;OIo9zdsSM7{hSR`}q1Idtf=OuaK<2f6_kXT%MC zmZUZQ;y9OyvR-ea7s1{QxaIOgMZFe6`HwQngLvYfD33T*9_x-i<(u&O1q1SSfWkgX zp+DRl_BKK@@5WiuZh88tr}l1m>~^!38@QHFvTC`3Ye8J9mTXvnmWI_Nhup4a9znTm zsx6=ds_Jc$E905?WT$SB#b&B(L0LRCs<5T4aR>=u-qjG7E&KMx8|3NT-Mt&)@$KE+ z27O*;%)iLO{AI=*aVCAg4P4akHg-9U_U*id=Y2&x^H_s=m}^5NrdYXkpI>M+%7Krq zHI!?AwhrZBgj9P&)`%e`sgc*yGryzWm2_Y5xugqBB zt?~kQRhyy~$J)VZ-Y|ZRUXTX)df%1BBnAvF=kX~$S^dxBlj2hS-+A0W$?D(HQY}RDr$Tgkb2AX8lKZ#Z7iQ)DD*c*n;ZSxw|B?8 zk$ZbLglJ~{`4X0(4E|T`M;zJ@d2diX1DXZmgP`FL;P%TlmdS>s)=BkcWS4L+h4 z=p=OwnjAth8>Ohvb#Rzj>JXAvmEsYk*uJ&n+{`J!BU9plZq{0gB`J7-RtOBNHI#}pQ#)imnEBF9XNI7gdP&gI^qrQB z5VzSqWYl2rr;@V@uEZM(g?JoVJgwklR4$Xl!@WIPsqbqngp@A3R;}-FIM&`7>x_|B zko*@)CB(y6MF?0)1FbdMn0kNB5SLGTxa7<+BXfr~0)ynglAAbJM6Sx&g#GmyD5Y9J z@1!lEcPA8*Q5jn)MS(KS-hySDdY-bOD4^kvjyLWZS{FH@sw@&6=CPGE)*ewB^OOt^ zjt&Gu#l>3Tpvtk4vN3*NtYz@<6GjKhB3_@<>+2m=9HIM(mdHbK6gCJ$3L&3*R+yOnwa<=gG$~vgXk> zg(cB(65gJ-N2K%}(4S3bkakw?}X+vsvN z9@jAD2p(a;sFQ2D0PoIAV@Yw~H#IoD;m*!@yhB?P`}$D>yA#BJf%2D&TSwL!F{=?% zBQGC^m~={Vznmz#0jm~ykJak_@E6eIa*FxGU#J{p+-j|sQ}Iqgl%!O|5>zgWG91Tc zjS?rIL}tD(zzcUs3q!#bl%~|F6rvLNyBnzyf(-7td@7A=DuW#9oCg1#f;jX}z1chU zF<*6Qu)rTUW!{kCgN{9lA)-w7uz$VJi`!Ohdp|J(WTXtXmLWxnoh zU$#uHUbd_^7?BGi#u#0Lx1{E(H{S4(I)14L)TjpkHF|OG5d-ofquhGPH(a0YhA~A+ z$2Q0gVBH8M-COIeosu)fOc^OgW=frEueaFCuGn~%7z61P(DW+E6-8+(q03dN`^jQ8 zT7H#_D1Vh0k;=6SvB<@F6GrT}$=iu~0hb|MRb$rPjoMRish^3scs}Rw^WK`u3+Ol= z1guXp;dF~j#azbvQj$p=o+?y0E>}fIrX&^KB6bKk3QPD?nFdj{4iI=h>B*QWBkzeS zr-6M&4ENUxepd(jiwt>*#0t3y=U~mVpwKSBz3Sva##<+z_H`i#y`5zba$wd~=j+r- z-G+>ly7U&3Yt(+8$~`)r8`cJFTx8{T?=$w=Fh$fsHbU#g2~!9sdcX{)lCz$Om!ol# z*?b(Hp2Skzmq7pMD90y!!wFAu42OGF8s4%?r#Lgtqbr#H5ve26PWcaS;Oh^J^U z?ECk5QYdOn{8?|X$hY-8sS{X zt_?=ml@ZR9722PSc(-V=>@~uLVzISCg+ZXf)-^_0iel>)3cDo7zi5OJkM1~9oFf*A z3-IpR`Ix=uiKQY4dwv~UJwnqEGaJ_v_)Wd@Iad&K{$i9m3n{ZW|2WM0OOf*kba z7$D8(nDfM$IMFu?DGNm{U@SoV9Hd-;I%gy1+zhzY$eCHsROBFiVgd3j#<}nsU{!}V z6^|2>#nI^dQCYc%iR}EDkb-^EP6A}YbUyIv1imKh%rbr9jWcj3nkej#MT@CLvqcAB z90gcQ0PTV-tb(Y6C^8f7ShQsh?q?xvQeX~JW&uJFbef5r3YNl(C`u^{0l5RA#ehB^ zZ`f9OX5x^b(ZG<|327h*uT0mda8Dq z?K}~DHW_86Ft-w?q#;kvf-n?meYvV0xRX<(NMV*;uZhh}yrFm|;1ONVG$?*P?gaWhR_We?K&bKA1>rC}Q7cBHQoVRD&yi?v1CS=u6mO-FI2TcKTPb=a=cuF=+{ z+8xlM zIZGuRWQe604kJ5tKiV?hay;BLxT7rX2)85LZmF}hSPqsp$Fkhg1-Afhu@R>GD=afC z2TxmNxeoPax?6Ei4$n%mGw=IeHz0kZbvWDv%O-?3!#x7G749jxXDr*b#yh%RN6c=HZ=-nVG4H|O!ewuj^$6e3 zVJF9Ts#-WcPGOnHaPH#x&2l30ZiySj%VlC&20mx>1a{gj3rXvX%W}^0A5<0Y4$=L`8@EG5iKe z{qie`wusBPmXon2m*V8!cj14Oya085pL}r{`y(J1r3`Vni*t6Mzi38gsRfx;1PK)s z+u%#g{_BvEp4(wbf;<&iLkMWp5)xX985~yk3vf>olqBSGgjc~`VO%jTSpwgR>juPa zggXXdDX<=gUkm$&grp};08d$R4Cw)b7)mS0#0{VFggJj4Qc^Nb5_1NX8pZxNSUp^@ zrk7woIUQ2|I^BsgdRbT%o2a(61%Ac(gpsp5# z&cd8XdRh~H8upNmLY`wW&tP;hXGnPi;-OE$cNi%@52aJmovZ}3GCiLW0K zFYN?xYgqN~Mi?RsrAknjh95yuKM0A87)qh<37C0^@~}I>H!+4hz!|h#vtmjCJJu)8 z0lGhlTpH_oW{a)JDe>fmM2kuDB{F(?Vh7EnvxWRxI1QiD}$2%YqW-d=M(YFwm_FPaON?&7ElDB67`PYlrvFhCGIXZQYiQFi1VQKBCKxA{4TVy z4r{Llv~(qG;8#N5SqB~GCk%yX_&O*8Im+BXbrALv?!aOtQJ&H?Q10H0 z6h(PTk+6%VOLX8~L6e}iiuYwuMAg%Tndc7Vv}e#+^@@p=;!`(DO0gA^mg23DJ7Yop zHo#T1-huS#LiIpC;@rqFhQ~4S^abFt9`Q%aV1MS(X_mSTr7EyWBTR{MR(y%*W@w8v zmNjUcY?;xR0dCu23T6;h!GGC2XMyc@IE+xT^ezvDL> zv|I(N`!-10n&fB6&%|5UE!-vE<+%6Qe?NJD@_z9F`<0?D`F8ScF@|%EV}CsRarS3$ z>RB8gSF?Wu`)kUOkJK2Ac{g>EByU?)Bt;{tfJ}VSgk0zhwU| z#tQliAl$=Yll~O*EXV(Q6nrcBB&7Sh?7zqU`^j4|zkk5Kmeofw<8BP6DPB}um`xGF z>3^RiiMI~Lku=U;WZr#={ax(8%>FCvzsmk@_FrTFE$;QdGfjy{Y4oX4wv*GpEj%6C zFTMnfuUYQK?=Sck@~CZLIrg82#p?Gl>IB&U&a0K za}M9h{x4Ww-pk?p*?)lj2if1oba;;a=h^=Y``g)nf&Crq7eH!|c6b!~H*xQ5V!wy| zKeE4#{pZ+!9#*1#px9;dGW1<3wEGwE7TdcZH7NWh*Z)`c-(ml6?C)XUhMxbX(!?9< z@vFvck$`qUd5>e-ACJ{pJM3Ov_?>{+y$sf7>Y17BpUJ5>_k!PSPMyQ?%b`R2@a{Lt ze<_DA5X`eUykNLrfA_|)K946V4 z`A5{t_)Go|ewbDHhcGA63Uny13hE3!Zam(!9>?CwF=*}8*iXF{tIO*#li!K=?rapl zM9<#Mvp8vR8gM1ez=E=En7zldR(&^eklk@B(lxAqDFAVYSLL*LSa>9@5EZtus~D2n*ZHeQY!L zEtt8q6YFl$+Q@Pa3lwtFI*Bwx9lD(prRYnXZnjyfTx7@06P{T!7c3QL&YHDwkvMDC zg86gBqK?jU7K#;f=6B8%SI+O8zf@c^f5|xu#2S31et}rGaCXOhvA*-Xg^R_V=inml zSv(669$Z3j9%cXWB}?k+MGyQ2=%ZwRpt=bs>UTTVrt}5SauF2t1yG8|K018Zzv1Jw z0(_h_f=}Ebfj#+nZ3cWi>4kQ=p+PIF1FV&Z9e|vY&dGp46oRc)N>K&6w?lio2K3yA zu{v0rtUU?)<8G_V8n>Qiebf4>t-?0imatuCd(gI3ck4qPdz_~`S2)+@ROU?0IV)#P zZb$BJ*A*_cT4BA}dIjK9KhPcRywEy+4Ep@1h_OQRrq#mwbPnrUH8S-pNX%;S7@A$t$LR%kj1hL zby=}{v;}~-%HQLpz!Ug(Y6-rI`Yd`-!;gGzl{CmhEJ)>8RjakYZc_eH1wzOeOI!knY6tFe3pPjsYAaHM{l>` zHvzNBWW>&an+BenfzVkfPb=`5a0}sXQdU9I;k&nJ)&2PD zt@>u|(~??9tNnI3l1huG4a9PP1u4D{r8N=TowiXzgl+-|t0kFUf z15M(PdDDR3IlyZLq};VwD{X{C+YFA|37_KVZYNfjGh8aYq0!$05a1q=~GB0iU-*j zkdUUGgJN|q3kx^bZ$-U>F^ilPl{pHo1WuJDzMwYUhjgkL5Nu@op+AD$#H}THK~6^u<*tPUGUI6M<}fx^@fN~E zkZy$)QiU}1?oUyUpwZf&u0g{I##f~PcJgt=)81}+43t8m(;o7HKeA%soE-Lkua?(h zC-?@ewQiI*vmKhSH}NHG9ewj5&dfm+N#CjVmEnZsfnRGblOfmzv%kvR&-bXapi!UD znRWH$=NwsLPyn>k;-GD3N^0JOaYOrh8`0+^GoOdF{802_9f_A;<6F^{vIbv*9x2D; z+t*WNyF62#B^Tj~)|blF_{#Gpxmi9bcgQ{RQ%!@W@78=;iB^G`s7`Cq#-cxB(EOs{ zBH|U;ThW7c@X2YJ)QWN1ubqiB+6XCpffCFp*|asm*Lz> z7wlOY(55VgK4rnv0&5^gESPt0gv7HL z8kPmLBppkGY`F)q_v7vL58}F6{5LGI4z{8^3|jwIJSrZ;+T6i{iOYrm=<1 z4(ae5dgd>f&0Y{Y(5e?yfnieGBqV^;qy<(44IGdUKTo<5=aGfdhpQj6<^XV4 z6MB_Ke?5AUdXD;SJo@Tb^bgGt^yT@p*tWDB)LaP)c7txKL8qUCK6isEn?Z@+p{38D zbvvOeya_Bn0ajlCn;;sz(nFcMQ5^c#rc_-Ilf_@pBY6Z5%kxo*F|`!F<9=DFUptXF8Q+ji`*_> zkgv#B@%zkcxD8ub4<$hi_8 zmF3{QEzr*CAV<3MQYgS0ZOTnlO;$jY!* zsZ{|74fXB-$-crJts5O^l?Qx29qln~{?t=6*W$plQQ`%ZAWW%$iQbf|dY3rc0ZHG4gGuY(Mg&w|`_jT;5 zeyV|?rE_nF#6A!9{@c-iB=OUHJg$!nUx4-!HNw^ p:lang(en-US) { + text-align: start; + hyphens: revert; + -webkit-hyphens: revert; + } +} + +@media print { + body { + background-color: revert; + grid-template-columns: auto; + max-width: 100%; + padding: 0 8%; + grid-template-areas: + "title" + "section" + "footer" + "header" + ; + } + + body * { + font-palette: light; + } + + body, + .kufi p, .كوفي p, + h1, h2, h3, h4, h5, h6, + #title, + #logo { + color: revert; + } + + section { + break-after: page; + } + + h1, h2, h3, h4, h5, h6, + blockquote { + break-after: avoid-page; + } + + blockquote.kufi { + break-after: default; + } + + footer { + border: none; + } + + .lang-switcher-top, + .lang-switcher-side, + #sitedesigner { + display: none; + } + +} diff --git a/docs/assets/fonts/Amiri-Regular.woff2 b/docs/assets/fonts/Amiri-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8a2e5cf3183f41cb3609125f9af14db7d0214a24 GIT binary patch literal 41260 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

vN^7`(|0&i~MEGiDuy8<;SL@*Re zK(KT9@sf(=C%KBzzipFypkP47@RIqDjVYcG^jwWyIlq?K4q{sr0;B4S?-`0Yns&mk z@?2h8@;3F_1v8o*n1_L{JMiZznZ*PUuq%J>W;1>j&GHmN*Lv1Hq34AdZd&K}>#LkNv+*A3#Lr0M(C{Aw2u>6Y*FD1O1X(&^`5J zZdli9V=|09r&l8psK0uBu1U4-`1vWjx!K|H0oN~~7176JV!D3JNE#aprly75n3@C^ zO{nt+kJ&J{R5SKEzD8mKP#A!^K57)~{dX+z>t$*KeqXz8sk60jm0)AOS`+lgAB6$G z_zq@K)4Fm(zdV%{6P{at`&W4BP0wE&OCV;gQJeYHd^m2NzZ@1^E-DT`oNnXSgYqx& z^DFh9{tE{U*|>oGJ0X@-}4#W9ypCGcNX+5ClUL8-iXbL-ZaJ086pjl4d`8vsFtB&8n+5GVR{H*GUdj3-wM0tVGCisSmRfXV#6$}Wn~1D zLt$g6v^Id*p!xM&bo0}{p7!vr+$>>hN7}bQo(opCAB~2t)oQL@H3$~m zZw|<%fPFPN$G>uE5Yrn}X{xjwJS}7ituHGkrc}GF>ENR47k;H5dXL$qph=6~xr6GP zYt6G360)0rxL2LQ;FmVX)+lq_(el3ow+_5slMP!Eez2)2u83Cj3QO~Tv(p| za*IKci2aJ(uZ=$mpez{n50FjJhjvb_;!uk4W`YS@&c}AxIfvD~Q=boqu^?E|;^}Mh z^Z%96sj5yEV|XzMQc!Z6wz48n&QnQq(!(lmKk?O|OJr&A9miDm%&}k&~KMJzDsm`*#SH zN<}r7 z!2#J=5jAO;@$Oj}v9ohksz2ZVQh!-^S$GfWOU}4aiI>aE8K0|1urlcv2~~JAxu{*X zM{7eSBWwXEfO0r8aaJ6VB7O)`_$LI2GX{6x`pH|Y@N)Y#E+4q}lAbxZGXLo(97)t@ zi68^5jsQ)52`e6ZISJdJv7$A>zlCV8cZY{&?~Yv6=I_6C*~m>^O`A4a8!bwu)7QjJ zoXxwWD)qr%6qW7UJAE4-?Z^gRUz8;*Y1QZ|eCH!|FW4;JE_flCKoAh?{qgIfzZ?zo z^cp~-N(b0mf!Ai)72bqY+sm^}tD52muJu62tI7&OI*lQs%mX|s`0VLtN@AvC?CLCS zI640y=?KTJ!0(L~>KNb55&gjX@`kboRNv=l{w7`_`fq*sSh$wFe4|_?yWK>aRx@S_ zW3!fdy?#6}Fowc`OC(m(5M8B%BCF*EBfkq~&$4Eqi{UMcqK@qHs)K9>`1>pZ(Y7Yf z7mMuJbd4_EoMFNA!4u63EMsp`Pb%?6IvV)#w^Afx>YZ=9*3HIb0IhsgkDwCUjf>Z~ z%0#MmU+>`H>Xf?pIPjpyLAM+;Tr1}2Nl(0S^5SB4Cb}8AVB?f4(yG-0%DvjTNNEv$ zk`O-$0uBwi+&g5Rf%))#DiTa766l+UnAsG#BCsM*K(QCD{>s<;VUFsD*JJcFaliQ@ zux9V6%et2?dX>wS4ew=-jpygIssEO3C> zg*fUL_Y)7|wc7apPw#KUZN6}wb!N>EO!n{1}{$q#kX1^M*Y=uy-VQZAkF`vkE{(_4of? z%mR)^pTGMmt+?OdN<7E+N91qBKVwNme{ue^O@+~R6+!p;rR;-9`ZtDe4w1^4THqDa zb79lJZ6P6d=a7jPthTe=UM)apbd; zsfm?dxvI^@ZVI`S|BVhr9H%V2`63ptU=%#RAQgVW{;YfBMlOKPp<8FaR7%29rR9;V zcN#I^jip;-B>yU<;i>d8@xcwb7_%b95hl71=w=@vAluGwS-!tSGUo2?JuX>Y$T~?> z!ueOH4FqDKF}hUSwzJN-ErXAB@cNScXjW8T*VC;yJYjjS72p+2bn%syXC7(_W&@WT zvTbYhxYB#T%x!)cH+C?$R=teqK#68CF~J?_*xsb%jLc1Tv^RZD%03{OVHD^8qm#T{ z+h$HKnim}@{Io8y!n3R5R2w7}ec=IZM#W zB{cRA$PB6IbhKTV?R$V_O~`fy!D8iVwY2+`YNU{S+$U|_8yh6I4S!=#eALvpyc6x@ z%~WW{a5S7M?RR*dx}LB4tZNwf$gefbrA01FgqE?o68>R)VvxaUCdyZ}9*lp->M+A4 z4n>!KEwOlI;M^zvc8Jyu?YDVC3qu?Jojum}i@v{Qn~Im!F?tU$+8>u!6ZYqVpc5Qg1h%ur^(X70%YtU933nP{dIS|Eiw`bL&gAf`2Wcu zTd3fb97uBd39tY?z4K{VHy2V398Sx@>uvV1 zb!le7iJUi~mrIxHaun00K)FzunyQ}Ld)tb}+YXt88frnx8QM50!<1o)9HD=Z!myNq zF}msp!i^)45!FMDtdxa`y8D?ngg_t=c9OqPryl|(NzCyK(xxDjCS(HO+HvjJ8f+(p zm7kbbruF9FU?-)c*vq)qkyj@(kpcBTecmjYok%&)lb$KqezDmVMgy~@iUQp4Y`6gH zq8#9Hb5e7&Soo~u&Y{JELVva^L)7!qd{^w3A*(bBttY#39=;7O)4C&E5i<=HR>7!E zrC5rcUsLdhlBu!d)ysw}{_OK*vY5RC+}Njg^fW*(hhBK%UHfW?!1SJv8a2v^sq{|Y zugN8O4cZWY@0)=za~*l1U-*-);7q~xnxuHkc5x=2J(qr}Fg*7*Z!;Sn#dg1b%+Ey- zAE`DMM_@&Abl|mi2M+{gZQAyXgVl{HC3#_B2*UhNbu5h{O_5g3EHxr@0>o~9VXGLJ z!yCtZx!kKp z=sCr+fl~!CSJBg_BX;Pk^q7kDdP3%me)sjoDL!QY1_eybWB#B$AvkE)xE;yDwqIVa z@%*iAiw*hZjVoc@hmOy4*XI12^?SMOXj-N$Q&t+Qa1>|rx}(e)F*k3_zZ2i+MAXwH z4jYIeim4m)PlErv{+VquKTc+zi#O$$tWUG}=wh1rmPS;xFcL}rRpnPI_CFGkzLG)l zeW$k^mogOMRcG>27JX5A{rjqwnDz5{`f}PPIxt~f-Y3wwKFTqH z;sxmJK>ax>5s znKh|C1yG0f+Ui6s9|*?1Fi9tp_!S9Ij=aZkTA3U2+nrqD2CTgPfV z(NdUZ=PeEjZ|O}i1y*G7MmHT+>UQcJzl%dcmwkn2HYx)t_9n$nebXc(= zxGHArjyL8;tFfeRrR_zqFtL zD11<~|I3>i&U~ir$ZbLE=<4z^LHhpzgEI^wb6RgbF_TfZHa5G*?Y;4nu`M**aV8rK z@)vVDMeWu{a}VlqTHMKCoK4W!E9*OWQ_EgPo{#s7i*wH?iBFdz2!~+gb}`F_{uIcN z4InT-2#1aP>x+{cjR%Z=g2fa)qeiJj8JWnUFDC+KojFIp2^7`DtQ_wJ^dfo@tCAB@ zo}dD{U{rHu4A~{TEPkd+Nz4ih#wvH%1;fRaBUa|9}I)ox-ycR!PEbv(xA{r)U#aL#ZJ2gUPwxRv|r3(9?1O2 z>COWJxuE_(jk3rgZEI3Q`Q~B4;HK%(IMd~MJOW)DZNp&-6FWHN7-zdKfrhWkI_kP< z;#JCihy^+e>NFp9!1eFuC1(`2mKV>iEO(SNO1jfZV$>u+M`9%Zu)zG*#N_q())@LeFqsz(71yG(KzxSy zF^2NuoUSTxc|yl`B^a@%mtn+D;QioSGOy?R--$0MC!bfA31f;arY?=>EvtvoUEcl zHS~FXi@bqXIjTv6Iqw#{!ZSZ18Y+P8(IF)Yii588kN!OFWEXy{MI##+1mRati!K)i zHM*eQ>KK~}ZD?BDv4DZ0{_gm)e}kBwAeKDkWIG;q{Cr0nA5T|C8cj&c7n>Ph{#yZp zAS>|HcGRjsHxAEnd z4>-$b&BSEUv*>Vy4m4S`!e!5IbXQu=to%W2Nx`S>YbU;czq$4yg6P=?6MoJCiBn z8&#ASrcqV8gA_$iqQuj|d&zB!()p&xHO16}<%F^0#b@gFO*|odF@-w&S8p3~i@4_4 zh4qJ&s$}q@D$0z?W$IPpxtsAp4yw%4Nqe;ErSHR1bL|rP37$5vI-=K5N_=d0{G(Ml z9#lbh zn{M>^Kex+*Z;qir_k{DWaJGmU|u(zapa@yIWgL2e_zwp&%M2gO+a|jp4+=lp~?wh zBX$X@Au~V{S*3JTM&I@g#Ahe43GBu!NHufm%0ZJ*sJVa_X7YDCt9PtaR1g5MI4A&z4Wc?ed*X)Y z!kTzoei6DbjZ&9RM3)W-vaHS^Z@3MgM?anpDtS0TT%ET8AILTj(_?(SymJI|^#H%< z-eLOP9|WX*{! z2ur0M%&*%1kE!CzkAwZoMsm3RHMGsCl+8>VRH=^|n0Nh^wOPLR5@s;LV!z82gin!Dg9TQd8|!L@i49=&e|} zwA$4vut;(jp_?j#zK+@x?xFu<=EBTpnY0uA%fR;zWT&ITK`JQV2Y#M<@oTJEsYx$3 zxFg@+XYBIJ0;J2e$If(|uCgqo_G3*#j$ilCB_^qY_gEW#`MMiEQkI2V2lmWv5F7wi z9&@l-Ec`BH_ClXUv_>y{2}xIhN*=-j?~h(p+~%t?8V#h8ETZ_3px5BzH>(mXPy%_& zJGX|2BAH#xF43#rB|Pkii4<@=vFvDcPddT68D*%HaMQb{gZEdIcWd%hT1)x@{25Al za$_NFHuDuZ2yjrL?>^9Y>ZFn#)|yWMzJZs;AzC~R0-kmhvA`pHy0$<10=3MWn z)tP-79XR>T2bx?JAF4^9mqrgMwM`ZG9(7%3pU0vPu8&U{efF2YNtFf27_Ebm63QyE8>!#af^R!#1tMLaZQXG1MXVDD@ zY+r;+MLa`=SjB84J{C4TePg$K97bpMOqW@RAHH1U+t(<13l`n}_w57J7yr-c;CaO1 zJo5ZWr~B>yzzIxDKB^dFj}CNMSvH!w?9`%)^HCtw1Rh3Gl82FWxG%4dzLwbC^9K5h z0fGs99I2}Vh9iG5Y4cl+5AkTNNF{{yQn-SSsh^8e{o#cF`mdB)9SDjZENe(!SemL)s`9#azUGHxEC*WVsYPc=@N|eHxxO$V`WS1Sckb)KiX%veEMO z{^U-wu#hnpUXN$uZ~bHAOYqSb0|v%GqkppT_bXU9V3W=rVPX*Ur;_+p6dig0el2Ac zxeONi;;o+qQ2&MITUQ4?bEk)u8V-Fgxf*9vpBmk{UFX-vOn8qxA~%(U$nnF ztpCTF&H6OaL`*vKjwu#6CY)m%1S42Yd)o=NndiEg|GaU>rVxrguw`U@go!%P-q+q- z{ZliS-fg3sUOr^zhmwuew^M25g&d&tjQt;*{pKk>y816+kN!#ntCgl2h0!6YiMK@c zdWth!Hf_OgU4Q^he6RW@gdGLrY>T@@u71#z}Ae6RagBu5Ggk}UZls?@fW ztg7HSDo6V4l#TdX-~=A;H+J4QGpt!}3SXSxGN`LM#$Th*2<$;&z25ZIa+M&pgi%si z1~&HTx51gZe?2-98To6Ye>U>VVP>Eg4GSHGmQ$6IQo&jmLMG{sD@i1I?Sd+eHgXe# z44Uaqq9F<~a@EDV;Sw!5seZ*-7K!foLX?x4xfW9*whNRP3G(h^C=q5)vXMmiqa8$o zQQjN{_}v%;!=MDhSC+ClEqsCGW-D?#p7k#xJ#`}va$K=g+P&1Kj!36FtXZv(=yVly zMwue2uz8^BO&x^!f&r`Hy)HJ3lVe;FDRxnrGG17p;x3F*$+zaJ5g7az>N~XO4+mn! zK)=CQC2dA9$v5DZg6lu;$GtgYd0c69f;B%RN|DQo$;YYHi0%p&&kYr6H;07lQ{n^D zC+Yf(sA!`iDkjYp2)w?Drp~h?BIt4|g-UDVnS5O$7tc&VF|tKA|B`@mzGo$wdf*wT z;3zk}^Wkh-E@E)d$gUfqpOx@5Aq_#5p$&X(b0`6mL>D>ZRwb;J7VJ&GXdIu1pnL#J zJ9tsV$9yAnjqx>=@;4RDLKBVIlh?1X@OtG(P8B&qtqK=j*ZAs#)LQxGwgoy7>>9B)NYf5v&;d(K2u-XlD}cayP_3&@d|PFQmsT3 zvV{04l(qWiSCtl}M%|>@h`+{6{97XQZLaGF$WHd99pVNY?=u4So`35YflVfNwL&;F ziuzeCVACZscLaVXx99@?#am=*HT1^@C{wf1=(E=WDSNayFIu+>$TaW%}4W zvC==?J1T(f^8EuguHY^tUeSG6u zL2yZQ9zD-kr?6}O#Q?WI7)z49bnE5x?H}OJu)p*V61?IPWK0xJq}4NDLp3ni6Zim) zLD42II07dRkwSDiZ!&!^fnrHW*{OfhloB2Blyni_mM(s}2T~Xq1XHabX|n>j$4^2i z99rN_>7=6kKM2cmUd|P5`*) zwLbB&paB%-3h;;h%KTBP&X0{ON}ds2R*;aWDvXQtSg*#I(t`M30;#ODpm1Tq^^hQN z-6Sx=H~$RqDGAlc_Azy$aQ|$z$|?(FI1hsuu#k-;GKVgL63ER6l2)CMu$K|Mv_Pg@ z9t7nhmcECLKk;Pd_hDaf|Gb|T*egi&cV*^-GrI*Od^=Y24MJ$ZU|NML_Ogi`vSi5ZwO!Rv28d$a13atnx zDl4zGaJ?Tt5cTN@zbjOm*y{$$D;Q9c&YyRlodaQ-3^+8Z5)1y~)(FyX#Zh6eN8Aus zx#{~m{L)7fe+)FZuOLgDCCU(IYx#aTtNy&srJUp88B-IZ62Gl>27*l(OsOE-?e!M{NRDQnYr) z_b+XJkhcEb(n(LCvsap*QIp<|L@D5#jq$zDEPcX_suaPaQ=StPM1=I$-}as+wI6{KZWuYe$gdEv=z;pi5QRYq`=9_AAxBG{4~>3eY5W`0M}|Nd>t#ai zw=`xKlboBATZHo#jxnr0kuY4(Zqh$PiBXUjj6%s--q)nL7H;)Dxg~tEC@zFdFND;b zI-+PV%N&w@mQKS6#L2cZaA-_0ihg40ASieaA^~G7KP;pOfzkJJ>jspuPb+k@dg6M zNe?r4kH?42@IcNl1L!1llr3!%RMwm$Ldall{EsIA=$e501IMv>^2*@ME!X?#^O-n^ zPqfb%d}qWYU|tnRnT-STzN16O&}TkCqmAtUGD87%q1+ep`${`NKQSk0Wg&U1927SD z;ZtgZ#LYzkAWAdD?V|?{hxsqW1Y#7{K!FgfZ`J>nv6bueTYx3aC4WkpD9njX+g?8{h zfCnEI-Hd-Rh2U2 z!@A3p=spJ}M)&b$MEhZ`j=Y#4q`^GRgUgz#utZTZyl^gEZex_(tgDX$Q*)I$R_L?daEk{*wo7_-;H_4g=xg1~UkZ|=K)X8`^87)_qHj1`7J8{^ecJxAN* zWAVeKOZ(yI0N>ksS1=uPG=8U5J5_W}&oSYjBId>EX|6W9q?eF4g0A!mwoz>>yxw#7 zP!&V}y;?QBI#mvL-}wa8+w}R@%yu9Ah7#fPD}?y4z^9i0{}0fHq$444&e6VIM41FZ z05h2_jE~pA`Fn+a(`wLvvXxKVRT~XZ17{^)65C@zmErB4jB)2}(;HZy?T<&%;~DVN zFG>dIcZPI0KC}le49(FvG3E$rf zQThn7Dl$BTpKlu&7(+*X#ukFWSS>^7d_o$`WL6VK*1?N$x|>uRKv+joFkmCq8V}(U z(qKN*gj^Kv{lRF2zHJcKM>>+5PzbW$t`#pppOBVv{3Qru*WeW#3KBD-@K%FlI->3y zA$X9C)d;~dk%lywXB~0!-GRO);---Q7c&It`(?FuR3>mpgE{sAIhb&kQI$kL zzy5YGv6&>Q9E7+rI7PC-mn)N<6xA9~qB`P|SO^}+YPrI?Ow1q+<}#-sOg)@T>twnQ zaR-bb|2|rpVco=U+TRZ(5Y#qiri3MAuc3FC#cpkweLSh!oXh_VgU9q`4J-6SeDH3X5dT1}aJLR!jXR>DYZtjj}%ncI_1lO0>3dZHd9KpX(0 zE0Qf~vb9^;rpm!p&7u-l<8rh2HznKs%R6q%-T}+41rvCVlAXC!JMsBRnfzTd-(6MX z=HZZ#vU`;5@l(^xnFM*e8vL{T?J@kiGb&)` zqHv#(1~ZxSr}hfQU5Yk^7H2$2v?Hr22Y{UU=Ea+KXAzJFbD438;t|mLw&6z|@*MK+ z?MI*O^O!v^c|q((Io zJ|PX}6VWjGHmzeKc>VoM=tkt}ILK=)RBpzo5nC?Qw{g-;=pyT2M=dF+P&@eOi{f^ilZoYn$cL^dKYAG@W}yMx1{ah-d`h6VhNNvl6bD(XZh* z0bq=sFaH~~uU9h297GUaR%dh9~yj0q1t z|5Y#=HV>u86ae#?G_<#HFzv_Py~**X#5bs#d>n+=eD)X-|+)K@k@TkadyB^^1-88P3BJtd1F8J zYzo5P4EfjT|7!@_nELRjdtZLy`)W0ruI&UqENY#)ihLS{PKl}Lw}n-fh_7fKyz68yPBd zRx*8Mvaw5dxMTG}Sb;flcSK3Y=o8jwX8u$R5rCV6{nf89Q)3z4!6pjc+oA197~~hE{C2mxmaks@(ZHvU zZ%IA+B%Pid^#1^@?ZZh3T;8s=A8VPIK^n|ta^NL^q3q8gYO}oGC$e?GKC>EsI4A$; zEb>dXIPc?ZAz0mVuc!DEDl;*ZQL2lUW`Y>TVgon^a1t3Yt}GjhEC9%uzRsx$DM1Z(^~e@`L`OUmr8o z<~L?fM4N95IM09q0P$7yxn0+#S6rl9(OVRP*;8r8jYqUYi6u1EiGLJoC8mSC5%1T| znyjmw=Q3jmtkP(g_b9?0L6VFjl}eo5O0z*-i|CjqD?6-rLT0n0Iz z+V%Ja$__dy8GPYb5Anku;! zpRXS!NJlC!eae+<$+_ImP2aceV4t^Ju58Qlobfre{V1VmL;(FKzE&dqBXuw{ zdfR+dM8$iLnYo4h@jmPx*U@yG-(}_DeWt|%SVuYMFNY`1CYD%#?@Y**4g;Vro}!dq zD*?SG(1ox9Dy7Bw=!reqV4Dp>;5}8qduYVWh|$M7m!^Qx4qz~OttHjM(TZb8mmXM$ z0sm`3GPTx*OBHE)+kXhM`F#{}&jv{>s&}Tywf3BB7`RkBC<9$@2_VL32YGC+{>u>n zwDF!qf^mSv>C~=YC(5v@fG-?t!1VKEW!Tk4__4duR^7N|@I*LWG+Shxbck4XvdG5+ zbpq@rvn-mqsPn}J3+W}8 z^3$p_uKioxdL^laD|1Vr1=UcIXH!Ts>jZH%pT$P&2ckW9t@(Q;$IQyYflYp>5#B$w z@gsmQ6zhRTM(=_?v56$Y$PuYrG2qcWi`2 z0IY*ifw+~xxE51x9YB?_!kACGwz)PTu2qAi|G`7H=-uldyuSumrQ;!kb1{N$+a3DToD1Zy z%|Ove8>YXsfiB{7mlZ2<0%2G&L;m{s#rVdbO37|sbHcq6u+0LM;hmnD7rj~@=%=yg z8CprJzhk>}8Bd-TLaEuG{0@aCi2L47B3#8k?X;z!E-JIL~h`iVi|x~Um?3H&ZR!%a=_x9OOwPz2F&KXkCggT+^+OCgijVP1b$Rc zAL`KO4-l1{;>OaL;~l1{GISa_5qqVJks;ODwx|V(n8v_beNo(s6JjBUg@FlQ(W8jNYyx zpJ4P1Uw|1=E8H(tg>3e#_4?|P&87}+yQA8m!B=s1SbkMyEz~?z7o1udu?ppB^T}Rg z=&4hw9A@k!p}YXw%r+0+={0)MkDovFtFin((5{}O zwaDyf9xZ2uND-H1n3yWAhuTeaQ&upa$iXkg11M;WT~q#GC+zCw9o;VLwE1Il2<*nm zNy6z!xwQC&2XID$KOCP2Id?vxol(|R&g-kq<>h;J>3a{FD}X^WBNszbQ|6X*|F%fQ z$WRf@fhU2PZp(~~=FI`)yKq_8wKKD;kB+C&bj=;!5BZX%>cJO^h3D<^c70)kl)dZ# zD=i1BgFqV;-~tN(fFD`gFR%!j&EGdTOgFTvNkK3&SDTfY+hv7iUOwSdwydHKW1*AO))Wi?@TR=4AnV^(`e`3dletU z^FI?{H<@1>JjlB1P5|Hw#X6JPQ=WQ>sLsXLF|9=*MauY@$F#tvXlUgapkJ&lnpbmw zRH>3NQ3h!r3)p6i2k;_~Ia_zH5QoR$<*1?WzI#V$?Y<)ZI|vAfStc3Y5ihd?=Z=_2 z>|$?0JB}_wm6FCpA97!ApxODv;XOEQ@6HwTN$x0O&abWKhv z)Dp9$Q!TscEsQ(kM!TTKNA1>^q+JsNwNaa#=e*D=3jEvmNJY!AVbYCi@5u%B;dono zm)f2FmBiw}br`DJ(E->u;E%u;ip_&`&i-gIKtr**J?gwbw$LF<8=%b{iFF*k1O-r= z%ffr%1J8*H;A1iMUR902GJU#lYdYVC`E+$g|7hr}F#NOJ{@$IbhQBW>SD(Kr?CSMi zyIQXMWxYk01@cuvgMMdJR*UWw*WfYvJ#oI~Hd$Uv4Q(oKbBMMEKX@ypQDd1Wj%8)r z`BW1exc+fRbn%Qzbga*xJ&Eee0QfDfS68@=Sh#KL$itMS$MS2 z>P7CCJuv1?Z0rP>>p&y%R#N76U2S~6k0&dIoY$omUGr2<3MG&FdNZGz*|8rTh^h=TdCDQJX!Yv$;v3eN;ykTXEcI{RGsyS0<37{n0A+$J=j5Sj=) z&VIGMQw3_NS(h)|sAamUXg^H(LR5R_D5>7;R0Z0xwP6w`tE6N4p0u9A6*I)>c%Ri( zRh{LU4pA3cl$>SVH{hKS@gzf0=3K6I{e@?!>bg?^_(HMHIJ}hcy~vAk)v$OH52wHM zg3zPjAOU2X#3SQz^sdDAlnd0)eXQ(`z?YE~N7e!sf^RlRLRCBSy_L>|D6jHtC}MCt z#y~Gwv-grpiIO&F!h)xYs2l77Wh>xQV~d0%Q&FvDw3RSg7^$r!c*)?jJCKeX#$lJ76=HutIM$wYiy)Y#!|6p~+LPC9&qc=5c%C;z zIgNXbjc{fH$}V_M%tAV+EXJg8)v~gByE`~gaJNHAAnm4SWQiZWXlaO~ncL$_V{%#d zZnlhc+q`kRB4xD><~vqWs*Dl6n{TuJWRz*a07QEzng)=Cr%0X!al6WPWYG4d_D zz+sbj*#$nIJ94{wZZ)_ziExLdpZb<>n;h&3fJ2K3U2)l>X3XprT`S_Q&*RWnc7_V;xmt(+P+x{!)&Cf1_^Xr}09e>X=F3>C zE$d+K{|*225C2r>1Rx<0ss1m`6XwsZ~GRA2go zQ}DEhr)eEoKVr7d>z$Ps-vIc^|59HGo_`ioTN1iqL3=#|aBeXx$1l&tC3}|rFPqkd z#ZOyKFL_$Iyz32r6+OM0YjR0*UW9ijfe@Khi+`~2XOwjky9B^&5jA8^>YvT zWi$+TM>Wr$a7H};A`_&DES>9CG|Q0<+inOi&IVq*-o+ z?r@ARY;1NJ!L?O|XxQD^wHRfXZy$BsLDMTFQ8Tz34P6sL3O< z*Xh&xiJnJewhim6&2$=ZQ9^xaF(P{iS|fkg7K|<;#7rnf@1QN)J=s=hFV1x)`732p zQtXxSb!D55VqjyO;WuJ~v_l<8pyaScz8-0OZ5k?j39nP74hW+W>9CO1EXFx(m^1u8 z%J_7427ypm6&yCcYoC%03KN@Hmkns-Rkj?gm6Ca~!(+~nv6v-J+}kyI3uUNB8r-wK zGsCBoy-km2vy2I#i!)mr+bqBsBBrm-&jn1YB@2pGq}}caR0`WI{bsb|&P?Z_lu@j9 zf3DSJ9iS{uq~d8TN?Ao=O>iYEgfmz#oWbg$nD9Vast7BH)DV>kjwo77Y&DU3A{B+d zf5Ud8-fI`~GhW){K?=u>upg$v(8Jo|EUYucM!+$xHECnaZKIUCW$SeX(W^pT^Ums! zrQE@7!jOhkr3+f3GoWVNh3|75I zI#Bm646NAt`>bA=rPGKipyRecb7ThlH3fLYf8VrgQw+M>me8{I@pG3At@*n=ae-hf zlT@k$z6GY5$P901nN{#XZW&9!nPs4}GaBt=9Qt9i5UP6_&3zog|6tRo>D1Lu;ZipoI%FfG1q%uOf>sP9%u^w67m#-& zXH4F3x_mO=tpxu+J)PwUAkB}4EwJSNc=ZBCEMl+_Sszg&(4?WF%N4T(^>|iz&JTw` z*oCyhm&UDlPcV}7Bgr~2T$BKCn^oEaNaef-NQi9@FuS@31kv0PaeQ<{8VOKj+PGD@ zvPF|&qt=?zKji#|KYjJWZ`KS02P^w;i$|woSlp}U#LHWwQkk4lOR9_ey(MPN*~rSH z#;jrBWar4lqNwQ3NpIOihL<>)-cWP1CT45U8qwEEADdt*ZjhR*hCbJpX0x#wH8|0J s-TE91Dm}00baEZDn*}Fa?YP2Otaw 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 z%0A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 On?SKWrM35U#Q*^968`l7 literal 0 HcmV?d00001 diff --git a/docs/assets/images/favicon.svg b/docs/assets/images/favicon.svg new file mode 100644 index 0000000..c038145 --- /dev/null +++ b/docs/assets/images/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/install-android-1-ar.png b/docs/assets/images/install-android-1-ar.png similarity index 100% rename from assets/images/install-android-1-ar.png rename to docs/assets/images/install-android-1-ar.png diff --git a/assets/images/install-android-1-en.png b/docs/assets/images/install-android-1-en.png similarity index 100% rename from assets/images/install-android-1-en.png rename to docs/assets/images/install-android-1-en.png diff --git a/assets/images/install-android-2-ar.png b/docs/assets/images/install-android-2-ar.png similarity index 100% rename from assets/images/install-android-2-ar.png rename to docs/assets/images/install-android-2-ar.png diff --git a/assets/images/install-android-2-en.png b/docs/assets/images/install-android-2-en.png similarity index 100% rename from assets/images/install-android-2-en.png rename to docs/assets/images/install-android-2-en.png diff --git a/assets/images/install-ios-1-ar.png b/docs/assets/images/install-ios-1-ar.png similarity index 100% rename from assets/images/install-ios-1-ar.png rename to docs/assets/images/install-ios-1-ar.png diff --git a/assets/images/install-ios-1-en.png b/docs/assets/images/install-ios-1-en.png similarity index 100% rename from assets/images/install-ios-1-en.png rename to docs/assets/images/install-ios-1-en.png diff --git a/assets/images/install-ios-2-ar.png b/docs/assets/images/install-ios-2-ar.png similarity index 100% rename from assets/images/install-ios-2-ar.png rename to docs/assets/images/install-ios-2-ar.png diff --git a/assets/images/install-ios-2-en.png b/docs/assets/images/install-ios-2-en.png similarity index 100% rename from assets/images/install-ios-2-en.png rename to docs/assets/images/install-ios-2-en.png diff --git a/assets/images/screenshot-clash.png b/docs/assets/images/screenshot-clash.png similarity index 100% rename from assets/images/screenshot-clash.png rename to docs/assets/images/screenshot-clash.png diff --git a/assets/images/screenshot-dotless.png b/docs/assets/images/screenshot-dotless.png similarity index 100% rename from assets/images/screenshot-dotless.png rename to docs/assets/images/screenshot-dotless.png diff --git a/assets/images/screenshot-rounded-dots.png b/docs/assets/images/screenshot-rounded-dots.png similarity index 100% rename from assets/images/screenshot-rounded-dots.png rename to docs/assets/images/screenshot-rounded-dots.png diff --git a/assets/images/screenshot-spacing.png b/docs/assets/images/screenshot-spacing.png similarity index 100% rename from assets/images/screenshot-spacing.png rename to docs/assets/images/screenshot-spacing.png diff --git a/assets/images/screenshot.png b/docs/assets/images/screenshot.png similarity index 100% rename from assets/images/screenshot.png rename to docs/assets/images/screenshot.png diff --git a/README.md b/docs/index.md similarity index 97% rename from README.md rename to docs/index.md index c5b2e6b..f05d7ea 100644 --- a/README.md +++ b/docs/index.md @@ -1,3 +1,10 @@ +--- +title: Qahiri +description: A manuscript Kufic typeface +layout: default +language: en-US +direction: ltr +--- _Qahiri_ is a [Kufic][1] typeface based on the modernized and regularized old manuscript Kufic calligraphy style of the late master of Arabic calligraphy [_Mohammad Abdul Qadir_][2]. diff --git a/requirements.in b/requirements.in index e340618..8110de4 100644 --- a/requirements.in +++ b/requirements.in @@ -1,3 +1,3 @@ -fonttools +fonttools[woff] glyphsLib skia-pathops diff --git a/requirements.txt b/requirements.txt index c7f1a3c..8e1d9ed 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,9 @@ appdirs==1.4.4 # via fs attrs==23.1.0 # via ufolib2 -fonttools[ufo,unicode]==4.40.0 +brotli==1.1.0 + # via fonttools +fonttools[ufo,unicode,woff]==4.40.0 # via # -r requirements.in # glyphslib @@ -27,6 +29,8 @@ ufolib2==0.14.0 # via glyphslib unicodedata2==15.0.0 # via fonttools +zopfli==0.2.2 + # via fonttools # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/scripts/buildwoff2.py b/scripts/buildwoff2.py new file mode 100644 index 0000000..6007ba0 --- /dev/null +++ b/scripts/buildwoff2.py @@ -0,0 +1,31 @@ +from fontTools.ttLib import TTFont +from fontTools.ttLib.woff2 import WOFF2FlavorData + + +def compress(args): + font = TTFont(args.input, recalcBBoxes=False, recalcTimestamp=False) + font.flavor = "woff2" + + if "SVG " in font: + del font["SVG "] + + font.flavorData = WOFF2FlavorData( + data=font.flavorData, transformedTables=["glyf", "loca"] + ) + + font.save(args.output, reorderTables=False) + + +def main(): + import argparse + from pathlib import Path + + parser = argparse.ArgumentParser(description="Build Raqq WOFF2 font.") + parser.add_argument("input", help="input TTF file", type=Path) + parser.add_argument("output", help="output WOFF2 file", type=Path) + args = parser.parse_args() + + compress(args) + + +main()