From 2227f2916b62488ff6a302dcb70848bbc719d60f Mon Sep 17 00:00:00 2001 From: Kazuki Suzuki Przyborowski Date: Fri, 22 Nov 2024 18:10:32 -0600 Subject: [PATCH] Small update --- upcean/encode/binary.py | 2 ++ upcean/encode/codabar.py | 2 +- upcean/encode/code11.py | 2 +- upcean/encode/code128.py | 2 +- upcean/encode/code32.py | 2 +- upcean/encode/code39.py | 4 ++-- upcean/encode/code93.py | 4 ++-- upcean/encode/ean13.py | 2 +- upcean/encode/ean2.py | 2 +- upcean/encode/ean5.py | 2 +- upcean/encode/ean8.py | 2 +- upcean/encode/itf.py | 2 +- upcean/encode/itf14.py | 2 +- upcean/encode/msi.py | 2 +- upcean/encode/plessey.py | 2 +- upcean/encode/stf.py | 2 +- upcean/encode/upca.py | 4 ++-- upcean/encode/upcavar.py | 4 ++-- upcean/encode/upce.py | 2 +- upcean/fonts/OCRA.otf | Bin 14356 -> 14744 bytes upcean/fonts/OCRA.ttf | Bin 15215 -> 15896 bytes upcean/fonts/OCRB.otf | Bin 18064 -> 18324 bytes upcean/fonts/OCRB.ttf | Bin 18761 -> 19444 bytes upcean/predraw/precairo.py | 4 ++-- upcean/predraw/preqahirah.py | 4 ++-- upcean/support.py | 2 +- 26 files changed, 29 insertions(+), 27 deletions(-) diff --git a/upcean/encode/binary.py b/upcean/encode/binary.py index 8c30f944..4c4d82dc 100644 --- a/upcean/encode/binary.py +++ b/upcean/encode/binary.py @@ -138,6 +138,8 @@ def encode_binary_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, LineFixTxtStart = 0 if(tkintersupport and imageoutlib == "tkinter"): LineFixTxtStart = 4 + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): + LineTxtStart = 1 while(txtbari < txtbarmax): texthidden = False if hidetext or (upc['text']['type'][txtbari] == "sn" and (hidesn is None or hidesn)) or (upc['text']['type'][txtbari] == "cd" and (hidecd is None or hidecd)): diff --git a/upcean/encode/codabar.py b/upcean/encode/codabar.py index abcc2b6c..423f39b0 100644 --- a/upcean/encode/codabar.py +++ b/upcean/encode/codabar.py @@ -267,7 +267,7 @@ def encode_codabar_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48 LineTxtStartNorm = 20 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): texthidden = False diff --git a/upcean/encode/code11.py b/upcean/encode/code11.py index 5b8de0e1..20f290a0 100644 --- a/upcean/encode/code11.py +++ b/upcean/encode/code11.py @@ -226,7 +226,7 @@ def encode_code11_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, LineTxtStartNorm = 10 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_print)): texthidden = False diff --git a/upcean/encode/code128.py b/upcean/encode/code128.py index e6f5fe93..85d86032 100644 --- a/upcean/encode/code128.py +++ b/upcean/encode/code128.py @@ -555,7 +555,7 @@ def encode_code128_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48 LineTxtStartNorm = 16 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) if(barcode_is_rev): upc_print.reverse() diff --git a/upcean/encode/code32.py b/upcean/encode/code32.py index 175eede3..b766496e 100644 --- a/upcean/encode/code32.py +++ b/upcean/encode/code32.py @@ -267,7 +267,7 @@ def encode_code32_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, LineTxtStartNorm = 30 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): texthidden = False diff --git a/upcean/encode/code39.py b/upcean/encode/code39.py index e348e82b..c6453321 100644 --- a/upcean/encode/code39.py +++ b/upcean/encode/code39.py @@ -289,7 +289,7 @@ def encode_code39_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, LineTxtStartNorm = 15 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) drawColorText(upc_img, 10 * int(resize * barwidth[1]), LineTxtStart * barwidth[0], vertical_text_fix + ( barheight[0] * int(resize)), "*", barcolor[1], "ocrb", imageoutlib) @@ -613,7 +613,7 @@ def encode_code39extended_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barhei LineTxtStartNorm = 15 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) drawColorText(upc_img, 10 * int(resize * barwidth[1]), LineTxtStart * barwidth[0], vertical_text_fix + ( barheight[0] * int(resize)), "*", barcolor[1], "ocrb", imageoutlib) diff --git a/upcean/encode/code93.py b/upcean/encode/code93.py index a9300f30..b565447e 100644 --- a/upcean/encode/code93.py +++ b/upcean/encode/code93.py @@ -297,7 +297,7 @@ def encode_code93_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, LineTxtStartNorm = 18 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): texthidden = False @@ -624,7 +624,7 @@ def encode_code93extended_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barhei LineTxtStartNorm = 18 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): texthidden = False diff --git a/upcean/encode/ean13.py b/upcean/encode/ean13.py index e2010695..831e9fb9 100644 --- a/upcean/encode/ean13.py +++ b/upcean/encode/ean13.py @@ -397,7 +397,7 @@ def encode_ean13_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, LineTxtStartNorm = 2 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = list(re.findall("(\\d{13})", upc)[0])+[">"] while (NumTxtZero < len(upc_print)): diff --git a/upcean/encode/ean2.py b/upcean/encode/ean2.py index a0b123fa..375aeb60 100644 --- a/upcean/encode/ean2.py +++ b/upcean/encode/ean2.py @@ -250,7 +250,7 @@ def encode_ean2_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 5 LineTxtStartNorm = 6 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = LeftDigit while (NumTxtZero < len(upc_print)): diff --git a/upcean/encode/ean5.py b/upcean/encode/ean5.py index c4f4f7f0..9f13aaa6 100644 --- a/upcean/encode/ean5.py +++ b/upcean/encode/ean5.py @@ -337,7 +337,7 @@ def encode_ean5_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 5 LineTxtStartNorm = 7 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = LeftDigit while (NumTxtZero < len(upc_print)): diff --git a/upcean/encode/ean8.py b/upcean/encode/ean8.py index 0b7538b2..22370f40 100644 --- a/upcean/encode/ean8.py +++ b/upcean/encode/ean8.py @@ -404,7 +404,7 @@ def encode_ean8_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 5 LineTxtStartNorm = 0 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = ["<"]+list(re.findall("(\\d{8})", upc)[0])+[">"] while (NumTxtZero < len(upc_print)): diff --git a/upcean/encode/itf.py b/upcean/encode/itf.py index 6a903dee..61d4a660 100644 --- a/upcean/encode/itf.py +++ b/upcean/encode/itf.py @@ -292,7 +292,7 @@ def encode_itf_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 54 LineTxtStartNorm = 20 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): ArrayDigit = list(upc_matches[NumTxtZero]) diff --git a/upcean/encode/itf14.py b/upcean/encode/itf14.py index 2ba5bdf2..0c416347 100644 --- a/upcean/encode/itf14.py +++ b/upcean/encode/itf14.py @@ -300,7 +300,7 @@ def encode_itf14_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, LineTxtStartNorm = 23 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): ArrayDigit = list(upc_matches[NumTxtZero]) diff --git a/upcean/encode/msi.py b/upcean/encode/msi.py index 3a5c9c3a..c278a10d 100644 --- a/upcean/encode/msi.py +++ b/upcean/encode/msi.py @@ -207,7 +207,7 @@ def encode_msi_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 54 LineTxtStartNorm = 16 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_print)): texthidden = False diff --git a/upcean/encode/plessey.py b/upcean/encode/plessey.py index e0bab39a..4470951f 100644 --- a/upcean/encode/plessey.py +++ b/upcean/encode/plessey.py @@ -235,7 +235,7 @@ def encode_plessey_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48 LineTxtStartNorm = 30 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): texthidden = False diff --git a/upcean/encode/stf.py b/upcean/encode/stf.py index 014a9bfc..0da07553 100644 --- a/upcean/encode/stf.py +++ b/upcean/encode/stf.py @@ -244,7 +244,7 @@ def encode_stf_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 54 LineTxtStartNorm = 24 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) while (NumTxtZero < len(upc_matches)): texthidden = False diff --git a/upcean/encode/upca.py b/upcean/encode/upca.py index 835628bb..e6d06cec 100644 --- a/upcean/encode/upca.py +++ b/upcean/encode/upca.py @@ -331,7 +331,7 @@ def encode_upca_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 5 LineTxtStartNorm = 1 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = list(re.findall("(\\d{12})", upc)[0]) while (NumTxtZero < len(upc_print)): @@ -726,7 +726,7 @@ def encode_upcaean_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48 LineTxtStartNorm = 2 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = [0]+list(re.findall("(\\d{12})", upc)[0])+[">"] while (NumTxtZero < len(upc_print)): diff --git a/upcean/encode/upcavar.py b/upcean/encode/upcavar.py index 5890234e..6cd75069 100644 --- a/upcean/encode/upcavar.py +++ b/upcean/encode/upcavar.py @@ -338,7 +338,7 @@ def encode_upcavar_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48 LineTxtStartNorm = 1 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = list(re.findall("(\\d+)", upc)[0]) while (NumTxtZero < len(upc_print)): @@ -739,7 +739,7 @@ def encode_upcaeanvar_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight= LineTxtStartNorm = 2 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = [0]+list(re.findall("(\\d+)", upc)[0])+[">"] while (NumTxtZero < len(upc_print)): diff --git a/upcean/encode/upce.py b/upcean/encode/upce.py index 7129208c..2e7520fc 100644 --- a/upcean/encode/upce.py +++ b/upcean/encode/upce.py @@ -419,7 +419,7 @@ def encode_upce_barcode(inimage, upc, resize=1, shiftxy=(0, 0), barheight=(48, 5 LineTxtStartNorm = 1 if(tkintersupport and imageoutlib == "tkinter"): LineTxtStart += (4 * int(resize)) - elif(cairosupport and (imageoutlib == "cairo" or imageoutlib == "cairosvg")): + elif(svgwritesupport and not cairosvgsupport and imageoutlib == "svgwrite"): LineTxtStart += (1 * int(resize)) upc_print = list(re.findall("(\\d{8})", upc)[0]) while (NumTxtZero < len(upc_print)): diff --git a/upcean/fonts/OCRA.otf b/upcean/fonts/OCRA.otf index 86f56dcdc5cb1ccf7d94b79fea46d7a461ff6683..9cc8b41bd2cacfc8352bd11844f59484f0adc0fe 100644 GIT binary patch delta 2411 zcmZ`*4^&gv8UOCfOY)LH5=a6l0UjifL?IxeQr9Y=h1LE+MXR+`rGf?}B$9yO)RgL~ z^-)ExR@BZ?QK^d7l2+Zs9p^T8dgxhkYdzYrsXOx=-I*?@XY0U1h=(^o0dr@Sm-Bx*Tk<>rR|4SfEH7X1Vpm7zT!7*&0AQ_{ z{cJfL1r}iHFw%U*+{&tR(R1ISd;!u06;%t%{yJyhe3VB3$m^9=`GuQ*qNzlT_F(x6 zZ;gLPddo!sRRi({Jasjp+Egh07=Ic!RC>>s-7=G8s+Se-xmmCA_NoQQO-*U&{|IFt*OflPyZ8iiaW@Gk+(MW z#dc;>Ul)0Xw9y$Pm%KsOkm8V)ygYVJQmBTX$(VqW*ksIrnmi?A1!R&R%a}!-u#AC1nhCs4nf-GRb%-oi-0u0Ov8M9zy)=SB< z8VvLt&KM@>I9bLF=!r|l3MeC`GGwP_M$j_lF^nPd ziZU4!a5MjsF#}HKyo?o?r66M#cxExZ%;f2EfrmmUz&VM2!*r{1`ND$2NpvY!k^oQ% zvtT|dlp>rppQqOpHccrsLJQPG17+FF!eYpS$v9;b0Oh{MU}2y>Yk;m7f5_OfgyyC)hQ)08xR^*=R zUWg7x4@P%KJEJ?J9pCnTyW?in&3PmFfAD|(`!Szrgx0IZ(N|SH@q2zr@@_SS=2l zu#Rjc+sNBwI}u0+d57#EJ4q+BNp2V{+!E}@C}}1lbC|iH$WiQK9c&|ej2&kGtV~lb zQXW%^s#?`)b&|SKeTkdMZRXBs5;e;-0nH`tv)VuECg?&t;@G%1<1WR07axlMOrM}% zq(7^_VJI+ojYi`u#s>+nCJZO0BrZ=pWpbGgo4zq;o9oR-&G*d@EXkHC%k`v9NqJ8QWV$kG=FhVn zStVHmwmjSWGweotcXn#_{had-mt&G+j$?&mgQLUop5u4U1n0}nI%m-NzRTeHp)2GP z^m;+GjV7#16bHnKj}jxMn{=x-(_|Vx{MaOHQ?Bi8IeMhG=fia5pVRUTuMInNw+Xvv zPuD(bjIUK?YE2ijwBdd6Hip>37Yt_<#72XrFI9G}=wa>jC373w-o9lc9WwWE@4dVG zKzCpNvG97!=Y;KA-_;tPliZ|;p^M{I>RN>j1od<)ikMqV=G)Y6)GliWxNX2*J}AN>K=ZQ6Z>s2FXu@Y?Uu zbTEHVFAiZcLphd+l|7rIqQ~=A#G0Mpo=wa0+YEL*waP451mWT5Jz^EzS>#I5N;hpD zUeOlV1t;JxDIjH}o1CQAw3RtJsrc!=!odT(KH%<)x0Sk%&W=u@lRFwbBE5KeoGH?)f>)W~Xr=3?TnVj4gg-Ue7=;1Tk*USz>mj=o+kgF8*wjaz(|$d9El9&Vw#Kj@))FOA;?IXK R#wF8W5!^$r0=`5J{2SWid4>Q0 delta 2049 zcmY+F3s6+o8G!$DAA9ez>|GwatirPFlZOE$iwkIK1VWd|Op~=dszxm#uw^p>yMaZa zN>?#$BbS#PQ3=s(5XJg#x2e`_QZvzHtW07W>zI~|W;Dh))zW6_!id?Pebl!1&N=7% z|NlJx|G)Q~v$uVh+iS0>v4b480u3vlvDtJxZdBa|;9dpDyKb}9Jm=_9&jA$21AwNo z;`=u60Rv!dB(kn@rM>!0=*)KjMbktssI0Cnzl-;LLF{BaT5YdhY}x+C4m;seVt=ur zrQSV!`}6<+dxq$aI34xg#)sTdDKUm8C~^`Fw}_&MQAuQzv&GY?pHCkn4rCMgZcBZq z8`@VAL?xt>wAQyc_BNl*C$bNKQM+C39uf#50Yn@O6Oh^FYmT+lDZckFkkNOD2Bvxo ztD`MdSUrrEqjvl>%0+-Tpc3x_lo=Tp?(icx5n}`lQpA`74w+(1gC4nK%m9n_$C!mU zbT-BkGWL@w6NeJ08!<+prVhoJ0wq-+W-keb1_hNBGcb^V9)yEp!f852N|X`sh>bA? z0!dg@PeVD%jWI)<7>+RuN;DB;2^o7K%49_y^EKmSXk{WETR*%iq z*5uGx@(Xm!bYz&WjI@^Gyrp@Tf+sEb4WupRp?#sz(B9C< zqpnBWr?da+{>!;&-pLG+2j_8#Sj{=e&(Y0gkWa9o8KBkm3f6O)q=x_W0%&oExsj;T zaRDbpN&?4IE9!6x?_3m@sDUM#+)xq-6j^|WBoas-6hSFe!t+oI>qtO;I0FHEo?n3v z^BQEqr|1-t-;3yH_?C2q*Nc9MUPC+JC1^ywNJM?89}S>EI1VSF7tX@F&<`J=A!rXT zK#?3(!zr`^y+bXh?$QQYq#rPS%xA2?TG>jrhYd&s$vVkJPQ`8JKI60aA^wguO}a^X zUV1GqEAEJ_TsA2CHvZ-KujN_t2Kg<)n=fn>0t$_yLNTKFQ$k0=dx>ik&m~!tx|1#> zCnpamrOH*xUggIsnW|c~TXkCXZAzC~s~%MUV?oD)OAB`_{5rKN_4Bl+)4I~W)2!Cq zN*_(1*RIt5E#tY2qdHF4ujln!^cM|B&9r%$*=F8iFu#)t znQfUjvo>Vi&wf8=AZLD&Oc2DNaV~Ka3jQYe1dZ!t`hto1WVYYs>zEYzg9m(vGbUz} z#R2wUyU(qCLE`dw+!?~$Q!^-7e4h@|bFC_DvfBM`%f3R)?p-@y$NS}tX4iPfr1pTg ze{APl{QclpZ1TCjp}rw;h(F{RcWJYuv-o+zNFkj+H{o|Q(&3xQS0wtlpp((#ca>et z)}Ehl!OK*W{J!0IZ1m94BmQqxQ;5NvcW(0kUfo7VX>nQti$At5$7MP@)3ayGFy5sL zaAV_d{`O?xI9{c{_QZPInwMJJJPvU+FNia<)J)Jxf@Nodff+i;2A@@ltKV|`s_jJc z@h1F&p%fYLm|-FRSQRkb^===&_|BYeac? z;(%Wa@IfmlPFJ0*^E;0^PU6qAUj6U9j_gw25GVLH&Nj{9ZK)~vgY2@Ue-EDcCvobI zO58l$y=U7o*V}C$iG1*flI!B-Px`L&{hT;e_x?H`|L{mKp4~e5ixF{zA02spAATyQ zMD}LSu1>L&cmLG=vVUuil);XoT70UoA(~3{k_z0HcMq>!(uMT+wk3eO^4BMu;(}%K zy{fCh+N%$1*+0)(RVM#8`7Ron@ES{c>Lrq+OPQ(}4RbnEBFr@@MU^PdPKiM$zPTia zXA#mAbq`M9QL7cl7p+x#CMUteY(&YIT;W%$J*$z zkHCX37puGuvghRR6H*K0?4v*d^`zF3?TUaU8(vQI3L+zrKozMGk-}Ua;i!Ing!zbm zO@!tD!vbM|ILL*3pek%Xr~#q5-qQ*T!Z$K@muQqzEx)b}A4BAR3ty6vdk*_bF34BG UJ$NPjlB?wkesO6EgNgzE4dDwi3;+NC diff --git a/upcean/fonts/OCRA.ttf b/upcean/fonts/OCRA.ttf index ed702ff1d0697c2f9b5102bfaf7cb494b20bdcbd..6a64901c92dccd9b600f2aa2f06f88d8b37b5f05 100644 GIT binary patch delta 2350 zcmZ`*du&tJ8UN0GIJU2!*Y>>$v9E6&$4O1%BzEGw6OxnwWnD_3z*^ej!~`eAi6IU% zNlNHznmW`0XF}b?DyFI`+NO!&E@N!%T2y6KY3VbJcF}~^PGYOJPTf{@jK=$H-!k#X ze00wFeb4iK-#Paje{%4t`2`>VV1*;VLTX@O+ubLQR@?*7brZSn4R@{|fHR;2=-i03 zy5XL|t><&+S5f{t(hVE7-rM(=;qOhLJOMz42e;OTk4))4L!3eR_K{>PwG=;V0ASui z-nqT8=~OO0 zBAL!qKcp-ojSgXTVrnGz>WyU#hItJpAA zI1JCgv#rgST^2%*0rK;P%uBejxF!!6>i@DRe zlerVQK^LK`_B9cPD0FMWgc8e$ON1F$zSj(oQ`j3H>h z(Xl)jLAHmRN+l-|sLZ|zx`lPoId0d&JNg@jZH6ZduNwYlEH!o-=Z%ZTKM0Hv622m2 zgj2$zaK)sUGN!X;n>k@VWwBZMEQc*GSw6M8t-Gx!tk-Q{wf)q#Vh`Hm_LKIDA}6+s zDe-CXs`$Ah>_|AyI6iWQoDl zkEL9xzqFI?;%mdcKo=p3;%ao=8l2uTrN$cxx;!3N5ZTPHor>GRu0HJY-~`zV{27Lk z?Af^f5k1cIx^0vT305ULWS=9XnqC(D^dDl6uEBT74UlbdY-dRgeNw8V=cG-@T^7Y< z%E?Q_oPAC9^Neh#e|ImI2XL>T#oiPROCA#KAYp}<5jibP3BBlv>db!Yn(B5+lm@;$ zc!yb{ZHhv7Dovar>g}M%lyZJ!P#;-C&niAP2%-tP%2=*wJ6=PSI~ zQxz7rtP;A4?nu$y|I&ZO-}q(vtN!}_qJv^kYd4rAlY=!C;<|h*KFlgti&@zg$GS?gqN6iaoyK5S1?LsYj8>jrsEV5XD!WD~6U!C*4>tzs&8o_LZ39%6h>w!^c6q9I*M)J!LTrJu~ngVopb?F{S<`se)s#{BZ)q(wPml!ZGPVSORb(mH^ z_64f~%~v)z7!{XT=eQz>tc6H{=KFhI*wpQK0M8;z3|=Q^Ez@PJ{nZhFpvP=?DQj(l zi_h3Mhq#`vHQVq5%>J%=fuqK{&$37B_v7}v@1h^C9j8y|yXjGVJAIMApT5BFqR)q} z(wh-C-B$Y}y=4C+5d6@j(AB!d1-xR&_QF+@|D1Qh1q~D6Nu`DvC?RbcW}$*Su3-*! zvKr>WNZ!=24mk3Wh6PZVY7N_fXNHOx?=~A72ZHP4WlKQDBaA%63^`be*aIn;Sh!#p_2FEy-#9eVPCMhMVJ{;Xje z7@2`0#;8=bPs0R4%nc1QP{aI6!z^a`Z4GmvGCOHkbDdC&cX1dRus71N=BISEYPccX zNJ(^~L4{s`!TuqY4n`{ty)X#}VGJhdT(lzGif1^2T{8t3n3_!YP97YaP{W}HwO!5I z_2L|Et&7wZTwadeIgx-gwiHZ5JJe%KBbtGI*bkuVB*c(T;1e_hAsnY6j*Et194+br z66thmy1l+WJw3B;=D=7oHl3K72~ADMCqv^Yln+8b3}HH2)LCmwFClYuOY5WfPAs?f zL}KtboP=Q*!RKle_QG*o>ngkti|`A09)3<3!V(UjK^-X}dSW0(BG4mkD(z@nPfxe0 zWR||%_V&VfVY3OwMDk|=i&C8DaSj0wHjwa1^g#_i%tpxIXoW*K+F%w(JL)qi{RV2| zc|@5Fc|PRnHD3hjB9+%6w`7?DWmGibp#o{usM!LA9~-UgXm!57;Lpc&+uwly0OcbH3YKpYP5e*vI*NU&dg^228L;KsYfWf}{uWMyiAp}&GzqjyDT>ry6`}M)N(87XmI8vfZfaGu`J+`z6I8XdO(55| zcN^fJc2_g=`@J{s&Ad0GH!mFd%^aG)`9XsLP(T|p3nYruD8Sy~Ur#(FZTKg+xWAwTmY(Sv`C?=S*~mQt z53nzh0Rrqe`E+qN{0(N!pKx%whN}JaZA|i}y%}q@g{pZ5IDyQ}cnElS8b=+xC=qeX zUxVZD12_j4VHs9nm7b%kv4J>^zls^dP~f4e{*0+l-kNY%Z9?Tk{NJs-Q~6Ql`<0g~ zFIA4+Jbd%1)wbWyeef<2R^-C$FgJ#q|05T{>VEZAbv2L(JTGX1wo`kM9kI1HG({85MAy|$^;V}u z*64~FqU;@;%7;||b|t;9+%0UQbd6Yk(*C#|M`oAD`3|=jDbLA=329*;`(h-^eEvRL zy&gIrD)07>a-@~L8E8WB#lSWPir@G7@D?*eJ6Ha*7PHZy$UNbGJzU*(nQt%7!DE6cubvLA1$q z?N)cd?dRO?Ay55+>K$@>f}A&C9xBC)3G@IhKnD8R$w&)&x)kZU)04+&_uuw(ekho8 z>qOMpuraR>z#fb%1d(pT*YQ&fU7W9yQ~sv|~Kmp&f<*H0ua@?dBN} zP3PHke1jvLZ&*W9?y!@U<2iS|s?k;{k&I@%VwJ6Ns`S}tEKES7 zKeR9fg%*L}`dEiKkZ7}|;K56-n?;g0Ujg&ksbKkti1CV1Tq+n8!_g+rlz^PiY`mwh`FDg8j_~jle23VGK#&NxG z!6b39fA?%*D?J9=xWORv?7v^hBWr@4gfLP<;9) zvG>B4v6s<5MeV~l8xIt9UX(?V39t)$g3QDNRa}$rt72zWzQ0)kBmV_(Qm5|# diff --git a/upcean/fonts/OCRB.otf b/upcean/fonts/OCRB.otf index 3dab41e086c97cd33b8ff2e7ef043a077b3187b5..c764b0f4e085551e2eafcd6d1c32e5220a9e550e 100644 GIT binary patch delta 6145 zcmaJl2|!cFwsRAbTmnWR1dt^OJ1UzjN>vu2LanxdVqIDlDyXapkg!9L9fo~Cq$-fG zD!3vRUtO^7b$_q@uC=z-_ibHbpZ+)aFKzw=^IqS7|NWPnnS0KhJ2Pj_oO9;PX{x7M z8!1&(Y-|*m21)=MM2AO2NN=c;yZ|sZ0$}0wh=|w^TIw8D01y!k0I-XEcS!^|2?*`o zuL&-VjE-74rW^Z>(4_?TiCnoVEGKGnGNHc)fbxi1>FvAjq|s9XhZ1_+rnGqZmtGIY z0N~02U}bJij8`St{5iCd5bu*RZ!2lxj#EoX2MdBbZ%tF=dVb@+j7*S9+FaA(bLF5} z&kGeuDsFmwTHFgr z?M7f4)n|Y?fKOdAz+7NNJutu~K+JM5z%u}cwcG%k0Uqm9J**;&0l<SR-S?M#~f{dYA&H;DMo?1q9%g0cL|0l!*a00yb2Q0p|Chf^+Kg-S7 z14w}{@BzN)kE|Syht$`{7j+uX6#)3ag|Co?Nl`W1(ReXP2iYJAq@oe_ zT$@1P3H(Tz8UxHFS|LkUEKbi(N=3i1t&Iac{XEH#a{)TdwnYn!LRDLVf;@7N1r`8r z@+b(T1SzCsl0nlzJi)gD8Nt0sodpuebY38t^za5?t3n~qTHx)i$Wo>#Gn3Ndv$o2V zUb3u&bgyJNq5sbFTaE!)K_b{f21_LaXA+c~xJ8*7pNST8EK!5eud|6j^a?{P$*_m1 zdJ#?GMwDKwqd_R(fEl0|9p!|YOJ_>$9b6rn9grherz2!3;&MYbNUf!Izc=f?*PYUx z(0!pB)g999*A41=bv?RP9nv-F8g#X~8eP6FPnWF=(>eYY^6Q~r)xUO4{xtb`^3mk? zlMg2!Ony6g|6$t0lGXyH_O$mMe=E>TF*DsiG%Y$FbrM;r4^ zOs5H^&oDC=T8J#ItY_NT+S!XGQU^yTq~X|Uf$|*?5%LkhQ$VJ6;T*M|bJK$v(m~2kW zfymOBXuJ^21h&8)ID%QggY2X~SP0%Fro4u1OB&GuB^U$ez@-G4A~i89D>*VgEe$ys z&$oCtF;x+tp_C~Svy#%cq$YaBrz()lSivRZvH%;+;^$ByNX-vXZ3J;-qc?*xPy&iT z1tcJV%2EGDK;4VPmA!r5-pp~iu#h@B&1EoMkRZ}%oEd{AMs-9|~8mT6* z7|=u)bEsyjg+f#-)kbZn+Nm9&S-%`IEs%f@C?0i=Rmcuthp~6Ce>PGj8Vwsg=U8xp zIXRrCTyO4Po(r#rHlow$FOAn3U*l8!mHaOL_a>eugQl6L=ch$Z8xsfwYXv)|2TiY- zerbmLjLI2D%&g3|n)R5o%twT?gvW$0EtXm|h^$4;q9>MqmMNC~mOohjY$ddcwz_Ej zzV(Hf%V&OJV`Fp1R%#oivK_Otvx~R8Yd_mQ-2Sw9iMT`JF4-wLDCJ6vrPv|S;jrUE z#|@58oMqsJ?C)egwJ{EVdXK;o>c_@0Gv1|1$q- z|8xG|3j|@<)f^wiuFQ0;a2y|1h@^aBw+5dVIq*@7gpmjMlN#Z3!7Z{ z=#KSo#^wD5-D%rPwr@iZXBN>M?FDTPDJaoqUd+U|MxkR755>Y?@4yq+>u=HbKDrVd z8oNA5tgRAhTGSd%i$a-OmZ=n%atj(OHEmViWqA-|0CFe?bI8i(%04ssrojRUgMiK~GxvL~98z4E7BS z)7Xni=42J7mu-O@I=ErOLA29$F3XjVCT!=?e|+@htBw}5dt{znD8+4RZKW|9DYP%4 z=(fhzrlUh++mVqZhK|nrFs`_~EC;QZ*a?M?n(-WZClBHo{5$q9{1 za*e7gYRl0gX}rMQ?OJ zyoOkgi%f3*aP}!Z`t{*k z8CwZtxG;kQqpPDouF8cK-L*Y5uHyA6dgS7Kn7^&GFuP;xj&w*@aT#6)!)9m+Vw}~+ zCl2*rfR}17%F&>Um(z7weK76qo#!uRrs3-%`~jZE6Hfd9Z&r3-de?Nkk9m#;n!>3+4QU(&|QzqMrC7cvo*YnX5(bA3z~`~}Bqaq(Z! zCvLWa>+)~l9=Nw@sP#bWjV@H-Hh2Cd_+a6IW{#3fHq`iFS-;}n! zYI|Ah=CP0V#Gs;vqPij&4nIuVH1ganm|_=Il#Y1KqA7QGzP3!Xod@r9-yJzg*K>FE z?Cm)K=~qV?Z^p=JJu~0cWdol7N`f}bUg|jnhvA@VxImKxH_#Qlss&*=VUQLKX(w{E z6z0Cdy+5-tcVfB-hHVc;S7y6M4PX51HoOC|?Z?>8>qK_@=Jr$~PFM~(ZdH-*riNvI zvTX?rr(dZ> zbYhNG$jga-GOMQ+XKUHm4SR~(XFXo>8t#BQ>N@IQe|GOS#1zE7jPoIf@y*={-S8|t zdA|2l13e4}D!THK(8Je4m9EUo%1bUyg&)DSedS-$m73g|gMP1y~(Fb1wuZc3qXDQ`fbCf-9K7i%XwMR*2J{rUdGV_jXXolUzTaZn5EgWZnQNsQ@_O*eaQ?osVfYB%KGS)NZs+wYHF9w#%+D>)sgPyn z%PUmXs@iSP2j)G8Kf$XVmyfA;wP>0&kRF0VrLBr4WoLd5v9E4oU+uiYi?N56wG`AB z63t*{!(|KyGIMA_;Zw}Kz{NQf=4kN|B3TYr6W6G6KJSR9rFT|!)$E4n;mNKed+X#H zWgpRBP4|H0P5AFCV@i3O2Uhh(!918#lUu=X(%$ocj6F@f-_>0w#|C?M^`ahl4W5tb zTSYS#yn=O`5;x>#m*!OE!2lTlGkik0c!52%7?AxHP6V>C5F7UsChX5R|8)ym?>lo^ zMRujCrUaHi54hnHD)ZeeY2!jQ+}pUL{pg9^<9e<%{d!N$xW603%#v(Fv|q? zNp*Rx8SS-)67&kCgfduOSKd&uH~j0omk^8L<9iSbX_W4_fE&n5`6%H7wBOH#`#Epm z)S>g}j^8@L9KP_O2VZyti}6O0CtB?95p+WRdFK&$93G>EFTMD}AD>RLxiAH8+Lm2W zl%1XjX$U{5fv^A;!2(m4O0G<)lu3k7@PapgAS3Ma&!?MLAJ}*_`f4fi4zM>a;~35u zv?{=X+i+O(@NfX#TuFRkW6wKB#QUX~=;q;JWOD z6#921V}?Z7nAdyi__^y%O|Y@95x#)?1K?~pFJ)O+ZgF)n5n?cmyCFYK3z+%YIOsW^ zAVUB9*0&L?;yyTlx_0c`uI@s_!GASzh11wl zPfj$b7c(q|g%#UMX=W}n$^_$4PHAg#bMfDFqqM%Xshq~K%tMC7Y~)mxm)DlT3cboe z8g(wnrMrW!CXUJOLnK}}+g-i)Si>1eAK(rUpRONV!q70Zd|hPn#)_3N7N)|@1v$#h z4Jd1&l3jTw89iONc;U;!m#Q3dEPR3cUkKL_eg8@1%NLIM@r7&r`2u_jyZmDug?|wR z=mV+AOZq@+DD;@M7-p4c73Ee|7AebMPLZN46Vl68pSp}LhRpI(eON;azYc>ReU?35 zwmYvQo9MezL8^+n%KC}}zW3s=8N~bsOr0dL3vv#f&93S!LNTEM&g$;Y9iyt_l_x3> zSD&wd8= zSo8R3*iwlO23t$!@r75=WFS#Q)5BgjVuv$EmFJ1A{bBc^J=f13{t^9Wu(vc17NUa2 z_lIS7i1QF?@EF#K=J5r^+KIhHn`te&Y9%rK4zH=lA@E-Qw@FtKV`aB|D6VTY+yvL< zr)4gBe;s22nVEDM4+ifJ-1i>6n3=|@DyuGqr8E{z@c-`_IRyI(yR&F!Go$5{96{@? zosegUBWu|;6cdtXUarM;n8rz3b8M%@E!to$vbB(|+pxBh&d62DCHXwP-isSaoWl{m zz5(~fG`t5_xJE2jXk@Ix=S==y=D8WNMvyLJM~qf+A>KoEUF}SQ^VU=rCvGmXA zR|}~?e?pd&l&Of@BfbJP`dFbbkstLAN)NJep7LJ&4*Xm+pN~UgL>U@Ie}9jwt=FUZPIZ_Xrm#scy&iPhh(U}6yw?NU7KroUb+ok$nS$q-^;H*wG7 z9(*LWnrXs>JYv>hKk)^49EDpgR>^4L{>0I>ebJCv02eSZkO`u-rJ{Boyxn>4$Z<`7 zpZXAd1xe@w8KWAfIA*>Jbb%!Nfv@P_CFZYX`{SJ=#`i}O?*)h-!|R7fFZORbnEpln zzZOwRVP0h}kq_T+Ug-sNRuoJm;cPyK@qZ1lp_JWC_f9ouexoLQCu@n2nJoqL-5J_IZ?;%K5qGC4U(46-Y)8K>wp_BrbQ&}jkfehU*y^w7b|f7Y4px)g zQ4Z(@r@>Romx`g{s0?z)S5v2`n=D(_0#+KUfVG`9#2ROP!+ON}6;a`m)q2k@p0MQ^ zPGFhXB%>#*Puvf?x*OE=AkN{K!1}s6SWj!R)N*k;S0BttOs15t5ANFCq^3=JaXxJ1 z^k#NviWP)T&UzDc#nuDahKpzaO($^xH25PN>5ros|9^HwCaBpv0tJRk(aA8W*Oapu z)Dmwn3_TH`4+Ldm#+Aes3b~#Wlo9T02IJuRw#43mt1Dku-GrxmM$z4% zK077b?{P>fd5CTQa#8`rG-8bw8BacKdh6)Ju%Eq^3y@hedKS4WwRA z@;DUvhD}-*6HHH~2t_~YVguGVg|Q7-{S-zUFnw=|^dmDPk0t)nJ1S>A6aSEXE*@n4 zi6p2=p&Wr4jW1bGWg>CJx&(q|fIRSsWQ^XSJi%U&p}Ry{R+CZT#JRjXh1+1B>8)@tkbxx}tR`=?*t1nKh5`ObO&bN(~GS?}DLJNMqX&GlSE zEvJcGxiS)sLPbc3mW4$`*k>BI_aKDZ5tpLl?Vxb*%}+8+5FqHgO6C_7wn(5mDPwZaEsUg8&;mYHBp`IS?&_T2&h@zgv6Na z6a>py6E~eD;-r|wSpTiBxUh0NLc;G-lGD|U5sooX#MMhYLZ z8g#unV8zQ^5U`?&o5KN_%Xx8##BmZc&BK^uIC2;ZkeguC z=;4A8d2!dsF9KKME>sht)Yl53NVX%(Q78jp%R|Xyq2q`Ml#J3)9Ev4!3%?0L$Q#XI zzd!Otek?^1$w}&nD7-u}LR{)jkOOeA|PLi%GwV>nOY5Q9v>hWFxy zc?GP_j_unWmM=viNW|D(hYCoGIApYgi$kLWaTJ?OtkE7tljq`)jsK^TGbNdrh?=&V zHke{eQKk!~)uvw4LQ{`vmZ{YgXsR(en=1Z&AEDnrXH%fxI|h>m;|I45#tm*6+&s8x zaO0PczRdeF_kRZ2I+mJyug1DDa&1u=<TT)y?tWQjWdULWmAvQgIJGnhV z9l=#_m0T59%>h@#)pB(lQ$JiI*TfO78Ers$sFB;j?L-Ca!WFY^)S@!912v##L{K%V zL*{EG;C7KE(k!l!T$ToFG;Ak6MEB5rbOfD6m(Ugz$L(f<17;QkC>-UWyWC7JfjcRf zA?Oya5?;4ZTig)^idKs z+3vM{I(GWl+_6{2MU1x|zh(T>37aOIo@g;KY~o`(Upuwk?MZ%Z zi}uUytLz^*xH|MXdN>w4UU#x^3U86P3Y$D*5)p7 zU*LY;!^*>Ls)xbT!?W0Hw3o)~YwsZMULQ9f;&XpW!jyX7@xBedH~gagTKpCMtpRoc zr>E`DZGW#IzGrn zSxu89i#(KEgbqCXJc-J4se6GtGqG3KVVK0XZ35W(VB{%7f_qq)TZzW zaS2{x`4}#Tf-huLq?fAuHNhN5j)yo+qUWizH9bLHcq^m)0t4SG9HsJh{oqxFlaws= z54B#AxKg^ymdYdcvG3+aggJ)=v0_Y2pw z;&&z88M@@;40Vc9R%)a*6w_^tlAVz@8RtHe4^X?Kie!C;!JyY0lmpWxRNC|}YI*zO zws0jx#r)SBm1$L3nUIEaBq=&|m$DY>pcX{(pFW1eQ8f#3g#=b)E?HikR;^Y;Dx`L% zcL5zycj;%K2<~YTKacFk@`1N{yD!2uTqmib)?T0Twt)G?8~AbjB9$!v8TB?&WaQ$E z!Z_-q0M~C{{i>`H8mk-N8k{p6@5Ne)d4bAKXm6|UXf0?j)|Ygayjk80__O=^8wRyL zSyc!H<;7ZDB`Ge*EYGdfRB5VcDGU)fI%BTD zRZ4CK9V9CQ)Q*8h8gHaajI)f^GmZ3Zquel){-UVigCFp#X#iY-v*g?9^A@FG`J0>H zTGO=*_}MU zk)zUQWa(6u)qT3Uh6ZCc`d-ex?bk@oRJ(}78`@UECRme`m_B1sG;afJ=V$Mmbz~u) z$6JXiN-DLW#Z)mMHD8l^x-a|Bx9Sge9)&~DmEWF@`7Qi&QBgnnda9G1ER?$ZU9{B- zH?w5ZD`v^InKzf*v;2KTNms5exmmMYOYV;;V0Kh0-9iIq)TTsv@25&qWv2TJ+x z_mAJceLLpPw4msaP}Q?Kg}zCr*Egv%vP;r3lv;6KL%9xGu$-rkgOx*L?jOIy2Hc*e z93DZQ$~-li7xITxL}L`dPxxj!9aoJT#h2mC-u}+rxjVDE!2o(aOS-c67418EsqGGY zfeq@8l$3OJvJ#?8Hx_Keyc1n3l7ITqdCFa9LW`dUyz9wJXGZW?33Cp=*1HD3wsu1# zcw_l}qb*$S?m2i6(P0@Xnuh=J@Sj(AH#hI= zw;Ub9iR*Xlz_h7<`IsUO@2n$@CworrBKNGLf}*mPY}Ax!vmqaw&+(>_8>le~spys> zlup*ZucSUet-ooao_MbW=$ODydC>t(1IR|XzhL8JvQwUIQCV75MyzdOEI!n{8B4Nk zyu#~w=jR^O6)<)E;W>4peqJy5DXI*}s>-T3f9Hdb-oH+o8+O5NU{@vu%vVNRJZIYM zz@;uYc5(bnaK}as`OYR%^1vqygX;L;O(;!fXP_?dXw zDsd&#n0YG}7n0?+GdOorV;jZNFKyi{c9FV0L^}4WswPdBVF28%({-zuwrLQ-<#*f9 zH{v>RGc;E=6XRG$sLFE4TMt9C&UqKT0Y8iMkJ-WMV1HHjTt7|+VAF7yqyYoF{FxMS!LwfN?a|@ zfihjS9@7d*7n2%gF60(#^E39w?MeV%Qk}{RfXA48GEQgtPG9#G_<$`2K1e3T<9(cO zCD+Ww)e_$+Ia8HPr`%M~C3KWTKJWlOE^3<1v{^(%?n3hM_%Oc~cDA^kj;De~W^r1f zrF?HucV_9TcK{o7dV^|*B=_#Zcc%g_7xNJntNCyeGT{-<|DLWi(!%eF_r!^^8>x5U zARMYc)ZDw{RvUSJqF>Ml@MYTB8Ih6KE$XjkdJKkme?ik&6RTTZ=x zAgZ~bwxFgELLqYd#{P2?=W@crvf_S|9p?VDo_|vd|Jiy@Q7&@6e?22eRVt~N8JZOe zSa!%bkj*rc4BoWu)t#3F$0qU|LY#%GHA}V zz135bs?X?R!mMZ0{Tligzr0ow+x=QsB;-JLWp+6)N?7O({3OiO?2Xp5Cl7YEbTxIr zO}MDj(W}Ntc{{+1gohq`cRG zc?VzVZ?G*kdk30wt+uc*uO#zthMSCc*`jI|gN|LF-MdblZM|S#sor4Lj=cN)IlPBT zOWIt5U6UXNGIpfys_xs&q)(jz$xvETT33d9!tUg}0IGyXp97T>iR(;pkR;*tO-soF zS7-4liQ)XQ%OuTpjf^>Q_noEkTU1G-6`tgtt5?W7x>K!3Yfi#(47)}07cNry!zY76 zF~q~B;>@yw%;cPE46wQipa9tZTRNAElQS}sRr1Gl=C5zFNy6N6eaPw~>rX~qFaG|o zm8()A77A)#X)d||A7lBgrU9*}n{mWEK=Q=RL3FI^{z)aVc2APDNxH6`zx_3-a1RxE zNsYGN|h2H)GSyIYce;-F6_(7d-W7dG5VxqxMSP$r%IjQ+~R^iL_-!K6fW&4rFgZ7(-V3G;;7j~&8%u-Uil zHY>g{X4^4j`@3=VT{6bgR``^fh=*sI)!HRlk+2;S8Z&pK?JDUbhdhHv zB|%zN0^lm~LO6Yc@SbzVmn&d%&F1E99f3EZey+mx;+t@xs?O3s7@3i%vK|7@?7 z+#8VAlC3LmuG&%E3}@kFPwP=kZw}lM)i>2LEA@wk%{M!xydQsppF>ZGw9N$#g?~tp zwpQCvis?%JD<1J{L}eN+yO%gmOrCmYW8K{An@^>DQB4wjJUsP>PS?H%_=vch*#xt2 zs(1_`C2JPON0+XEmAF^}N!1DYIhkqe$T^=3VcDg4GHuGd0As-mO_nv4Kc|N0^408? z{PX3Tq66An>vfHtdz$w_2OP+0EjXOkn|{0k%TJNf;S*dkaw;;)Qwz1ZfYTwdEoaa6 z&Mh4q>#=-wIaJh?!$OE$Td3TxpDKCAfz??js2^Lu5sbIl&!&*m|9m>+RM>QD zb~N(GM*1V0m3f9k)IRi|$oZ0Q{o|FsQnQ;C{=CXOqsTbLNPCUGM)^@H`qf9_OTG@U z#b;WM_T0ME_lTGRrr0vatU0gl)x*j6;5#hW(^J%>@Rbr_pp)R0o5U?Jhm`rc1{5x> zWh3s75A1GQM6u1irSiOpt3C9kBX_>`BY-UThK z4LU4u=%l$&FX~KdPgAN{H>Of#zsA{sLcGsXYLptgTX(iJHty6LEiH{BS&7u|JJNW7 z3U64B0!tZ-qsY-10oukPAG8o{VnK*Xv!eOXBLe7BK0wJ{CAo=dvtC)t3_L#pj~sgK4vZ3;O@;Zvsu~={^c~}YEDLug{Jc@b zHO!uD3{%MVT|IvKAMgOWH|<@3N0LwGsYqeyc!I-JfLj`nauZU(DQMH>TPpeZoC}(3)4F)zy{h=tR#V8A83= zfG_P@zi#l!{F5v2{9)j0y9PJ5El=#a9-bdT2v@BetO<|2L7o8mAUq$Qm>HXweZG`O z&^bb6VfWbLd_FHSy+hET*gbtHx9cxc_e~%qyAPq1Z)$QZ>-bg6NqBe#&iW~6kUfjn zK!;J_eN!__2WuZL7x|aq3{B5XjCDnapGHW!1bq3-*ui=9Gc*kJCV0Pec5G(y)j2!# z*ZwR*k{`{_EiS!OUdkcVeJ8y09Ks%WjUcouf9|nSeezF8&AbaO==EdQiy9X0v=pZp ziU#RU+=h?Rhj3CVes_-g$acIyZzNlC!0tnb(Ay}78*w$dfcE8Igq9IFkE2}vb+~t; z9Qu0xYxzge8Q|a#zR986(Gr|Tfd2xz53cuN7PIIa{4GE)7tjglk3m02a#5Iq6-7(B z3Qj|K8d^m68C^(%*8{O0wIC@npzEoJX)%@BOL@27eacNeGB7*XgDx;FJ4$V(u1}it zZ|9%Oe>?w7{+s!W`N#4X@?Xk-F@JadbNSQxJM$;nrbEdHc#+SKhqx#+A!&&b>MF#^mMyy8O4x#}TH_Nd@|nRR8h0ULvQzlK8xg zL@JXjlq$7GtJ52dCNs-ftTwyD>EeZwQn$zJE2COzV$&Gf3!+xlLh4@G}xtTmlE|GT`!uXiI%pJ_j5{qQ5oN0pB%-%=S=yHpRV{-(}3)V=C?_2cT_ zXe^o*O;&TW=1ZDOns>D_ZJ+jp_IaI5m)6bezN7n4@7GW3&+5NtkQl;-A;VpUmyE=? z&3K>jCF6>z$uw^|Z+gjWG6&7m<}aCl!d9^lurIK0vMXE_cQg00#bnuOdBSqV+HL)+ z&0`z4U9hd#9roD<`_uM!9XdzUvCVPN@wnp^r^~tCdEEK9^LH-4YsvML>s8l>e30M4 zpXXoVuLy!rFANEXh12u}b}N0fbr+rCo|o36R@6xwEG2Z4B`zuFga&$-rJhu(=p{>8 z7tBQn{}0F{BZa);LS-n7(g?+)aaTR2vZWnPcp7>gEI9R?=OS|j25SkzArCy&rQQ*59lAT$V8WWk$kgU|J$Uo`?R;#(X-7b(FlElDJDzR}W z8IU@S)mPv8nAf=oG>ATDJ{GSUHK7cB*y_zO0hu?1L5y%bpp%(dYkj;v>i2r~jdjdy z>6gcJ9 zuh=q}$?Ld_yyHQvs71&eji)hv-Wd#q#xr9%r@Pf#R_?8{5L_+xyz&4ms7#~X;|^z6 zY-f`}%L?RdiQ4U=E|-V4x;FYB*fJ|Qzsx7PsyjGd;_B&A_H+s5>gNPj{N8KQKWsg) z*+8FmZ6;a;wenj?)iPb=_j#_Xb$XYMop}AW@qtYHU|(zZV&zd7|9fJ`y<6=!l^=M96?pE|6Tw^UepV>D;17ieaX@@P zYKQ3X7hTWFxmS!5dPZ>epPs*YXz-S%*s1*^3W-8ul+N5fG2F_<`tCa8H3dps zu9ARh&A^%$j!d-A_Kl6NNe#Luj;y~O^5X+ zRxnI-Iz98ZWjAyzbE<(%^9Uh(&zxN9TFl%vqveAJu-I+8o7Z;uJr}1-G?;LDdbsrK z+8{&?`Y2Fo%5B45I^wRev(mjh$GWJ%hFGC+AqwU2#I}v}oZCta9rP(T&nHlysBHp= ztz!7|*b+%IDH07amDoc+aM$D{RTX*{n9pXkC>g1-q_JGn&?_S@GskOkJC%to4PGth zt!Ro1!B)koEKzbsnM2TMsvH&HdE03h*bk~P7w|Y83pJUwb?)*?qn+pEYd4YdwuwEh z3qxByet$sv1Dnfd!n`AA_0Af>BLpqyKO{TJcj;NrSdK$H@`IelXuT+@fMM2JtgKuH zLi*#8a4du?aV!!}VUgI!b6;7ERY#INq`&31udqV)&_z7hcK6-Kr9*v(B4iWC^NwxN z!C2GSWFpLW&DKYF~X9=6O{AppFd5DxggG9C*ONDdJG z1$&A4B1Fzv!rNQg#? zBcL!SJ~Wl5du!cxtI;N~%Eq3=o&yNc_q|u8?~@^NiT=UY(9x5%nzuA*1lD2*cBF%8 zmv3JvvQG@=hge}xxN@npss@j3{)ehH5>1!Z%nGL3%JiwRwUef=Lh2OQeAuDuxj0wW zj)|VT_=LY1=M2cZ8ZvQkI#^RjK)E<8fJ$i+i-tfah<9!&lMHwCEkUAOx@Re#2H$<; zIfySAIBgU7Pv-HPBjI=~8t_-*+j;KMxz94b^yd!4oXs9SC2ina50{e(R@j?WXF`L2 z26ge=q%7mq6oO-+(D^0kT8w=$7sbWEpx-MGPE}$ZmM@ezc6Z7pHNp1Y+E#T5YggAd zG`B4|N~Rb!7jWtgZhlNHuy)Nlwzr*WY?I<^4|b%67@P0n-rVLPoskvvos}c${*zV7 zu27j=!d+Kr+m-B`IE8n%f)uo`B32Ucp5eLkk z!cFW9{cc5lP6t{G*eXcHY*I)jkguE)X}U7%^FZO#_4`wT?b=~k{~iy}rWJ@Yn6_3{oGt->py2DU9Z~3nH-XwHtFG$GbTfwQs-rP z-BeqoZV{Uf-pNQCsx=&MF_vohYoC><%L4+dXxQnuSRGGg zv1#!PIl0IRT^oqPpyRnvrPg_h=4%JMs<&ZWp+p-~!F^>(8~~pHU6%4~WG!)`O4LM` z>O3TY>F4WeOl(58&8lkMG`T;UY~pME76bihT~Hn9$1!n);}PK%Ga>q~dU`~i=@APbL0 ztuKjaDly!;0gJlwj7p}HG>WjOpqq<}ZDdNn^&(PS}A}%uZG>xr+I62>>P|eLTtz*Rw(-IxGMoj zIN;9-X11iFU7B3S!q@QMG1i|ot1x~?41sqx50JqmW(pzDEb634G5u}+i}r>-yuG9l zgAhNFa5H8^U>CMJKSBRuGKTn&Xc?V!_F1`5uD@`<5puO`n20;y#t0 zMWLLEZLBpM2`8LevyW(F;Wfae-0Up(gvC-mk>L}%xg zMM-J(2xnQ#;ax$&&SrK;Yh0jCk$F(UE%YM77Kl_X%TBFm#8C=DcYUr ziHB2_yil>V4=&D8~m-4NB8D zTH?}p7-}Z9wARSWN+c=`=4e-IrPZR=W8Pnz5dqjC077C$Ye56_gXW+b@^%3dLoCo> zOCW5ECf=XhlWy`{xd zF*HJMRw_85G$ZLX*>y@nu!PS>UVa~(m|qI<*(wWS}VS4~H>l8;wrYUH5bPYVjL0W8V{Lf=b! zRjJdd>FjnXYfw;Ub7}7JEw#17-?+a9%OyuQjofepW*bE*8zBf_jW?2iid@gA0CO`RyajYI&0E$7GD8K_)^_d~Fh(JtCej+dnjL3VVA}H%=YBE5*katG_ zoAvcJMvaaPE8JlCiKkk`W*Kjlh|~KN#}44-e>JP<3H-7epnO5Qknl$7{+(i5)l;-QN2l2m1+-s(w5gDcxat0D<(W{C*q zl89hX3iW=3Vm2fj)Sp5z^zLN9@IMg?{ZWz+Gx^u^?=uF-buDNOf}O@dG%bk~fdW+R zXu&nG{099*4B@s=qtPw`rI68I);Aj8;b@tW%`NlX%5(Z-7EM5D2nwT_M48vg@GvX8 zH|gjRqr0-)oGACNVNNb`{5?deC9p*h3TiX}H+W8&{un;(h{qE2H_2mk&UA;FDQGtW z+Ib*o5+CJ5Sl&I53XzU6`s0*2`hO%q{3K*}fo&2iS(6x!B1K=;HfjlM{(V6HNPY}u zK0%L}YeaM^CWTe_FXJ{um)31e(-+NxwE+HicJLUme|0d4$CaDU&SkjMtS!9M1c<+` z`xxwFqOE+IqOH0rI&Rv3OSb=XfB$LRi;1Qo z4cSY6?b-3sqQwBX6bxohW$%CSY&Ls#*ECp43|NhB3%yjmmcFS=5tE*l=(o}f`UX0Z zXlnR>rb|Q>@}4pVP|yct9LyswmTE-fuTIuaFPG?3a)0yRt&DtJWlcHHEr_OGVE^|u z66e0LS13%Vi(bX=u}7jaGkU1e31xN6~GKrGea3g(O?X~jJw&9UhnKSzH*Az0bE1T}S z&&Lt{t@?4gL7t)aYijAFE=k>7A3fY!n}f|As!N>#a}GaQl!E!7HJvm2461HY9tVMkv1SH=_}GkBq!qtw*TRP-Ym@6>H~~{ z{%C)hAeOvVY-f;#+#~KcOO)`*X*gGDj5O$SktRroJ}A-*8o=rzEkO=^Ymt^B7GEsV zGBl#VFBcg#O5(SRv;nC|OOZAr9T`}qLC`8DQlv4eBJUMxg38I)iZlc5dud5~Kv{)K zp-R=FFl}#NmR6O9Ys2)P+ZzESx4{#%u6>}it(5+?-J@(pv*-ZYgQlr3Q|D-ay@&{$ zg>NCxq0YJ4rPkR4d#34J#-?bfj#NWeb@XIrTW$)rqnBWxdJz`JHSo6t)P8ggoD0z3 z3>pJ|3bv~ELq?ecItwF(V268N4DqR@rTN9Cnwq7>{nzYY*fTS>I5oFFG`Evcx3Viwv^iA{x`a1do)?h7q7*=$8Y`{iEc5Z2Ua&d95v}l>RH&yLaVt~5Q_)r?Qmf9v{}+@?ZIVYH)o&%)gg^6C%^>$y^pUJ8;C zq(Ud*+76NuGzu|?MV+9v9XNs%z~2cc27Z-0Rp6vW?qq>e6*=*14BuhMVYnyCzLxU= J`S-u{{5OaX!bJc8 delta 6367 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 diff --git a/upcean/predraw/precairo.py b/upcean/predraw/precairo.py index c85fa882..364ff3fa 100644 --- a/upcean/predraw/precairo.py +++ b/upcean/predraw/precairo.py @@ -238,7 +238,7 @@ def drawColorRectangleAlt(ctx, x1, y1, x2, y2, color, line_width=1): return True # Define valid PyCairo output formats -cairo_valid_extensions = {"SVG", "PDF", "PS", "EPS", "RAW", "CAIRO"} +cairo_valid_extensions = {"SVG", "PDF", "PS", "EPS", "RAW", "CAIRO", "QAHIRAH"} def get_save_filename(outfile): """ @@ -377,7 +377,7 @@ def save_to_file(inimage, outfile, outfileext, imgcomment="barcode"): image_context.paint() image_surface.flush() image_surface.finish() - elif(outfileext == "CAIRO"): + elif(outfileext == "CAIRO" or outfileext == "QAHIRAH"): # Create an ScriptSurface with the exact dimensions of the recorded content image_surface = cairo.ScriptSurface(cairo.ScriptDevice(outfile), cairo.FORMAT_RGB24, int(width), int(height)) image_context = cairo.Context(image_surface) diff --git a/upcean/predraw/preqahirah.py b/upcean/predraw/preqahirah.py index 9d1e55b1..ef32df2f 100644 --- a/upcean/predraw/preqahirah.py +++ b/upcean/predraw/preqahirah.py @@ -182,7 +182,7 @@ def drawColorRectangleAlt(ctx, x1, y1, x2, y2, color, line_width=1): return True # Define valid Qahirah output formats -cairo_valid_extensions = {"SVG", "PDF", "PS", "EPS", "RAW", "CAIRO"} +cairo_valid_extensions = {"SVG", "PDF", "PS", "EPS", "RAW", "CAIRO", "QAHIRAH"} def get_save_filename(outfile): """ @@ -322,7 +322,7 @@ def save_to_file(inimage, outfile, outfileext, imgcomment="barcode"): image_context.set_source_surface(upc_preimg, (-x, -y)) image_context.paint() image_surface.flush() - if outfileext == "CAIRO": + elif outfileext == "CAIRO" or outfileext == "QAHIRAH": # Step 1: Create the ScriptDevice, specifying the output file script_device = qah.ScriptDevice.create(outfile) # Step 2: Create a proxy surface linked to the ScriptDevice diff --git a/upcean/support.py b/upcean/support.py index 2fd58068..6d31b591 100644 --- a/upcean/support.py +++ b/upcean/support.py @@ -70,7 +70,7 @@ def get_importing_script_path(): enable_pilsupport = True enable_cairosupport = True enable_qahirahsupport = True - enable_cairosvgsupport = True + enable_cairosvgsupport = False enable_wandsupport = True enable_magicksupport = True enable_pgmagicksupport = True