From 9d066eb52ac85fb55531fd381c62ffd2931fd674 Mon Sep 17 00:00:00 2001 From: Sargis Yonan Date: Mon, 22 Jul 2024 00:27:26 -0700 Subject: [PATCH] adding more samples --- Makefile | 6 ++++-- README.md | 8 ++++++-- .../NohadraSyriac-Amedia-nohadra-sample.png | Bin 0 -> 5376 bytes samples/NohadraSyriac-Amedia.png | Bin 15904 -> 14730 bytes .../NohadraSyriac-Sapna-nohadra-sample.png | Bin 0 -> 2773 bytes samples/NohadraSyriac-Sapna.png | Bin 9624 -> 8259 bytes scripts/render_text.py | 9 ++++++--- 7 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 samples/NohadraSyriac-Amedia-nohadra-sample.png create mode 100644 samples/NohadraSyriac-Sapna-nohadra-sample.png diff --git a/Makefile b/Makefile index d77a125..27f0f04 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,6 @@ FONTS_DIR := fonts GLYPH_FILES := $(foreach dir, $(OUTPUT_DIRS), $(shell find $(dir) -name '*.glyphs' | grep -v ' (Autosaved).glyphs')) SAMPLE_DIR := samples -SAMPLE_TEXT := "ܥܠ ܐܪܥܐ ܫܠܡܐ ܘܣܒܪܐ ܛܒܐ ܠܒܪܢܫ̈ܐ" all: build generate-png install test @@ -59,7 +58,10 @@ generate-png: venv . venv/bin/activate && \ for file in $(FONTS_DIR)/*.otf; do \ font=$$(basename "$$file" .otf); \ - python3 scripts/render_text.py "$$file" $(SAMPLE_TEXT) "$(SAMPLE_DIR)/$$font.png"; \ + python3 scripts/render_text.py "$$file" "ܥܠ ܐܪܥܐ ܫܠܡܐ ܘܣܒܪܐ ܛܒܐ ܠܒܪܢܫ̈ܐ" "$(SAMPLE_DIR)/$$font.png"; \ + python3 scripts/render_text.py "$$file" "ܢܘܗܕܪܐ" "$(SAMPLE_DIR)/$$font-nohadra-sample.png"; \ + python3 scripts/render_text.py "$$file" "ܣܦܢܐ" "$(SAMPLE_DIR)/$$font-nohadra-sapna-text.png"; \ + python3 scripts/render_text.py "$$file" "ܐܡܕܝܐ" "$(SAMPLE_DIR)/$$font-nohadra-amedia-text.png"; \ done .PHONY: clean test install build open venv all generate-svg generate-png diff --git a/README.md b/README.md index df41972..4fa9141 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ ![CI Status](https://github.com/SargisYonan/NohadraSyriacFonts/actions/workflows/fontbakery.yml/badge.svg) Nohadra fonts are a bold, geometric, and monospaced Syriac typeface. +![Nohadra - Sapna](samples/NohadraSyriac-Sapna-nohadra-sample.png) +![Nohadra - Amedia](samples/NohadraSyriac-Amedia-nohadra-sample.png) ## Introduction @@ -11,12 +13,14 @@ The Nohadra Syriac Font family includes Syriac typefaces with square, block-like ## Samples ### Nohadra - Sapna -![Nohadra - Sapna](samples/NohadraSyriac-Sapna.png) +![Nohadra - Amedia](samples//NohadraSyriac-Sapna-nohadra-sapna-text.png) Sapna is a monospaced and minimal block style Syriac typeface. +![Nohadra - Sapna](samples/NohadraSyriac-Sapna.png) ### Nohadra - Amedia -![Nohadra - Amedia](samples//NohadraSyriac-Amedia.png) +![Nohadra - Amedia](samples//NohadraSyriac-Amedia-nohadra-amedia-text.png) Amedia offers the same look and feel as Sapna, but with rounder edges. +![Nohadra - Amedia](samples//NohadraSyriac-Amedia.png) ### More to come diff --git a/samples/NohadraSyriac-Amedia-nohadra-sample.png b/samples/NohadraSyriac-Amedia-nohadra-sample.png new file mode 100644 index 0000000000000000000000000000000000000000..3a5a23a9d25630ac4053d9c879a29966b875f982 GIT binary patch literal 5376 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 literal 0 HcmV?d00001 diff --git a/samples/NohadraSyriac-Amedia.png b/samples/NohadraSyriac-Amedia.png index 7df0205de5c8d28bef7b03f673c0b70fa9788113..923522faa0c57256091a1bc611c23cf08d058b5e 100644 GIT binary patch literal 14730 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 M^yTxf&)vB9Uw4TEQUCw| diff --git a/samples/NohadraSyriac-Sapna-nohadra-sample.png b/samples/NohadraSyriac-Sapna-nohadra-sample.png new file mode 100644 index 0000000000000000000000000000000000000000..aa5f879bc6f4db0a24536aa15facb561fa626673 GIT binary patch literal 2773 zcmeAS@N?(olHy`uVBq!ia0y~yU~yt#V2tBn0*dhU=w<>b&H|6fVg@$Gry$IDI%Lfg z1_rKnPZ!6KiaBp@+h>VoOB{PRdBU-4_Kb?lgrvE3mrd1i)LFAdfJb8o^V=h)9$gwY zB6hJl>TKO$yfj0+fW6SK(!s)Y--|sv-^YY&KmJ`a)8NVU^i5{xKidPXv%Kcc52Olg zjMx|$IFyqa7#a*lnZqR<8vfV(`%{@aK|g+9&%ZAW4m^^~3=Az34H+05B!&_5ri3j+ zL03+G{`Oc~Ii!iPHl5`_Ksq1_p(m9!8ol&m4OJH2B<# z_xJbz|MRo>i%9yRR&Mca+qV5X_TT1}+C1y>cel1?pPpacb!JUgd3pJlyNjn-SOBvhT;enoZNuvW zm<3P|LQ?UR&ApgDkY3FG;KsJ?+vnTWT0MCot{?a3$H(NK#rb!4mA=2X_vv}r7au-+ zxU|%J@$!f(E8edY-c|qqpNTJ!7xHMX)C|M(^K5q)Jw5g5c^xn^-rnARdj9Tx`~H1; zdiv>kTPv%oPft#Mdd|dra)!<9*|YoQY^936+`D&gf_(hC`2BXTlsC@^ydSH+WitpE zS9Q6n-douyS^WLoU1{??9?PnbV?32HrzI?!_k^%HSn5w@1jQXj}xk8Z&LCJbO?GH`tR`1p8pbMw>l zdn-OZ0!GPnd-E#?a?k88e{Wa&Ys;;z7PV>FV(H|L*Uv`}?c(=u8VqN#+f^%=7QPdH-I& z{+)?$r@dQ`kwNl2`}%#Kwq7=wyRrvl=(~6CUTB`{%D=yF?VqcBwf|&fWO#nA6|V0G zWzFaLcteuPNgQ_`rdL{kv=ubcrHL+uB4bP0l+XkKCmK7S literal 0 HcmV?d00001 diff --git a/samples/NohadraSyriac-Sapna.png b/samples/NohadraSyriac-Sapna.png index 29561b49a826a8b534c7a096c92e5feecc4d3183..276fcf7cdb4172de27c549113fc6a53e905288ba 100644 GIT binary patch literal 8259 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 literal 9624 zcmeHM2~<LmaGEZyzy>I(qNCjr1fvS=PC5fRX7V6`~XJs=t|GI*o>88rC) z_!@5$UwHN}&~5+53}c|%u89xUZ36cC;aWWO&}oqX0KMAG zVWB@Vb6Duy5P*xqoMISOpJaMr?NtcT^lwNWhMj6=z-5XyQaQp8~tQ_3-^C__X(w zwVt?V(Rf$lF3iTv0}5htys4#_v16Mh^%QGL6zEjPDH_%(BLo2GykH-@E6lNQE)@_=zC@F&xOZ9)#M3cS})F zN~Sv>(? z#z`=<7W^Tx)&{vYQhW{D)qO{r$bsO*Z1{A^wpY?yDDw`BOp?c?YC30Oxb4#tcov6^ zmU$*+R5q~&*M_AZyt{@bv-tt3m=R}JAx6rg;}pcCbJ)jCLw%b#`3cqg@Bt*^sqvxK z*P9On1?3SXSo2akK`hUnR&Zg2g7axA)~d zoa`na>Cb;C6@aYQXf;tqGS0+})=TP^Qny8|wV3FxB~$8;NPEJ=!-Gps9+mdk+SuTx z-dwe-m>HGS;bmjo9OvIFvPz%+sreOlSCVMS?U@-d2UKpnlX02@dCDHrc9;-fMtbBP z%eB0amzUR5m&~Q7ZAe~3qt-Sz9XRO4o)Y(Qxm?N(4iyojkjn;=AC!VDEodG{#tL8F z2g^XRan{iRq|r346J>@wW+Q|^;pc9@^-60!>hedU=4H^vtyOO6v{+{ZLuwzHyKuwK zd?F&MyG9@YslGYapTcN^^JBB5DRro`sv_+HHHU#I8+%)4mFa|aut?u?ntJihgNek| zT`O1IYpYunz>1D7BY9C6Fo@yEOV)bza<>K?v=6(y#?jZufLZ&3nsaY4((B3@lW#MC z9jOaevMw%1zL3;Rx0W;;M#iGQ(QHNaX-WTcj50F?md4MubntaUf;x>;>CXE^li$&i zEz;PDxUQ2ox#3<=3iWYGbe|y8QZ)@K&1<>p0thL-uJND}|$Of~|1)Qazn=Sz4Lagy}Bjf3!T0G0p1&@{OvjnE16yfxoBK4x?2XoK0H* zh&*i^P_qmRxtryd+_DdRuQ)?`nX(+@9F7_0mk&PR06G8-=st5tGT}%a1TSyQ(i{5~KtC;OQ40c2p!@`bAE4XZu4u!XgHX#d7?6tE#G| zM=FSs(XAx6WXttERq_DV79#5HCUjI(A;vftxfy-p1iPCZ=KS=!qnM8!X{G~{Va_rM z#clo!ysKMq!4%08H*l^y()+mb(FQwknS`0~wus}$kJmp-wsQ7nmY*KnKe{d=BEpBb zH^dJmIoDQ&q?NGy4H=PUIA_Al+d69>+K})*eX<=L8rmfpXslnb|AY*bTXFLbb%+}# z#DN3>*R(e=qH4_@Q|B2GX;ttKVUJ8Qo-auKj1>mYf`?+AD$7do)8o8{=(0Yamg#>M z7N+33jVu1)TgaR2h!5^LE$(G!z$04dA;_SIxDr~`cle1{F=L;kg%0yg8pp@S2_UH_ z76kH_b$&M_-ZTVa=~P_8iet0csi~}6rJs4-YCUQjh1641OY=& zk(n7u?B3qqY>%sdzadM%g)-@gzvctA|AA5&2Ap5J{_v*u$=NR#=hRUKe7fH4=D zg2BjsAGJ}2q|{QWRE)|1?8x=FY8zBRz)O3)p%g^SuqUydL?SWxm_g8?XtatsaY6`s z_cVDi0I-t4vlos=H_>@i(B~map1Y0NsB|^td#%X^B1KoODvLVS1b{6)?qCR|Q{oEs zAAe@y&}Z>yp?K$H5a{nK2g3}Dii*P9i&IQweVIgPk2X0`xmBH*h%ME!zxGiuhW>k{ z77MV}C*fwn_|+Km9luitwzsz4?wg%nc>z17n?3;rdNV(V&j*z|e9vb7Lr%Nup_@Gu hA62^j|7+jJ?HJ`POxE*LMCESm{?gm^?#__&KLP*2ZbSe8 diff --git a/scripts/render_text.py b/scripts/render_text.py index d042876..6b2195e 100644 --- a/scripts/render_text.py +++ b/scripts/render_text.py @@ -9,7 +9,11 @@ def clean_text(text): return ''.join(c for c in text if unicodedata.category(c).startswith('L') or c.isspace()) def render_text_to_image(font_path, text, output_path): - width, height = 4600, 500 + + font_size = 400 + + width = int((len(text)*font_size) / 2.2) + height = 350 # Create a new image with a white background image = Image.new('RGB', (width, height), color='white') @@ -18,7 +22,6 @@ def render_text_to_image(font_path, text, output_path): reshaped_text = arabic_reshaper.reshape(clean_text(text)) # Load the font - font_size = 400 font = ImageFont.truetype(font_path, font_size) # Calculate text width and height for centering @@ -26,7 +29,7 @@ def render_text_to_image(font_path, text, output_path): bbox = draw.textbbox((0, 0), reshaped_text, font=font) text_width, text_height = bbox[2] - bbox[0], bbox[3] - bbox[1] text_x = (width - text_width) // 2 - text_y = ((height - text_height) // 2) - text_height/2 + text_y = ((text_height) // 2) - text_height # Draw the text on the image text_color = (0, 0, 0) # Black color