diff --git a/public/3d_fonts/MediaWord.blob b/public/3d_fonts/MediaWord.blob
new file mode 100644
index 0000000..43526b2
--- /dev/null
+++ b/public/3d_fonts/MediaWord.blob
@@ -0,0 +1 @@
+{"glyphs":{"0":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 434 347 l 347 347 l 347 260 l 260 260 l 174 260 l 174 174 l 87 174 l 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 87 521 l 87 434 l 87 347 l 87 260 l 174 260 l 174 347 l 260 347 l 347 347 l 347 434 l 434 434 l 434 521 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 434 87 m 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"1":{"ha":434,"x_min":0,"x_max":347,"o":"m 260 0 l 260 87 l 260 174 l 260 260 l 260 347 l 260 434 l 174 434 l 174 347 l 87 347 l 0 347 l 0 434 l 87 434 l 174 434 l 174 521 l 260 521 l 260 608 l 347 608 l 347 521 l 347 434 l 347 347 l 347 260 l 347 174 l 347 87 l 347 0 l 260 0 z "},"2":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 347 l 0 434 l 0 521 l 87 521 l 87 434 l 87 347 l 0 347 m 434 87 l 521 87 l 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 l 87 174 l 174 174 l 260 174 l 260 87 l 347 87 l 434 87 m 260 174 l 260 260 l 347 260 l 347 174 l 260 174 m 347 260 l 347 347 l 434 347 l 434 260 l 347 260 m 434 347 l 434 434 l 434 521 l 521 521 l 521 434 l 521 347 l 434 347 m 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"3":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 434 l 0 521 l 87 521 l 87 434 l 0 434 m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 87 174 l 87 87 m 434 260 l 347 260 l 260 260 l 174 260 l 174 347 l 260 347 l 347 347 l 434 347 l 434 260 m 434 347 l 434 434 l 434 521 l 521 521 l 521 434 l 521 347 l 434 347 m 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"4":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 0 l 347 87 l 347 174 l 260 174 l 174 174 l 87 174 l 0 174 l 0 260 l 0 347 l 87 347 l 87 434 l 174 434 l 174 521 l 260 521 l 260 608 l 347 608 l 434 608 l 434 521 l 434 434 l 434 347 l 434 260 l 521 260 l 521 174 l 434 174 l 434 87 l 434 0 l 347 0 m 260 260 l 347 260 l 347 347 l 347 434 l 347 521 l 260 521 l 260 434 l 174 434 l 174 347 l 87 347 l 87 260 l 174 260 l 260 260 z "},"5":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 87 174 l 87 87 m 434 260 l 347 260 l 260 260 l 174 260 l 87 260 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 434 l 87 347 l 174 347 l 260 347 l 347 347 l 434 347 l 434 260 z "},"6":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 m 434 260 l 347 260 l 260 260 l 174 260 l 174 347 l 260 347 l 347 347 l 434 347 l 434 260 m 87 434 l 87 521 l 174 521 l 174 434 l 87 434 m 260 608 l 347 608 l 347 521 l 260 521 l 174 521 l 174 608 l 260 608 z "},"7":{"ha":608,"x_min":0,"x_max":521,"o":"m 260 0 l 260 87 l 260 174 l 260 260 l 347 260 l 347 174 l 347 87 l 347 0 l 260 0 m 347 260 l 347 347 l 347 434 l 434 434 l 434 347 l 434 260 l 347 260 m 434 434 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 521 608 l 521 521 l 521 434 l 434 434 z "},"8":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 87 260 l 87 174 l 87 87 m 434 260 l 347 260 l 260 260 l 174 260 l 87 260 l 87 347 l 174 347 l 260 347 l 347 347 l 434 347 l 434 260 m 434 347 l 434 434 l 434 521 l 521 521 l 521 434 l 521 347 l 434 347 m 87 347 l 0 347 l 0 434 l 0 521 l 87 521 l 87 434 l 87 347 m 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"9":{"ha":608,"x_min":0,"x_max":521,"o":"m 260 87 l 347 87 l 347 0 l 260 0 l 174 0 l 174 87 l 260 87 m 347 87 l 347 174 l 434 174 l 434 87 l 347 87 m 434 174 l 434 260 l 434 347 l 434 434 l 434 521 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 434 174 m 260 347 l 347 347 l 347 260 l 260 260 l 174 260 l 87 260 l 87 347 l 174 347 l 260 347 m 87 347 l 0 347 l 0 434 l 0 521 l 87 521 l 87 434 l 87 347 m 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "}," ":{"ha":434,"x_min":0,"x_max":0,"o":""},"!":{"ha":260,"x_min":0,"x_max":174,"o":"m 87 87 l 174 87 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 m 87 174 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 174 521 l 174 434 l 174 347 l 174 260 l 174 174 l 87 174 z "},"\"":{"ha":521,"x_min":0,"x_max":434,"o":"m 260 347 l 260 434 l 260 521 l 260 608 l 347 608 l 434 608 l 434 521 l 434 434 l 347 434 l 347 347 l 260 347 m 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 174 521 l 174 434 l 87 434 l 87 347 l 0 347 z "},"#":{"ha":694,"x_min":0,"x_max":608,"o":"m 260 0 l 260 87 l 260 174 l 174 174 l 174 87 l 174 0 l 87 0 l 87 87 l 87 174 l 0 174 l 0 260 l 87 260 l 174 260 l 174 347 l 87 347 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 260 521 l 260 608 l 347 608 l 347 521 l 347 434 l 434 434 l 434 521 l 434 608 l 521 608 l 521 521 l 521 434 l 608 434 l 608 347 l 521 347 l 434 347 l 434 260 l 521 260 l 608 260 l 608 174 l 521 174 l 434 174 l 347 174 l 347 87 l 347 0 l 260 0 m 347 260 l 347 347 l 260 347 l 260 260 l 347 260 z "},"%":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 0 l 0 87 l 87 87 l 87 0 l 0 0 m 434 0 l 347 0 l 260 0 l 260 87 l 260 174 l 174 174 l 174 87 l 87 87 l 87 174 l 174 174 l 174 260 l 87 260 l 0 260 l 0 347 l 0 434 l 0 521 l 87 521 l 174 521 l 260 521 l 260 434 l 260 347 l 347 347 l 347 260 l 434 260 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 434 87 l 434 174 l 347 174 l 347 87 l 434 87 m 347 347 l 347 434 l 434 434 l 434 347 l 347 347 m 174 347 l 174 434 l 87 434 l 87 347 l 174 347 m 434 434 l 434 521 l 521 521 l 521 434 l 434 434 z "},"&":{"ha":694,"x_min":0,"x_max":608,"o":"m 521 87 l 608 87 l 608 0 l 521 0 l 434 0 l 434 87 l 521 87 m 174 87 l 260 87 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 m 434 87 l 347 87 l 260 87 l 260 174 l 260 260 l 347 260 l 434 260 l 434 174 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 87 260 l 87 174 l 87 87 m 434 260 l 434 347 l 521 347 l 521 260 l 434 260 m 260 260 l 174 260 l 87 260 l 87 347 l 87 434 l 87 521 l 174 521 l 174 434 l 174 347 l 260 347 l 260 260 m 260 608 l 347 608 l 347 521 l 260 521 l 174 521 l 174 608 l 260 608 z "},"*":{"ha":521,"x_min":0,"x_max":434,"o":"m 347 260 l 347 347 l 434 347 l 434 260 l 347 260 m 174 260 l 174 347 l 87 347 l 87 260 l 0 260 l 0 347 l 87 347 l 87 434 l 87 521 l 174 521 l 174 608 l 260 608 l 260 521 l 347 521 l 347 434 l 347 347 l 260 347 l 260 260 l 174 260 m 347 521 l 347 608 l 434 608 l 434 521 l 347 521 m 87 521 l 0 521 l 0 608 l 87 608 l 87 521 z "},",":{"ha":347,"x_min":87,"x_max":260,"o":"m 87 -87 l 87 0 l 87 87 l 87 174 l 174 174 l 260 174 l 260 87 l 260 0 l 174 0 l 174 -87 l 87 -87 z "},"-":{"ha":521,"x_min":87,"x_max":434,"o":"m 347 347 l 434 347 l 434 260 l 347 260 l 260 260 l 174 260 l 87 260 l 87 347 l 174 347 l 260 347 l 347 347 z "},".":{"ha":347,"x_min":87,"x_max":260,"o":"m 174 0 l 87 0 l 87 87 l 87 174 l 174 174 l 260 174 l 260 87 l 260 0 l 174 0 z "},"/":{"ha":521,"x_min":87,"x_max":434,"o":"m 87 0 l 87 87 l 87 174 l 174 174 l 174 87 l 174 0 l 87 0 m 174 174 l 174 260 l 174 347 l 260 347 l 260 260 l 260 174 l 174 174 m 260 347 l 260 434 l 260 521 l 347 521 l 347 434 l 347 347 l 260 347 m 347 521 l 347 608 l 347 694 l 434 694 l 434 608 l 434 521 l 347 521 z "},":":{"ha":347,"x_min":87,"x_max":260,"o":"m 174 0 l 87 0 l 87 87 l 87 174 l 174 174 l 260 174 l 260 87 l 260 0 l 174 0 m 174 347 l 87 347 l 87 434 l 87 521 l 174 521 l 260 521 l 260 434 l 260 347 l 174 347 z "},"?":{"ha":521,"x_min":0,"x_max":434,"o":"m 174 0 l 174 87 l 260 87 l 260 0 l 174 0 m 174 174 l 174 260 l 174 347 l 260 347 l 347 347 l 347 260 l 260 260 l 260 174 l 174 174 m 347 347 l 347 434 l 347 521 l 434 521 l 434 434 l 434 347 l 347 347 m 347 521 l 260 521 l 174 521 l 87 521 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 347 521 z "},"@":{"ha":694,"x_min":0,"x_max":608,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 347 174 l 260 174 l 174 174 l 174 87 l 87 87 l 87 174 l 174 174 l 174 260 l 174 347 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 l 347 347 l 260 347 l 260 260 l 347 260 l 434 260 l 434 347 l 521 347 l 521 434 l 608 434 l 608 347 l 608 260 l 608 174 l 521 174 l 521 87 l 434 87 m 87 174 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 l 87 174 m 521 434 l 434 434 l 434 521 l 521 521 l 521 434 m 174 434 l 87 434 l 87 521 l 174 521 l 174 434 m 434 521 l 347 521 l 260 521 l 174 521 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"A":{"ha":694,"x_min":0,"x_max":608,"o":"m 521 0 l 521 87 l 521 174 l 608 174 l 608 87 l 608 0 l 521 0 m 0 0 l 0 87 l 0 174 l 87 174 l 87 87 l 87 0 l 0 0 m 521 174 l 434 174 l 347 174 l 260 174 l 174 174 l 87 174 l 87 260 l 87 347 l 174 347 l 174 260 l 260 260 l 347 260 l 434 260 l 434 347 l 521 347 l 521 260 l 521 174 m 434 347 l 347 347 l 347 434 l 347 521 l 434 521 l 434 434 l 434 347 m 174 347 l 174 434 l 174 521 l 260 521 l 260 434 l 260 347 l 174 347 m 347 521 l 260 521 l 260 608 l 347 608 l 347 521 z "},"B":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 174 l 434 260 l 347 260 l 260 260 l 174 260 l 87 260 l 87 174 l 87 87 l 174 87 l 260 87 l 347 87 m 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 l 521 521 l 521 434 l 521 347 l 434 347 l 434 434 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 434 l 87 347 l 174 347 l 260 347 l 347 347 l 434 347 l 434 260 l 521 260 l 521 174 l 521 87 l 434 87 l 434 0 l 347 0 z "},"C":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 434 l 434 521 l 521 521 l 521 434 l 434 434 m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 521 174 l 521 87 l 434 87 m 174 87 l 87 87 l 87 174 l 174 174 l 174 87 m 87 174 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 l 87 174 m 87 434 l 87 521 l 174 521 l 174 434 l 87 434 m 434 521 l 347 521 l 260 521 l 174 521 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"D":{"ha":608,"x_min":0,"x_max":521,"o":"m 260 87 l 347 87 l 347 174 l 434 174 l 434 260 l 434 347 l 434 434 l 347 434 l 347 521 l 260 521 l 174 521 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 l 174 87 l 260 87 m 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 347 521 l 434 521 l 434 434 l 521 434 l 521 347 l 521 260 l 521 174 l 434 174 l 434 87 l 347 87 l 347 0 l 260 0 z "},"E":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 87 l 521 87 l 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 521 608 l 521 521 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 434 l 87 347 l 174 347 l 260 347 l 347 347 l 434 347 l 434 260 l 347 260 l 260 260 l 174 260 l 87 260 l 87 174 l 87 87 l 174 87 l 260 87 l 347 87 l 434 87 z "},"F":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 521 608 l 521 521 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 434 l 87 347 l 174 347 l 260 347 l 347 347 l 434 347 l 434 260 l 347 260 l 260 260 l 174 260 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 z "},"G":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 434 l 434 521 l 521 521 l 521 434 l 434 434 m 434 0 l 347 0 l 260 0 l 174 0 l 174 87 l 260 87 l 347 87 l 434 87 l 434 174 l 434 260 l 347 260 l 347 347 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 174 87 l 87 87 l 87 174 l 174 174 l 174 87 m 87 174 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 l 87 174 m 87 434 l 87 521 l 174 521 l 174 434 l 87 434 m 434 521 l 347 521 l 260 521 l 174 521 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"H":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 434 174 l 434 260 l 347 260 l 260 260 l 174 260 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 87 347 l 174 347 l 260 347 l 347 347 l 434 347 l 434 434 l 434 521 l 434 608 l 521 608 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 z "},"I":{"ha":521,"x_min":0,"x_max":434,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 l 174 87 l 174 174 l 174 260 l 174 347 l 174 434 l 174 521 l 87 521 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 l 347 521 l 260 521 l 260 434 l 260 347 l 260 260 l 260 174 l 260 87 l 347 87 z "},"J":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 434 347 l 434 434 l 434 521 l 434 608 l 521 608 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 87 260 l 87 174 l 87 87 z "},"K":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 m 434 87 l 347 87 l 347 174 l 434 174 l 434 87 m 347 174 l 260 174 l 260 260 l 347 260 l 347 174 m 260 260 l 174 260 l 174 347 l 260 347 l 260 260 m 260 347 l 260 434 l 347 434 l 347 347 l 260 347 m 347 434 l 347 521 l 434 521 l 434 434 l 347 434 m 434 521 l 434 608 l 521 608 l 521 521 l 434 521 z "},"L":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 87 l 521 87 l 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 l 174 87 l 260 87 l 347 87 l 434 87 z "},"M":{"ha":694,"x_min":0,"x_max":608,"o":"m 521 0 l 521 87 l 521 174 l 521 260 l 521 347 l 434 347 l 434 260 l 434 174 l 347 174 l 347 87 l 347 0 l 260 0 l 260 87 l 260 174 l 347 174 l 347 260 l 347 347 l 434 347 l 434 434 l 434 521 l 521 521 l 521 608 l 608 608 l 608 521 l 608 434 l 608 347 l 608 260 l 608 174 l 608 87 l 608 0 l 521 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 174 521 l 174 434 l 174 347 l 260 347 l 260 260 l 260 174 l 174 174 l 174 260 l 174 347 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 z "},"N":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 434 174 l 347 174 l 347 260 l 434 260 l 434 347 l 434 434 l 434 521 l 434 608 l 521 608 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 174 521 l 174 434 l 260 434 l 260 347 l 347 347 l 347 260 l 260 260 l 260 347 l 174 347 l 174 434 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 z "},"O":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 434 347 l 434 434 l 434 521 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 m 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"P":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 l 521 521 l 521 434 l 521 347 l 434 347 l 434 260 l 347 260 l 260 260 l 174 260 l 174 347 l 260 347 l 347 347 l 434 347 l 434 434 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 z "},"Q":{"ha":694,"x_min":0,"x_max":608,"o":"m 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 l 434 87 l 434 174 l 434 260 l 434 347 l 434 434 l 434 521 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 608 87 l 608 0 l 521 0 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 m 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 z "},"R":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 434 521 l 521 521 l 521 434 l 521 347 l 434 347 l 434 260 l 347 260 l 347 174 l 434 174 l 434 87 l 347 87 l 347 174 l 260 174 l 260 260 l 174 260 l 174 347 l 260 347 l 347 347 l 434 347 l 434 434 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 z "},"S":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 347 174 l 347 260 l 434 260 l 521 260 l 521 174 l 521 87 l 434 87 m 347 260 l 260 260 l 174 260 l 174 347 l 260 347 l 347 347 l 347 260 m 174 347 l 87 347 l 0 347 l 0 434 l 0 521 l 87 521 l 87 434 l 174 434 l 174 347 m 434 608 l 521 608 l 521 521 l 434 521 l 347 521 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 z "},"T":{"ha":694,"x_min":0,"x_max":608,"o":"m 260 0 l 260 87 l 260 174 l 260 260 l 260 347 l 260 434 l 260 521 l 174 521 l 87 521 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 521 608 l 608 608 l 608 521 l 521 521 l 434 521 l 347 521 l 347 434 l 347 347 l 347 260 l 347 174 l 347 87 l 347 0 l 260 0 z "},"U":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 434 347 l 434 434 l 434 521 l 434 608 l 521 608 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 z "},"V":{"ha":694,"x_min":0,"x_max":608,"o":"m 260 0 l 260 87 l 347 87 l 347 0 l 260 0 m 347 87 l 347 174 l 347 260 l 434 260 l 434 174 l 434 87 l 347 87 m 260 87 l 174 87 l 174 174 l 174 260 l 260 260 l 260 174 l 260 87 m 434 260 l 434 347 l 434 434 l 521 434 l 521 347 l 521 260 l 434 260 m 174 260 l 87 260 l 87 347 l 87 434 l 174 434 l 174 347 l 174 260 m 521 434 l 521 521 l 521 608 l 608 608 l 608 521 l 608 434 l 521 434 m 87 434 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 z "},"W":{"ha":694,"x_min":0,"x_max":608,"o":"m 434 0 l 347 0 l 347 87 l 347 174 l 434 174 l 434 260 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 174 0 l 87 0 l 87 87 l 87 174 l 87 260 l 87 347 l 174 347 l 174 260 l 174 174 l 260 174 l 260 87 l 260 0 l 174 0 m 347 174 l 260 174 l 260 260 l 260 347 l 260 434 l 260 521 l 260 608 l 347 608 l 347 521 l 347 434 l 347 347 l 347 260 l 347 174 m 521 347 l 521 434 l 521 521 l 521 608 l 608 608 l 608 521 l 608 434 l 608 347 l 521 347 m 87 347 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 87 347 z "},"X":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 434 174 l 521 174 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 0 174 l 87 174 l 87 87 l 87 0 l 0 0 m 434 174 l 347 174 l 347 260 l 434 260 l 434 174 m 87 174 l 87 260 l 174 260 l 174 174 l 87 174 m 347 260 l 260 260 l 174 260 l 174 347 l 260 347 l 347 347 l 347 260 m 347 347 l 347 434 l 434 434 l 434 347 l 347 347 m 174 347 l 87 347 l 87 434 l 174 434 l 174 347 m 434 434 l 434 521 l 434 608 l 521 608 l 521 521 l 521 434 l 434 434 m 87 434 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 z "},"Y":{"ha":694,"x_min":0,"x_max":608,"o":"m 260 0 l 260 87 l 260 174 l 260 260 l 347 260 l 347 174 l 347 87 l 347 0 l 260 0 m 347 260 l 347 347 l 434 347 l 434 260 l 347 260 m 260 260 l 174 260 l 174 347 l 260 347 l 260 260 m 434 347 l 434 434 l 521 434 l 521 347 l 434 347 m 174 347 l 87 347 l 87 434 l 174 434 l 174 347 m 521 434 l 521 521 l 521 608 l 608 608 l 608 521 l 608 434 l 521 434 m 87 434 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 z "},"Z":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 87 l 521 87 l 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 l 87 174 l 174 174 l 174 87 l 260 87 l 347 87 l 434 87 m 174 174 l 174 260 l 174 347 l 260 347 l 260 434 l 347 434 l 347 347 l 347 260 l 260 260 l 260 174 l 174 174 m 347 434 l 347 521 l 260 521 l 174 521 l 87 521 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 434 608 l 521 608 l 521 521 l 434 521 l 434 434 l 347 434 z "},"`":{"ha":434,"x_min":174,"x_max":347,"o":"m 174 260 l 174 347 l 174 434 l 174 521 l 260 521 l 347 521 l 347 434 l 347 347 l 260 347 l 260 260 l 174 260 z "},"a":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 434 174 l 347 174 l 260 174 l 174 174 l 87 174 l 87 87 l 174 87 l 260 87 l 347 87 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 0 174 l 87 174 l 87 260 l 174 260 l 260 260 l 347 260 l 434 260 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 z "},"b":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 434 87 l 434 174 l 434 260 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 174 174 l 174 87 l 260 87 l 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 174 87 l 87 87 l 87 0 l 0 0 z "},"c":{"ha":521,"x_min":0,"x_max":434,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 87 347 l 87 260 l 87 174 l 87 87 m 347 434 l 434 434 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 434 l 174 434 l 260 434 l 347 434 z "},"d":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 347 87 l 347 174 l 434 174 l 434 260 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 87 87 l 174 87 l 260 87 l 347 87 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 87 347 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 521 l 434 608 l 521 608 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 z "},"e":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 87 l 521 87 l 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 87 347 l 87 260 l 174 260 l 260 260 l 347 260 l 434 260 l 434 347 l 521 347 l 521 260 l 521 174 l 434 174 l 347 174 l 260 174 l 174 174 l 87 174 l 87 87 m 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 z "},"f":{"ha":694,"x_min":0,"x_max":608,"o":"m 174 0 l 174 87 l 174 174 l 174 260 l 174 347 l 87 347 l 0 347 l 0 434 l 87 434 l 174 434 l 174 521 l 260 521 l 260 434 l 347 434 l 434 434 l 434 347 l 347 347 l 260 347 l 260 260 l 260 174 l 260 87 l 260 0 l 174 0 m 521 608 l 608 608 l 608 521 l 521 521 l 434 521 l 347 521 l 260 521 l 260 608 l 347 608 l 434 608 l 521 608 z "},"g":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 -87 l 434 -87 l 434 -174 l 347 -174 l 260 -174 l 174 -174 l 87 -174 l 87 -87 l 174 -87 l 260 -87 l 347 -87 m 434 -87 l 434 0 l 434 87 l 347 87 l 347 174 l 434 174 l 434 260 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 87 87 l 174 87 l 260 87 l 347 87 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 87 347 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 521 -87 l 434 -87 z "},"h":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 434 174 l 434 260 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 z "},"i":{"ha":434,"x_min":0,"x_max":347,"o":"m 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 l 174 87 l 174 174 l 174 260 l 174 347 l 87 347 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 260 347 l 260 260 l 260 174 l 260 87 l 347 87 l 347 0 l 260 0 m 174 608 l 260 608 l 260 521 l 174 521 l 87 521 l 87 608 l 174 608 z "},"j":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 0 l 434 0 l 434 -87 l 347 -87 l 260 -87 l 174 -87 l 87 -87 l 87 0 l 174 0 l 260 0 l 347 0 m 434 0 l 434 87 l 434 174 l 434 260 l 434 347 l 434 434 l 347 434 l 260 434 l 260 521 l 347 521 l 434 521 l 521 521 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 87 0 l 0 0 l 0 87 l 0 174 l 87 174 l 87 87 l 87 0 m 434 694 l 521 694 l 521 608 l 434 608 l 347 608 l 347 694 l 434 694 z "},"k":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 0 521 l 0 608 l 87 608 l 87 521 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 m 434 87 l 347 87 l 347 174 l 434 174 l 434 87 m 347 174 l 260 174 l 174 174 l 174 260 l 260 260 l 347 260 l 347 174 m 347 260 l 347 347 l 434 347 l 434 260 l 347 260 m 434 347 l 434 434 l 521 434 l 521 347 l 434 347 z "},"l":{"ha":434,"x_min":0,"x_max":347,"o":"m 260 0 l 260 87 l 260 174 l 260 260 l 260 347 l 260 434 l 260 521 l 174 521 l 87 521 l 0 521 l 0 608 l 87 608 l 174 608 l 260 608 l 347 608 l 347 521 l 347 434 l 347 347 l 347 260 l 347 174 l 347 87 l 347 0 l 260 0 z "},"m":{"ha":694,"x_min":0,"x_max":608,"o":"m 521 0 l 521 87 l 521 174 l 521 260 l 521 347 l 608 347 l 608 260 l 608 174 l 608 87 l 608 0 l 521 0 m 260 0 l 260 87 l 260 174 l 260 260 l 260 347 l 347 347 l 347 260 l 347 174 l 347 87 l 347 0 l 260 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 m 521 347 l 434 347 l 347 347 l 347 434 l 434 434 l 521 434 l 521 347 z "},"n":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 434 174 l 434 260 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 z "},"o":{"ha":608,"x_min":0,"x_max":521,"o":"m 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 m 434 87 l 434 174 l 434 260 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 434 87 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 87 347 l 87 260 l 87 174 l 87 87 m 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 z "},"p":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 -87 l 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 434 347 l 521 347 l 521 260 l 521 174 l 521 87 l 434 87 l 434 174 l 434 260 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 174 174 l 174 87 l 260 87 l 347 87 l 434 87 l 434 0 l 347 0 l 260 0 l 174 0 l 174 87 l 87 87 l 87 0 l 87 -87 l 0 -87 z "},"q":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 -87 l 434 0 l 434 87 l 347 87 l 347 174 l 434 174 l 434 260 l 434 347 l 347 347 l 260 347 l 174 347 l 87 347 l 87 260 l 87 174 l 87 87 l 174 87 l 260 87 l 347 87 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 87 347 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 521 -87 l 434 -87 z "},"r":{"ha":608,"x_min":0,"x_max":521,"o":"m 0 0 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 174 347 l 174 260 l 87 260 l 87 174 l 87 87 l 87 0 l 0 0 m 434 434 l 521 434 l 521 347 l 434 347 l 347 347 l 260 347 l 174 347 l 174 434 l 260 434 l 347 434 l 434 434 z "},"s":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 l 174 87 l 260 87 l 347 87 l 347 174 l 434 174 l 521 174 l 521 87 l 521 0 l 434 0 m 347 174 l 260 174 l 174 174 l 174 260 l 260 260 l 347 260 l 347 174 m 174 260 l 87 260 l 0 260 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 521 434 l 521 347 l 434 347 l 347 347 l 260 347 l 174 347 l 174 260 z "},"t":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 87 l 521 87 l 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 174 87 l 260 87 l 347 87 l 434 87 m 174 87 l 87 87 l 87 174 l 87 260 l 87 347 l 0 347 l 0 434 l 87 434 l 87 521 l 174 521 l 174 434 l 260 434 l 347 434 l 434 434 l 521 434 l 521 347 l 434 347 l 347 347 l 260 347 l 174 347 l 174 260 l 174 174 l 174 87 z "},"u":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 87 87 l 174 87 l 260 87 l 347 87 l 434 87 l 434 174 l 434 260 l 434 347 l 434 434 l 521 434 l 521 347 l 521 260 l 521 174 l 521 87 l 521 0 l 434 0 m 87 87 l 0 87 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 l 87 174 l 87 87 z "},"v":{"ha":694,"x_min":0,"x_max":608,"o":"m 260 0 l 260 87 l 347 87 l 347 0 l 260 0 m 347 87 l 347 174 l 434 174 l 434 87 l 347 87 m 260 87 l 174 87 l 174 174 l 260 174 l 260 87 m 434 174 l 434 260 l 521 260 l 521 174 l 434 174 m 174 174 l 87 174 l 87 260 l 174 260 l 174 174 m 521 260 l 521 347 l 521 434 l 608 434 l 608 347 l 608 260 l 521 260 m 87 260 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 z "},"w":{"ha":694,"x_min":0,"x_max":608,"o":"m 347 0 l 347 87 l 434 87 l 434 0 l 347 0 m 174 0 l 174 87 l 260 87 l 260 0 l 174 0 m 434 87 l 434 174 l 521 174 l 521 87 l 434 87 m 347 87 l 260 87 l 260 174 l 260 260 l 260 347 l 260 434 l 347 434 l 347 347 l 347 260 l 347 174 l 347 87 m 174 87 l 87 87 l 87 174 l 174 174 l 174 87 m 521 174 l 521 260 l 521 347 l 521 434 l 608 434 l 608 347 l 608 260 l 608 174 l 521 174 m 87 174 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 l 87 174 z "},"x":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 0 l 434 87 l 521 87 l 521 0 l 434 0 m 0 0 l 0 87 l 87 87 l 87 0 l 0 0 m 434 87 l 347 87 l 347 174 l 434 174 l 434 87 m 87 87 l 87 174 l 174 174 l 174 87 l 87 87 m 347 174 l 260 174 l 174 174 l 174 260 l 260 260 l 347 260 l 347 174 m 347 260 l 347 347 l 434 347 l 434 260 l 347 260 m 174 260 l 87 260 l 87 347 l 174 347 l 174 260 m 434 347 l 434 434 l 521 434 l 521 347 l 434 347 m 87 347 l 0 347 l 0 434 l 87 434 l 87 347 z "},"y":{"ha":608,"x_min":0,"x_max":521,"o":"m 87 -87 l 174 -87 l 174 -174 l 87 -174 l 0 -174 l 0 -87 l 87 -87 m 174 -87 l 174 0 l 174 87 l 260 87 l 347 87 l 347 0 l 260 0 l 260 -87 l 174 -87 m 347 87 l 347 174 l 434 174 l 434 87 l 347 87 m 174 87 l 87 87 l 87 174 l 174 174 l 174 87 m 434 174 l 434 260 l 434 347 l 434 434 l 521 434 l 521 347 l 521 260 l 521 174 l 434 174 m 87 174 l 0 174 l 0 260 l 0 347 l 0 434 l 87 434 l 87 347 l 87 260 l 87 174 z "},"z":{"ha":608,"x_min":0,"x_max":521,"o":"m 434 87 l 521 87 l 521 0 l 434 0 l 347 0 l 260 0 l 174 0 l 87 0 l 0 0 l 0 87 l 87 87 l 87 174 l 174 174 l 174 87 l 260 87 l 347 87 l 434 87 m 260 260 l 347 260 l 347 174 l 260 174 l 174 174 l 174 260 l 260 260 m 347 260 l 347 347 l 260 347 l 174 347 l 87 347 l 0 347 l 0 434 l 87 434 l 174 434 l 260 434 l 347 434 l 434 434 l 521 434 l 521 347 l 434 347 l 434 260 l 347 260 z "},"{":{"ha":347,"x_min":0,"x_max":260,"o":"m 174 0 l 174 87 l 87 87 l 87 174 l 87 260 l 0 260 l 0 347 l 0 434 l 87 434 l 87 521 l 87 608 l 174 608 l 174 694 l 260 694 l 260 608 l 260 521 l 174 521 l 174 434 l 174 347 l 174 260 l 174 174 l 260 174 l 260 87 l 260 0 l 174 0 z "},"}":{"ha":347,"x_min":0,"x_max":260,"o":"m 0 0 l 0 87 l 0 174 l 87 174 l 87 260 l 87 347 l 87 434 l 87 521 l 0 521 l 0 608 l 0 694 l 87 694 l 87 608 l 174 608 l 174 521 l 174 434 l 260 434 l 260 347 l 260 260 l 174 260 l 174 174 l 174 87 l 87 87 l 87 0 l 0 0 z "},"~":{"ha":694,"x_min":0,"x_max":608,"o":"m 0 260 l 0 347 l 87 347 l 87 260 l 0 260 m 434 260 l 521 260 l 521 174 l 434 174 l 347 174 l 347 260 l 434 260 m 521 260 l 521 347 l 608 347 l 608 260 l 521 260 m 347 260 l 260 260 l 260 347 l 347 347 l 347 260 m 260 347 l 174 347 l 87 347 l 87 434 l 174 434 l 260 434 l 260 347 z "}," ":{"ha":434,"x_min":0,"x_max":0,"o":""}},"familyName":"LainPlainV21","ascender":925,"descender":-174,"underlinePosition":-174,"underlineThickness":69,"boundingBox":{"yMin":-174,"xMin":0,"yMax":925,"xMax":608},"resolution":1000,"original_font_information":{"format":0,"copyright":"TheOneBimBuns","fontFamily":"LainPlainV21","fontSubfamily":"Medium","uniqueID":"TheOneBimBuns:LainPlainV21","fullName":"LainPlainV21","version":"Version 001.000 ","postScriptName":"LainPlainV21"},"cssFontWeight":"normal","cssFontStyle":"normal"}
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
index 9789ab8..9a6cf12 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -4,8 +4,8 @@ import "./static/css/hub.css";
import "./static/css/main.css";
import { Canvas } from "react-three-fiber";
import Boot from "./components/Boot";
-import MediaPlayer from "./components/MediaPlayer";
-import MediaOverlay from "./components/MediaOverlay";
+import MediaPlayer from "./components/MediaScene/MediaPlayer";
+import MediaScene from "./components/MediaScene/MediaScene";
import EventStateManager from "./components/StateManagers/EventStateManager";
const App = () => {
@@ -27,12 +27,12 @@ const App = () => {
-
+ {/**/}
);
};
diff --git a/src/components/MediaOverlay.tsx b/src/components/MediaOverlay.tsx
deleted file mode 100644
index 47cebe3..0000000
--- a/src/components/MediaOverlay.tsx
+++ /dev/null
@@ -1,241 +0,0 @@
-import React, { useCallback, useEffect, useRef, useState } from "react";
-
-import grayTextureFile from "../static/sprite/gray_box.png";
-import darkGrayTextureFile from "../static/sprite/dark_gray_box.png";
-import mediaOverlayHud from "../static/sprite/media_hud.png";
-
-import { useFrame, useLoader } from "react-three-fiber";
-import * as THREE from "three";
-import { OrbitControls } from "drei";
-import { a, useTrail } from "@react-spring/three";
-import { useMediaStore } from "../store";
-import BigLetter from "./TextRenderer/BigLetter";
-import MediumLetter from "./TextRenderer/MediumLetter";
-import TextRenderer from "./TextRenderer/TextRenderer";
-
-type ShapeProps = {
- position: number[];
- selectable?: boolean;
- active?: boolean;
-};
-
-const GrayCube = (props: ShapeProps) => {
- const grayTex = useLoader(THREE.TextureLoader, grayTextureFile);
- const darkGrayTex = useLoader(THREE.TextureLoader, darkGrayTextureFile);
-
- const cubeRef = useRef();
-
- useFrame(() => {
- if (props.selectable && props.active) {
- cubeRef.current!.rotation.y -= 0.015;
- } else {
- cubeRef.current!.rotation.y = 0;
- }
- });
-
- return (
-
-
-
-
- );
-};
-
-const GrayTriangularPrism = (props: ShapeProps) => {
- const grayTex = useLoader(THREE.TextureLoader, grayTextureFile);
- const darkGrayTex = useLoader(THREE.TextureLoader, darkGrayTextureFile);
-
- const prismRef = useRef();
-
- const verts = new Float32Array([
- // Top
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
-
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 1,
- 0,
-
- // Bottom
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
-
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
-
- // Sides
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
-
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 0,
-
- // Hypotenuse
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
-
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- ]);
-
- useFrame(() => {
- if (props.selectable && props.active) {
- prismRef.current!.rotation.y -= 0.015;
- } else {
- prismRef.current!.rotation.y = 0;
- }
- });
-
- return (
-
-
-
-
-
- //
- //
- //
- //
- //
- //
- );
-};
-
-const MediaOverlay = () => {
- const [grayCubesActive, setGrayCubesActive] = useState(false);
- const mediaHudOverlayTex = useLoader(THREE.TextureLoader, mediaOverlayHud);
-
- const activeMediaElement = useMediaStore((state) => state.activeMediaElement);
-
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-};
-
-export default MediaOverlay;
diff --git a/src/components/MediaScene/LeftSide/Cube.tsx b/src/components/MediaScene/LeftSide/Cube.tsx
new file mode 100644
index 0000000..21492ec
--- /dev/null
+++ b/src/components/MediaScene/LeftSide/Cube.tsx
@@ -0,0 +1,39 @@
+import { useFrame, useLoader } from "react-three-fiber";
+import * as THREE from "three";
+import grayTextureFile from "../../../static/sprite/gray_box.png";
+import darkGrayTextureFile from "../../../static/sprite/dark_gray_box.png";
+import React, { useRef } from "react";
+import { ShapeProps } from "./LeftSide";
+
+const Cube = (props: ShapeProps) => {
+ const grayTex = useLoader(THREE.TextureLoader, grayTextureFile);
+ const darkGrayTex = useLoader(THREE.TextureLoader, darkGrayTextureFile);
+
+ const cubeRef = useRef();
+
+ useFrame(() => {
+ if (props.selectable && props.active) {
+ cubeRef.current!.rotation.y -= 0.015;
+ } else {
+ cubeRef.current!.rotation.y = 0;
+ }
+ });
+
+ return (
+
+
+
+
+ );
+};
+
+export default Cube;
diff --git a/src/components/MediaScene/LeftSide/LeftSide.tsx b/src/components/MediaScene/LeftSide/LeftSide.tsx
new file mode 100644
index 0000000..de03784
--- /dev/null
+++ b/src/components/MediaScene/LeftSide/LeftSide.tsx
@@ -0,0 +1,43 @@
+import React from "react";
+import TriangularPrism from "./TriangularPrism";
+import Cube from "./Cube";
+
+type LeftSideShapesProps = {
+ active: "cube" | "triangle" | "";
+};
+
+export type ShapeProps = {
+ position: number[];
+ selectable?: boolean;
+ active?: boolean;
+};
+
+const LeftSide = (props: LeftSideShapesProps) => {
+ const cubesActive = props.active === "cube";
+ const trianglesActive = props.active === "triangle";
+
+ return (
+ <>
+
+
+
+
+
+
+
+ {/*main two*/}
+
+
+ >
+ );
+};
+
+export default LeftSide;
diff --git a/src/components/MediaScene/LeftSide/TriangularPrism.tsx b/src/components/MediaScene/LeftSide/TriangularPrism.tsx
new file mode 100644
index 0000000..6f1f124
--- /dev/null
+++ b/src/components/MediaScene/LeftSide/TriangularPrism.tsx
@@ -0,0 +1,147 @@
+import { useFrame, useLoader } from "react-three-fiber";
+import * as THREE from "three";
+import grayTextureFile from "../../../static/sprite/gray_box.png";
+import darkGrayTextureFile from "../../../static/sprite/dark_gray_box.png";
+import React, { useRef } from "react";
+import { ShapeProps } from "./LeftSide";
+
+const TriangularPrism = (props: ShapeProps) => {
+ const grayTex = useLoader(THREE.TextureLoader, grayTextureFile);
+ const darkGrayTex = useLoader(THREE.TextureLoader, darkGrayTextureFile);
+
+ const prismRef = useRef();
+
+ const verts = new Float32Array([
+ // Top
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+
+ // Bottom
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1,
+ 1,
+
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+
+ // Sides
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+
+ 0,
+ 1,
+ 1,
+ 0,
+ 1,
+ 0,
+ 1,
+ 1,
+ 0,
+
+ // Hypotenuse
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 1,
+
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 1,
+ ]);
+
+ useFrame(() => {
+ if (props.selectable && props.active) {
+ prismRef.current!.rotation.y -= 0.015;
+ } else {
+ prismRef.current!.rotation.y = 0;
+ }
+ });
+
+ return (
+
+
+
+
+
+ //
+ //
+ //
+ //
+ //
+ //
+ );
+};
+
+export default TriangularPrism;
\ No newline at end of file
diff --git a/src/components/MediaPlayer.tsx b/src/components/MediaScene/MediaPlayer.tsx
similarity index 84%
rename from src/components/MediaPlayer.tsx
rename to src/components/MediaScene/MediaPlayer.tsx
index 1065384..7f0e43c 100644
--- a/src/components/MediaPlayer.tsx
+++ b/src/components/MediaScene/MediaPlayer.tsx
@@ -1,6 +1,6 @@
import React from "react";
import ReactPlayer from "react-player";
-import test from "../static/movie/test.webm";
+import test from "../../static/movie/test.webm";
const MediaPlayer = () => {
return (
diff --git a/src/components/MediaScene/MediaScene.tsx b/src/components/MediaScene/MediaScene.tsx
new file mode 100644
index 0000000..42279f6
--- /dev/null
+++ b/src/components/MediaScene/MediaScene.tsx
@@ -0,0 +1,43 @@
+import React, { useRef, useState } from "react";
+
+import grayTextureFile from "../../static/sprite/gray_box.png";
+import darkGrayTextureFile from "../../static/sprite/dark_gray_box.png";
+import mediaOverlayHud from "../../static/sprite/media_hud.png";
+
+import { useFrame, useLoader } from "react-three-fiber";
+import * as THREE from "three";
+import { OrbitControls } from "drei";
+import { useMediaStore, useMediaWordStore } from "../../store";
+import TextRenderer from "../TextRenderer/TextRenderer";
+import LeftSide from "./LeftSide/LeftSide";
+import Word from "./Word";
+
+const MediaScene = () => {
+ const [grayCubesActive, setGrayCubesActive] = useState(false);
+ const mediaHudOverlayTex = useLoader(THREE.TextureLoader, mediaOverlayHud);
+ const words = useMediaWordStore((state) => state.words);
+
+ const activeMediaElement = useMediaStore((state) => state.activeMediaElement);
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default MediaScene;
diff --git a/src/components/MediaScene/Word.tsx b/src/components/MediaScene/Word.tsx
new file mode 100644
index 0000000..e21d2c3
--- /dev/null
+++ b/src/components/MediaScene/Word.tsx
@@ -0,0 +1,49 @@
+import React, { useMemo } from "react";
+import * as THREE from "three";
+import wordInactiveTexture from "../../static/sprite/word_background.png";
+import wordActiveTexture from "../../static/sprite/word_background_active.png";
+import { useLoader } from "react-three-fiber";
+
+type WordProps = {
+ word: string;
+ posX: number;
+ posY: number;
+};
+
+const Word = (props: WordProps) => {
+ const wordFont = useLoader(THREE.FontLoader, "/3d_fonts/MediaWord.blob");
+ const config = useMemo(
+ () => ({
+ font: wordFont,
+ size: 1,
+ }),
+ [wordFont]
+ );
+
+ const wordInactiveTex = useLoader(THREE.TextureLoader, wordInactiveTexture);
+ const wordActiveTex = useLoader(THREE.TextureLoader, wordActiveTexture);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Word;
diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts
index 16f954b..55adf9e 100644
--- a/src/react-app-env.d.ts
+++ b/src/react-app-env.d.ts
@@ -8,3 +8,5 @@ declare module "threejs-slice-geometry" {
const src: any;
export default src;
}
+
+declare module '*.ttf';
diff --git a/src/store.ts b/src/store.ts
index 75cf517..13ac16b 100644
--- a/src/store.ts
+++ b/src/store.ts
@@ -85,6 +85,17 @@ type MiddleRingState = {
setMiddleRingAnimDuration: (to: number) => void;
};
+type MediaWordState = {
+ words: string[];
+ fstWordPos: number[];
+ sndWordPos: number[];
+ thirdWordPos: number[];
+ setWords: (to: string[]) => void;
+ setFstWordPos: (to: number[]) => void;
+ setSndWordPos: (to: number[]) => void;
+ setThirdWordPos: (to: number[]) => void;
+};
+
type MediaState = {
activeMediaElement: string;
leftColActiveMediaElement: string;
@@ -244,3 +255,14 @@ export const useMediaStore = create((set) => ({
setLeftColActiveMediaElementTextPos: (to) =>
set(() => ({ leftColActiveMediaElementTextPos: to })),
}));
+
+export const useMediaWordStore = create((set) => ({
+ words: ["eye", "quiet", "hallucination"],
+ fstWordPos: [0, 0, 0],
+ sndWordPos: [0, 0, 0],
+ thirdWordPos: [0, 0, 0],
+ setWords: (to) => set(() => ({ words: to })),
+ setFstWordPos: (to) => set(() => ({ fstWordPos: to })),
+ setSndWordPos: (to) => set(() => ({ sndWordPos: to })),
+ setThirdWordPos: (to) => set(() => ({ thirdWordPos: to })),
+}));