brep-io-kernel 1.0.96 → 1.0.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/dist-kernel/brep-io-kernel.css +1 -1
  2. package/dist-kernel/brep-kernel.js +66834 -73930
  3. package/package.json +1 -1
  4. package/src/UI/viewer.js +10 -6
  5. package/src/assets/brand/brep-home-banner.svg +116 -0
  6. package/src/assets/fonts/google-ofl/catalog.js +0 -67
  7. package/src/features/textToFace/TextToFaceFeature.js +18 -73
  8. package/src/features/textToFace/fontUrlLoaders.kernel.js +8 -1
  9. package/src/features/textToFace/fontUrlLoaders.vite.js +5 -1
  10. package/src/generated/licenseBundle.js +1 -1
  11. package/src/main.js +2 -1
  12. package/src/styles/cad.css +7 -2
  13. package/src/styles/landing.css +7 -1
  14. package/src/tools/fontAuditPage.js +354 -0
  15. package/src/assets/fonts/braille-hc/BrailleLatinHC-Regular.otf +0 -0
  16. package/src/assets/fonts/braille-hc/BraillePinboardHC-Regular.otf +0 -0
  17. package/src/assets/fonts/dejavu/DejaVuSans-Bold.ttf +0 -0
  18. package/src/assets/fonts/dejavu/DejaVuSans.ttf +0 -0
  19. package/src/assets/fonts/dejavu/DejaVuSansMono-Bold.ttf +0 -0
  20. package/src/assets/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf +0 -0
  21. package/src/assets/fonts/dejavu/DejaVuSansMono-Oblique.ttf +0 -0
  22. package/src/assets/fonts/dejavu/DejaVuSansMono.ttf +0 -0
  23. package/src/assets/fonts/dejavu/DejaVuSerif-Bold.ttf +0 -0
  24. package/src/assets/fonts/dejavu/DejaVuSerif.ttf +0 -0
  25. package/src/assets/fonts/google-ofl/anektelugu/AnekTelugu[wdth,wght].ttf +0 -0
  26. package/src/assets/fonts/google-ofl/anektelugu/DESCRIPTION.en_us.html +0 -23
  27. package/src/assets/fonts/google-ofl/anektelugu/METADATA.pb +0 -47
  28. package/src/assets/fonts/google-ofl/anektelugu/OFL.txt +0 -93
  29. package/src/assets/fonts/google-ofl/anton/Anton-Regular.ttf +0 -0
  30. package/src/assets/fonts/google-ofl/anton/DESCRIPTION.en_us.html +0 -12
  31. package/src/assets/fonts/google-ofl/anton/METADATA.pb +0 -38
  32. package/src/assets/fonts/google-ofl/anton/OFL.txt +0 -93
  33. package/src/assets/fonts/google-ofl/archivo/Archivo[wdth,wght].ttf +0 -0
  34. package/src/assets/fonts/google-ofl/archivo/DESCRIPTION.en_us.html +0 -5
  35. package/src/assets/fonts/google-ofl/archivo/METADATA.pb +0 -55
  36. package/src/assets/fonts/google-ofl/archivo/OFL.txt +0 -93
  37. package/src/assets/fonts/google-ofl/bitter/Bitter[wght].ttf +0 -0
  38. package/src/assets/fonts/google-ofl/bitter/DESCRIPTION.en_us.html +0 -26
  39. package/src/assets/fonts/google-ofl/bitter/METADATA.pb +0 -52
  40. package/src/assets/fonts/google-ofl/bitter/OFL.txt +0 -94
  41. package/src/assets/fonts/google-ofl/bricolagegrotesque/BricolageGrotesque[opsz,wdth,wght].ttf +0 -0
  42. package/src/assets/fonts/google-ofl/bricolagegrotesque/DESCRIPTION.en_us.html +0 -5
  43. package/src/assets/fonts/google-ofl/bricolagegrotesque/METADATA.pb +0 -50
  44. package/src/assets/fonts/google-ofl/bricolagegrotesque/OFL.txt +0 -93
  45. package/src/assets/fonts/google-ofl/cabin/Cabin[wdth,wght].ttf +0 -0
  46. package/src/assets/fonts/google-ofl/cabin/DESCRIPTION.en_us.html +0 -16
  47. package/src/assets/fonts/google-ofl/cabin/METADATA.pb +0 -40
  48. package/src/assets/fonts/google-ofl/cabin/OFL.txt +0 -93
  49. package/src/assets/fonts/google-ofl/cairo/Cairo[slnt,wght].ttf +0 -0
  50. package/src/assets/fonts/google-ofl/cairo/DESCRIPTION.en_us.html +0 -13
  51. package/src/assets/fonts/google-ofl/cairo/METADATA.pb +0 -44
  52. package/src/assets/fonts/google-ofl/cairo/OFL.txt +0 -93
  53. package/src/assets/fonts/google-ofl/caveat/Caveat[wght].ttf +0 -0
  54. package/src/assets/fonts/google-ofl/caveat/DESCRIPTION.en_us.html +0 -15
  55. package/src/assets/fonts/google-ofl/caveat/METADATA.pb +0 -44
  56. package/src/assets/fonts/google-ofl/caveat/OFL.txt +0 -93
  57. package/src/assets/fonts/google-ofl/comfortaa/Comfortaa[wght].ttf +0 -0
  58. package/src/assets/fonts/google-ofl/comfortaa/DESCRIPTION.en_us.html +0 -1
  59. package/src/assets/fonts/google-ofl/comfortaa/METADATA.pb +0 -31
  60. package/src/assets/fonts/google-ofl/comfortaa/OFL.txt +0 -93
  61. package/src/assets/fonts/google-ofl/cormorantgaramond/CormorantGaramond[wght].ttf +0 -0
  62. package/src/assets/fonts/google-ofl/cormorantgaramond/DESCRIPTION.en_us.html +0 -4
  63. package/src/assets/fonts/google-ofl/cormorantgaramond/METADATA.pb +0 -52
  64. package/src/assets/fonts/google-ofl/cormorantgaramond/OFL.txt +0 -93
  65. package/src/assets/fonts/google-ofl/dmsans/DESCRIPTION.en_us.html +0 -13
  66. package/src/assets/fonts/google-ofl/dmsans/DMSans[opsz,wght].ttf +0 -0
  67. package/src/assets/fonts/google-ofl/dmsans/METADATA.pb +0 -54
  68. package/src/assets/fonts/google-ofl/dmsans/OFL.txt +0 -93
  69. package/src/assets/fonts/google-ofl/dosis/DESCRIPTION.en_us.html +0 -3
  70. package/src/assets/fonts/google-ofl/dosis/Dosis[wght].ttf +0 -0
  71. package/src/assets/fonts/google-ofl/dosis/METADATA.pb +0 -39
  72. package/src/assets/fonts/google-ofl/dosis/OFL.txt +0 -93
  73. package/src/assets/fonts/google-ofl/ebgaramond/DESCRIPTION.en_us.html +0 -20
  74. package/src/assets/fonts/google-ofl/ebgaramond/EBGaramond[wght].ttf +0 -0
  75. package/src/assets/fonts/google-ofl/ebgaramond/METADATA.pb +0 -42
  76. package/src/assets/fonts/google-ofl/ebgaramond/OFL.txt +0 -93
  77. package/src/assets/fonts/google-ofl/exo2/DESCRIPTION.en_us.html +0 -5
  78. package/src/assets/fonts/google-ofl/exo2/Exo2[wght].ttf +0 -0
  79. package/src/assets/fonts/google-ofl/exo2/METADATA.pb +0 -52
  80. package/src/assets/fonts/google-ofl/exo2/OFL.txt +0 -93
  81. package/src/assets/fonts/google-ofl/firasans/DESCRIPTION.en_us.html +0 -11
  82. package/src/assets/fonts/google-ofl/firasans/FiraSans-Regular.ttf +0 -0
  83. package/src/assets/fonts/google-ofl/firasans/METADATA.pb +0 -178
  84. package/src/assets/fonts/google-ofl/firasans/OFL.txt +0 -93
  85. package/src/assets/fonts/google-ofl/fjallaone/DESCRIPTION.en_us.html +0 -8
  86. package/src/assets/fonts/google-ofl/fjallaone/FjallaOne-Regular.ttf +0 -0
  87. package/src/assets/fonts/google-ofl/fjallaone/METADATA.pb +0 -32
  88. package/src/assets/fonts/google-ofl/fjallaone/OFL.txt +0 -93
  89. package/src/assets/fonts/google-ofl/heebo/DESCRIPTION.en_us.html +0 -9
  90. package/src/assets/fonts/google-ofl/heebo/Heebo[wght].ttf +0 -0
  91. package/src/assets/fonts/google-ofl/heebo/METADATA.pb +0 -41
  92. package/src/assets/fonts/google-ofl/heebo/OFL.txt +0 -93
  93. package/src/assets/fonts/google-ofl/hind/DESCRIPTION.en_us.html +0 -28
  94. package/src/assets/fonts/google-ofl/hind/Hind-Regular.ttf +0 -0
  95. package/src/assets/fonts/google-ofl/hind/METADATA.pb +0 -58
  96. package/src/assets/fonts/google-ofl/hind/OFL.txt +0 -93
  97. package/src/assets/fonts/google-ofl/hindsiliguri/DESCRIPTION.en_us.html +0 -27
  98. package/src/assets/fonts/google-ofl/hindsiliguri/HindSiliguri-Regular.ttf +0 -0
  99. package/src/assets/fonts/google-ofl/hindsiliguri/METADATA.pb +0 -58
  100. package/src/assets/fonts/google-ofl/hindsiliguri/OFL.txt +0 -93
  101. package/src/assets/fonts/google-ofl/ibmplexsans/DESCRIPTION.en_us.html +0 -15
  102. package/src/assets/fonts/google-ofl/ibmplexsans/IBMPlexSans[wdth,wght].ttf +0 -0
  103. package/src/assets/fonts/google-ofl/ibmplexsans/METADATA.pb +0 -61
  104. package/src/assets/fonts/google-ofl/ibmplexsans/OFL.txt +0 -93
  105. package/src/assets/fonts/google-ofl/inconsolata/DESCRIPTION.en_us.html +0 -21
  106. package/src/assets/fonts/google-ofl/inconsolata/Inconsolata[wdth,wght].ttf +0 -0
  107. package/src/assets/fonts/google-ofl/inconsolata/METADATA.pb +0 -34
  108. package/src/assets/fonts/google-ofl/inconsolata/OFL.txt +0 -93
  109. package/src/assets/fonts/google-ofl/inter/DESCRIPTION.en_us.html +0 -14
  110. package/src/assets/fonts/google-ofl/inter/Inter[opsz,wght].ttf +0 -0
  111. package/src/assets/fonts/google-ofl/inter/METADATA.pb +0 -56
  112. package/src/assets/fonts/google-ofl/inter/OFL.txt +0 -93
  113. package/src/assets/fonts/google-ofl/intertight/DESCRIPTION.en_us.html +0 -4
  114. package/src/assets/fonts/google-ofl/intertight/InterTight[wght].ttf +0 -0
  115. package/src/assets/fonts/google-ofl/intertight/METADATA.pb +0 -56
  116. package/src/assets/fonts/google-ofl/intertight/OFL.txt +0 -93
  117. package/src/assets/fonts/google-ofl/jost/DESCRIPTION.en_us.html +0 -8
  118. package/src/assets/fonts/google-ofl/jost/Jost[wght].ttf +0 -0
  119. package/src/assets/fonts/google-ofl/jost/METADATA.pb +0 -46
  120. package/src/assets/fonts/google-ofl/jost/OFL.txt +0 -93
  121. package/src/assets/fonts/google-ofl/kanit/DESCRIPTION.en_us.html +0 -17
  122. package/src/assets/fonts/google-ofl/kanit/Kanit-Regular.ttf +0 -0
  123. package/src/assets/fonts/google-ofl/kanit/METADATA.pb +0 -177
  124. package/src/assets/fonts/google-ofl/kanit/OFL.txt +0 -93
  125. package/src/assets/fonts/google-ofl/lato/DESCRIPTION.en_us.html +0 -14
  126. package/src/assets/fonts/google-ofl/lato/Lato-Regular.ttf +0 -0
  127. package/src/assets/fonts/google-ofl/lato/METADATA.pb +0 -358
  128. package/src/assets/fonts/google-ofl/lato/OFL.txt +0 -93
  129. package/src/assets/fonts/google-ofl/lexend/DESCRIPTION.en_us.html +0 -27
  130. package/src/assets/fonts/google-ofl/lexend/Lexend[wght].ttf +0 -0
  131. package/src/assets/fonts/google-ofl/lexend/METADATA.pb +0 -38
  132. package/src/assets/fonts/google-ofl/lexend/OFL.txt +0 -93
  133. package/src/assets/fonts/google-ofl/librebaskerville/DESCRIPTION.en_us.html +0 -9
  134. package/src/assets/fonts/google-ofl/librebaskerville/LibreBaskerville[wght].ttf +0 -0
  135. package/src/assets/fonts/google-ofl/librebaskerville/METADATA.pb +0 -53
  136. package/src/assets/fonts/google-ofl/librebaskerville/OFL.txt +0 -93
  137. package/src/assets/fonts/google-ofl/librefranklin/DESCRIPTION.en_us.html +0 -7
  138. package/src/assets/fonts/google-ofl/librefranklin/LibreFranklin[wght].ttf +0 -0
  139. package/src/assets/fonts/google-ofl/librefranklin/METADATA.pb +0 -124
  140. package/src/assets/fonts/google-ofl/librefranklin/OFL.txt +0 -93
  141. package/src/assets/fonts/google-ofl/lobster/DESCRIPTION.en_us.html +0 -6
  142. package/src/assets/fonts/google-ofl/lobster/Lobster-Regular.ttf +0 -0
  143. package/src/assets/fonts/google-ofl/lobster/METADATA.pb +0 -25
  144. package/src/assets/fonts/google-ofl/lobster/OFL.txt +0 -93
  145. package/src/assets/fonts/google-ofl/lobstertwo/DESCRIPTION.en_us.html +0 -1
  146. package/src/assets/fonts/google-ofl/lobstertwo/LobsterTwo-Regular.ttf +0 -0
  147. package/src/assets/fonts/google-ofl/lobstertwo/METADATA.pb +0 -45
  148. package/src/assets/fonts/google-ofl/lobstertwo/OFL.txt +0 -95
  149. package/src/assets/fonts/google-ofl/lora/DESCRIPTION.en_us.html +0 -5
  150. package/src/assets/fonts/google-ofl/lora/Lora[wght].ttf +0 -0
  151. package/src/assets/fonts/google-ofl/lora/METADATA.pb +0 -55
  152. package/src/assets/fonts/google-ofl/lora/OFL.txt +0 -93
  153. package/src/assets/fonts/google-ofl/manrope/DESCRIPTION.en_us.html +0 -3
  154. package/src/assets/fonts/google-ofl/manrope/METADATA.pb +0 -29
  155. package/src/assets/fonts/google-ofl/manrope/Manrope[wght].ttf +0 -0
  156. package/src/assets/fonts/google-ofl/manrope/OFL.txt +0 -93
  157. package/src/assets/fonts/google-ofl/merriweather/DESCRIPTION.en_us.html +0 -11
  158. package/src/assets/fonts/google-ofl/merriweather/METADATA.pb +0 -291
  159. package/src/assets/fonts/google-ofl/merriweather/Merriweather[opsz,wdth,wght].ttf +0 -0
  160. package/src/assets/fonts/google-ofl/merriweather/OFL.txt +0 -93
  161. package/src/assets/fonts/google-ofl/montserrat/DESCRIPTION.en_us.html +0 -19
  162. package/src/assets/fonts/google-ofl/montserrat/METADATA.pb +0 -376
  163. package/src/assets/fonts/google-ofl/montserrat/Montserrat[wght].ttf +0 -0
  164. package/src/assets/fonts/google-ofl/montserrat/OFL.txt +0 -93
  165. package/src/assets/fonts/google-ofl/mplusrounded1c/METADATA.pb +0 -78
  166. package/src/assets/fonts/google-ofl/mplusrounded1c/MPLUSRounded1c-Regular.ttf +0 -0
  167. package/src/assets/fonts/google-ofl/mukta/DESCRIPTION.en_us.html +0 -20
  168. package/src/assets/fonts/google-ofl/mukta/METADATA.pb +0 -73
  169. package/src/assets/fonts/google-ofl/mukta/Mukta-Regular.ttf +0 -0
  170. package/src/assets/fonts/google-ofl/mukta/OFL.txt +0 -93
  171. package/src/assets/fonts/google-ofl/mulish/DESCRIPTION.en_us.html +0 -11
  172. package/src/assets/fonts/google-ofl/mulish/METADATA.pb +0 -56
  173. package/src/assets/fonts/google-ofl/mulish/Mulish[wght].ttf +0 -0
  174. package/src/assets/fonts/google-ofl/mulish/OFL.txt +0 -93
  175. package/src/assets/fonts/google-ofl/nanumgothic/DESCRIPTION.en_us.html +0 -5
  176. package/src/assets/fonts/google-ofl/nanumgothic/METADATA.pb +0 -36
  177. package/src/assets/fonts/google-ofl/nanumgothic/NanumGothic-Regular.ttf +0 -0
  178. package/src/assets/fonts/google-ofl/nanumgothic/OFL.txt +0 -96
  179. package/src/assets/fonts/google-ofl/notocoloremoji/DESCRIPTION.en_us.html +0 -10
  180. package/src/assets/fonts/google-ofl/notocoloremoji/METADATA.pb +0 -71
  181. package/src/assets/fonts/google-ofl/notocoloremoji/OFL.txt +0 -87
  182. package/src/assets/fonts/google-ofl/notosans/DESCRIPTION.en_us.html +0 -13
  183. package/src/assets/fonts/google-ofl/notosans/METADATA.pb +0 -924
  184. package/src/assets/fonts/google-ofl/notosans/NotoSans[wdth,wght].ttf +0 -0
  185. package/src/assets/fonts/google-ofl/notosans/OFL.txt +0 -93
  186. package/src/assets/fonts/google-ofl/notosansjp/DESCRIPTION.en_us.html +0 -7
  187. package/src/assets/fonts/google-ofl/notosansjp/METADATA.pb +0 -34
  188. package/src/assets/fonts/google-ofl/notosansjp/OFL.txt +0 -93
  189. package/src/assets/fonts/google-ofl/notosanskr/DESCRIPTION.en_us.html +0 -6
  190. package/src/assets/fonts/google-ofl/notosanskr/METADATA.pb +0 -29
  191. package/src/assets/fonts/google-ofl/notosanskr/OFL.txt +0 -93
  192. package/src/assets/fonts/google-ofl/notosanssc/DESCRIPTION.en_us.html +0 -8
  193. package/src/assets/fonts/google-ofl/notosanssc/METADATA.pb +0 -39
  194. package/src/assets/fonts/google-ofl/notosanssc/OFL.txt +0 -93
  195. package/src/assets/fonts/google-ofl/notosanstc/DESCRIPTION.en_us.html +0 -8
  196. package/src/assets/fonts/google-ofl/notosanstc/METADATA.pb +0 -39
  197. package/src/assets/fonts/google-ofl/notosanstc/OFL.txt +0 -93
  198. package/src/assets/fonts/google-ofl/notosanstelugu/DESCRIPTION.en_us.html +0 -6
  199. package/src/assets/fonts/google-ofl/notosanstelugu/METADATA.pb +0 -57
  200. package/src/assets/fonts/google-ofl/notosanstelugu/NotoSansTelugu[wdth,wght].ttf +0 -0
  201. package/src/assets/fonts/google-ofl/notosanstelugu/OFL.txt +0 -93
  202. package/src/assets/fonts/google-ofl/notoserif/DESCRIPTION.en_us.html +0 -7
  203. package/src/assets/fonts/google-ofl/notoserif/METADATA.pb +0 -845
  204. package/src/assets/fonts/google-ofl/notoserif/NotoSerif[wdth,wght].ttf +0 -0
  205. package/src/assets/fonts/google-ofl/notoserif/OFL.txt +0 -93
  206. package/src/assets/fonts/google-ofl/notoserifjp/DESCRIPTION.en_us.html +0 -7
  207. package/src/assets/fonts/google-ofl/notoserifjp/METADATA.pb +0 -43
  208. package/src/assets/fonts/google-ofl/notoserifjp/OFL.txt +0 -94
  209. package/src/assets/fonts/google-ofl/nunito/DESCRIPTION.en_us.html +0 -9
  210. package/src/assets/fonts/google-ofl/nunito/METADATA.pb +0 -52
  211. package/src/assets/fonts/google-ofl/nunito/Nunito[wght].ttf +0 -0
  212. package/src/assets/fonts/google-ofl/nunito/OFL.txt +0 -93
  213. package/src/assets/fonts/google-ofl/nunitosans/DESCRIPTION.en_us.html +0 -9
  214. package/src/assets/fonts/google-ofl/nunitosans/METADATA.pb +0 -71
  215. package/src/assets/fonts/google-ofl/nunitosans/NunitoSans[YTLC,opsz,wdth,wght].ttf +0 -0
  216. package/src/assets/fonts/google-ofl/nunitosans/OFL.txt +0 -93
  217. package/src/assets/fonts/google-ofl/opensans/DESCRIPTION.en_us.html +0 -12
  218. package/src/assets/fonts/google-ofl/opensans/METADATA.pb +0 -291
  219. package/src/assets/fonts/google-ofl/opensans/OFL.txt +0 -92
  220. package/src/assets/fonts/google-ofl/opensans/OpenSans[wdth,wght].ttf +0 -0
  221. package/src/assets/fonts/google-ofl/oswald/DESCRIPTION.en_us.html +0 -15
  222. package/src/assets/fonts/google-ofl/oswald/METADATA.pb +0 -255
  223. package/src/assets/fonts/google-ofl/oswald/OFL.txt +0 -93
  224. package/src/assets/fonts/google-ofl/oswald/Oswald[wght].ttf +0 -0
  225. package/src/assets/fonts/google-ofl/playfairdisplay/DESCRIPTION.en_us.html +0 -19
  226. package/src/assets/fonts/google-ofl/playfairdisplay/METADATA.pb +0 -40
  227. package/src/assets/fonts/google-ofl/playfairdisplay/OFL.txt +0 -93
  228. package/src/assets/fonts/google-ofl/playfairdisplay/PlayfairDisplay[wght].ttf +0 -0
  229. package/src/assets/fonts/google-ofl/plusjakartasans/DESCRIPTION.en_us.html +0 -30
  230. package/src/assets/fonts/google-ofl/plusjakartasans/METADATA.pb +0 -51
  231. package/src/assets/fonts/google-ofl/plusjakartasans/OFL.txt +0 -93
  232. package/src/assets/fonts/google-ofl/plusjakartasans/PlusJakartaSans[wght].ttf +0 -0
  233. package/src/assets/fonts/google-ofl/poppins/DESCRIPTION.en_us.html +0 -21
  234. package/src/assets/fonts/google-ofl/poppins/METADATA.pb +0 -176
  235. package/src/assets/fonts/google-ofl/poppins/OFL.txt +0 -93
  236. package/src/assets/fonts/google-ofl/poppins/Poppins-Regular.ttf +0 -0
  237. package/src/assets/fonts/google-ofl/prompt/DESCRIPTION.en_us.html +0 -15
  238. package/src/assets/fonts/google-ofl/prompt/METADATA.pb +0 -173
  239. package/src/assets/fonts/google-ofl/prompt/OFL.txt +0 -93
  240. package/src/assets/fonts/google-ofl/prompt/Prompt-Regular.ttf +0 -0
  241. package/src/assets/fonts/google-ofl/ptsans/DESCRIPTION.en_us.html +0 -1
  242. package/src/assets/fonts/google-ofl/ptsans/METADATA.pb +0 -46
  243. package/src/assets/fonts/google-ofl/ptsans/OFL.txt +0 -93
  244. package/src/assets/fonts/google-ofl/ptsans/PT_Sans-Web-Regular.ttf +0 -0
  245. package/src/assets/fonts/google-ofl/ptsansnarrow/DESCRIPTION.en_us.html +0 -1
  246. package/src/assets/fonts/google-ofl/ptsansnarrow/METADATA.pb +0 -28
  247. package/src/assets/fonts/google-ofl/ptsansnarrow/OFL.txt +0 -93
  248. package/src/assets/fonts/google-ofl/ptsansnarrow/PT_Sans-Narrow-Web-Regular.ttf +0 -0
  249. package/src/assets/fonts/google-ofl/ptserif/DESCRIPTION.en_us.html +0 -1
  250. package/src/assets/fonts/google-ofl/ptserif/METADATA.pb +0 -46
  251. package/src/assets/fonts/google-ofl/ptserif/OFL.txt +0 -93
  252. package/src/assets/fonts/google-ofl/ptserif/PT_Serif-Web-Regular.ttf +0 -0
  253. package/src/assets/fonts/google-ofl/quicksand/DESCRIPTION.en_us.html +0 -8
  254. package/src/assets/fonts/google-ofl/quicksand/METADATA.pb +0 -31
  255. package/src/assets/fonts/google-ofl/quicksand/OFL.txt +0 -93
  256. package/src/assets/fonts/google-ofl/quicksand/Quicksand[wght].ttf +0 -0
  257. package/src/assets/fonts/google-ofl/raleway/DESCRIPTION.en_us.html +0 -17
  258. package/src/assets/fonts/google-ofl/raleway/METADATA.pb +0 -38
  259. package/src/assets/fonts/google-ofl/raleway/OFL.txt +0 -93
  260. package/src/assets/fonts/google-ofl/raleway/Raleway[wght].ttf +0 -0
  261. package/src/assets/fonts/google-ofl/ramabhadra/DESCRIPTION.en_us.html +0 -12
  262. package/src/assets/fonts/google-ofl/ramabhadra/METADATA.pb +0 -18
  263. package/src/assets/fonts/google-ofl/ramabhadra/OFL.txt +0 -93
  264. package/src/assets/fonts/google-ofl/ramabhadra/Ramabhadra-Regular.ttf +0 -0
  265. package/src/assets/fonts/google-ofl/roboto/DESCRIPTION.en_us.html +0 -16
  266. package/src/assets/fonts/google-ofl/roboto/METADATA.pb +0 -57
  267. package/src/assets/fonts/google-ofl/roboto/OFL.txt +0 -93
  268. package/src/assets/fonts/google-ofl/roboto/Roboto[wdth,wght].ttf +0 -0
  269. package/src/assets/fonts/google-ofl/robotocondensed/DESCRIPTION.en_us.html +0 -7
  270. package/src/assets/fonts/google-ofl/robotocondensed/METADATA.pb +0 -49
  271. package/src/assets/fonts/google-ofl/robotocondensed/OFL.txt +0 -93
  272. package/src/assets/fonts/google-ofl/robotocondensed/RobotoCondensed[wght].ttf +0 -0
  273. package/src/assets/fonts/google-ofl/robotoflex/DESCRIPTION.en_us.html +0 -29
  274. package/src/assets/fonts/google-ofl/robotoflex/METADATA.pb +0 -125
  275. package/src/assets/fonts/google-ofl/robotoflex/OFL.txt +0 -93
  276. package/src/assets/fonts/google-ofl/robotoflex/RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf +0 -0
  277. package/src/assets/fonts/google-ofl/robotomono/DESCRIPTION.en_us.html +0 -17
  278. package/src/assets/fonts/google-ofl/robotomono/METADATA.pb +0 -53
  279. package/src/assets/fonts/google-ofl/robotomono/OFL.txt +0 -93
  280. package/src/assets/fonts/google-ofl/robotomono/RobotoMono[wght].ttf +0 -0
  281. package/src/assets/fonts/google-ofl/rubik/DESCRIPTION.en_us.html +0 -14
  282. package/src/assets/fonts/google-ofl/rubik/METADATA.pb +0 -53
  283. package/src/assets/fonts/google-ofl/rubik/OFL.txt +0 -93
  284. package/src/assets/fonts/google-ofl/rubik/Rubik[wght].ttf +0 -0
  285. package/src/assets/fonts/google-ofl/saira/DESCRIPTION.en_us.html +0 -18
  286. package/src/assets/fonts/google-ofl/saira/METADATA.pb +0 -57
  287. package/src/assets/fonts/google-ofl/saira/OFL.txt +0 -94
  288. package/src/assets/fonts/google-ofl/saira/Saira[wdth,wght].ttf +0 -0
  289. package/src/assets/fonts/google-ofl/schibstedgrotesk/DESCRIPTION.en_us.html +0 -5
  290. package/src/assets/fonts/google-ofl/schibstedgrotesk/METADATA.pb +0 -49
  291. package/src/assets/fonts/google-ofl/schibstedgrotesk/OFL.txt +0 -93
  292. package/src/assets/fonts/google-ofl/schibstedgrotesk/SchibstedGrotesk[wght].ttf +0 -0
  293. package/src/assets/fonts/google-ofl/sourcecodepro/DESCRIPTION.en_us.html +0 -8
  294. package/src/assets/fonts/google-ofl/sourcecodepro/METADATA.pb +0 -40
  295. package/src/assets/fonts/google-ofl/sourcecodepro/OFL.txt +0 -93
  296. package/src/assets/fonts/google-ofl/sourcecodepro/SourceCodePro[wght].ttf +0 -0
  297. package/src/assets/fonts/google-ofl/sourcesans3/DESCRIPTION.en_us.html +0 -3
  298. package/src/assets/fonts/google-ofl/sourcesans3/METADATA.pb +0 -36
  299. package/src/assets/fonts/google-ofl/sourcesans3/OFL.txt +0 -93
  300. package/src/assets/fonts/google-ofl/sourcesans3/SourceSans3[wght].ttf +0 -0
  301. package/src/assets/fonts/google-ofl/spacegrotesk/DESCRIPTION.en_us.html +0 -12
  302. package/src/assets/fonts/google-ofl/spacegrotesk/METADATA.pb +0 -56
  303. package/src/assets/fonts/google-ofl/spacegrotesk/OFL.txt +0 -93
  304. package/src/assets/fonts/google-ofl/spacegrotesk/SpaceGrotesk[wght].ttf +0 -0
  305. package/src/assets/fonts/google-ofl/worksans/DESCRIPTION.en_us.html +0 -22
  306. package/src/assets/fonts/google-ofl/worksans/METADATA.pb +0 -50
  307. package/src/assets/fonts/google-ofl/worksans/OFL.txt +0 -93
  308. package/src/assets/fonts/google-ofl/worksans/WorkSans[wght].ttf +0 -0
  309. package/src/assets/fonts/hack/Hack-Bold.ttf +0 -0
  310. package/src/assets/fonts/hack/Hack-BoldItalic.ttf +0 -0
  311. package/src/assets/fonts/hack/Hack-Italic.ttf +0 -0
  312. package/src/assets/fonts/hack/Hack-Regular.ttf +0 -0
  313. package/src/assets/fonts/ibm-plex/IBMPlexMono-Bold.ttf +0 -0
  314. package/src/assets/fonts/ibm-plex/IBMPlexMono-BoldItalic.ttf +0 -0
  315. package/src/assets/fonts/ibm-plex/IBMPlexMono-Italic.ttf +0 -0
  316. package/src/assets/fonts/ibm-plex/IBMPlexMono-Regular.ttf +0 -0
  317. package/src/assets/fonts/ibm-plex/IBMPlexSans-Bold.ttf +0 -0
  318. package/src/assets/fonts/ibm-plex/IBMPlexSans-BoldItalic.ttf +0 -0
  319. package/src/assets/fonts/ibm-plex/IBMPlexSans-Italic.ttf +0 -0
  320. package/src/assets/fonts/ibm-plex/IBMPlexSans-Regular.ttf +0 -0
  321. package/src/assets/fonts/ibm-plex/IBMPlexSansCondensed-Bold.ttf +0 -0
  322. package/src/assets/fonts/ibm-plex/IBMPlexSansCondensed-Regular.ttf +0 -0
  323. package/src/assets/fonts/ibm-plex/IBMPlexSerif-Bold.ttf +0 -0
  324. package/src/assets/fonts/ibm-plex/IBMPlexSerif-BoldItalic.ttf +0 -0
  325. package/src/assets/fonts/ibm-plex/IBMPlexSerif-Italic.ttf +0 -0
  326. package/src/assets/fonts/ibm-plex/IBMPlexSerif-Regular.ttf +0 -0
  327. package/src/assets/fonts/liberation/LiberationMono-Bold.ttf +0 -0
  328. package/src/assets/fonts/liberation/LiberationMono-BoldItalic.ttf +0 -0
  329. package/src/assets/fonts/liberation/LiberationMono-Italic.ttf +0 -0
  330. package/src/assets/fonts/liberation/LiberationMono-Regular.ttf +0 -0
  331. package/src/assets/fonts/liberation/LiberationSans-Bold.ttf +0 -0
  332. package/src/assets/fonts/liberation/LiberationSans-BoldItalic.ttf +0 -0
  333. package/src/assets/fonts/liberation/LiberationSans-Italic.ttf +0 -0
  334. package/src/assets/fonts/liberation/LiberationSans-Regular.ttf +0 -0
  335. package/src/assets/fonts/liberation/LiberationSerif-Bold.ttf +0 -0
  336. package/src/assets/fonts/liberation/LiberationSerif-BoldItalic.ttf +0 -0
  337. package/src/assets/fonts/liberation/LiberationSerif-Italic.ttf +0 -0
  338. package/src/assets/fonts/liberation/LiberationSerif-Regular.ttf +0 -0
  339. package/src/assets/fonts/libre-barcode/LibreBarcodeEAN13Text-Regular.ttf +0 -0
  340. package/src/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  341. package/src/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  342. package/src/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  343. package/src/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  344. package/src/assets/fonts/noto/NotoSansDisplay-Regular.ttf +0 -0
  345. package/src/assets/fonts/noto/NotoSansMono-Bold.ttf +0 -0
  346. package/src/assets/fonts/noto/NotoSansMono-Regular.ttf +0 -0
  347. package/src/assets/fonts/noto/NotoSerif-Bold.ttf +0 -0
  348. package/src/assets/fonts/noto/NotoSerif-BoldItalic.ttf +0 -0
  349. package/src/assets/fonts/noto/NotoSerif-Italic.ttf +0 -0
  350. package/src/assets/fonts/noto/NotoSerif-Regular.ttf +0 -0
  351. package/src/assets/fonts/noto/NotoSerifDisplay-Regular.ttf +0 -0
  352. package/src/assets/fonts/ubuntu/Ubuntu-B.ttf +0 -0
  353. package/src/assets/fonts/ubuntu/Ubuntu-BI.ttf +0 -0
  354. package/src/assets/fonts/ubuntu/Ubuntu-C.ttf +0 -0
  355. package/src/assets/fonts/ubuntu/Ubuntu-L.ttf +0 -0
  356. package/src/assets/fonts/ubuntu/Ubuntu-LI.ttf +0 -0
  357. package/src/assets/fonts/ubuntu/Ubuntu-M.ttf +0 -0
  358. package/src/assets/fonts/ubuntu/Ubuntu-MI.ttf +0 -0
  359. package/src/assets/fonts/ubuntu/Ubuntu-R.ttf +0 -0
  360. package/src/assets/fonts/ubuntu/Ubuntu-RI.ttf +0 -0
  361. package/src/assets/fonts/ubuntu/Ubuntu-Th.ttf +0 -0
  362. package/src/assets/fonts/ubuntu/UbuntuMono-B.ttf +0 -0
  363. package/src/assets/fonts/ubuntu/UbuntuMono-BI.ttf +0 -0
  364. package/src/assets/fonts/ubuntu/UbuntuMono-R.ttf +0 -0
  365. package/src/assets/fonts/ubuntu/UbuntuMono-RI.ttf +0 -0
package/src/main.js CHANGED
@@ -28,6 +28,7 @@ import {
28
28
  import { WorkspaceFileBrowserWidget } from './UI/WorkspaceFileBrowserWidget.js';
29
29
  import './UI/dialogs.js';
30
30
  import './styles/landing.css';
31
+ import brepHomeBannerSvg from './assets/brand/brep-home-banner.svg?raw';
31
32
 
32
33
  const MODEL_FILE_EXTENSION = '.3mf';
33
34
  const MANUAL_WORKSPACE_REPOS_KEY = '__BREP_WORKSPACE_MANUAL_REPOS__';
@@ -649,7 +650,7 @@ async function renderHome() {
649
650
  <div class="hub-bg hub-bg-two"></div>
650
651
  <header class="hub-header">
651
652
  <div class="hub-brand-wrap">
652
- <img class="hub-brand-banner" src="./brep-home-banner.svg" alt="BREP.io logo" />
653
+ <div class="hub-brand-banner" aria-label="BREP.io logo">${brepHomeBannerSvg}</div>
653
654
  </div>
654
655
  <div class="hub-header-actions">
655
656
  <a class="hub-link-btn" href="./help/developer-index.html" target="_blank" rel="noreferrer">Docs</a>
@@ -74,8 +74,13 @@ body {
74
74
  width: 100%;
75
75
  height: 100%;
76
76
  max-width: 100%;
77
- object-fit: contain;
78
- object-position: left center;
79
77
  pointer-events: none;
80
78
  user-select: none;
81
79
  }
80
+
81
+ .cad-sidebar-home-banner-img > svg {
82
+ display: block;
83
+ width: 100%;
84
+ height: 100%;
85
+ max-width: 100%;
86
+ }
@@ -124,11 +124,17 @@ body {
124
124
  .hub-brand-banner {
125
125
  display: block;
126
126
  width: min(760px, 100%);
127
- height: auto;
128
127
  max-width: 100%;
129
128
  filter: drop-shadow(0 5px 14px rgba(6, 14, 36, 0.26));
130
129
  }
131
130
 
131
+ .hub-brand-banner > svg {
132
+ display: block;
133
+ width: 100%;
134
+ height: auto;
135
+ max-width: 100%;
136
+ }
137
+
132
138
  .hub-eyebrow {
133
139
  font-family: var(--hub-mono-font);
134
140
  letter-spacing: .18em;
@@ -0,0 +1,354 @@
1
+ const SAMPLE_FOX = 'The quick brown fox jumps over the lazy dog';
2
+ const SAMPLE_DIGITS = '0123456789';
3
+
4
+ const FONT_URLS = import.meta.glob('../assets/fonts/**/*.{ttf,otf,woff,woff2,ttc}', {
5
+ eager: true,
6
+ query: '?url',
7
+ import: 'default',
8
+ });
9
+
10
+ const cssEscapeValue = (value) => String(value || '').replace(/\\/g, '\\\\').replace(/"/g, '\\"');
11
+
12
+ const extFromPath = (path) => {
13
+ const m = String(path || '').toLowerCase().match(/\.([^.]+)$/);
14
+ return m ? m[1] : '';
15
+ };
16
+
17
+ const formatHintFromExt = (path) => {
18
+ const ext = extFromPath(path);
19
+ if (ext === 'ttf') return 'truetype';
20
+ if (ext === 'otf') return 'opentype';
21
+ if (ext === 'woff') return 'woff';
22
+ if (ext === 'woff2') return 'woff2';
23
+ if (ext === 'ttc') return 'truetype';
24
+ return '';
25
+ };
26
+
27
+ const prettyNameFromPath = (relPath) => {
28
+ const base = String(relPath || '')
29
+ .split('/')
30
+ .pop() || '';
31
+ return base
32
+ .replace(/\.[^.]+$/, '')
33
+ .replace(/[_-]+/g, ' ')
34
+ .replace(/\s+/g, ' ')
35
+ .trim();
36
+ };
37
+
38
+ const normalizeRelPath = (key) => String(key || '').replace(/^..\/assets\/fonts\//, '').replace(/\\/g, '/');
39
+
40
+ const formatBytes = (bytes) => {
41
+ if (!Number.isFinite(bytes) || bytes < 0) return 'unknown';
42
+ if (bytes < 1024) return `${bytes} B`;
43
+ const kb = bytes / 1024;
44
+ if (kb < 1024) return `${kb.toFixed(1)} KB`;
45
+ const mb = kb / 1024;
46
+ return `${mb.toFixed(2)} MB`;
47
+ };
48
+
49
+ const compareByName = (a, b) => {
50
+ const byName = a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });
51
+ if (byName !== 0) return byName;
52
+ return a.relPath.localeCompare(b.relPath, undefined, { sensitivity: 'base' });
53
+ };
54
+
55
+ const compareBySize = (a, b, descending) => {
56
+ const aKnown = Number.isFinite(a.sizeBytes);
57
+ const bKnown = Number.isFinite(b.sizeBytes);
58
+
59
+ if (aKnown && bKnown) {
60
+ const diff = a.sizeBytes - b.sizeBytes;
61
+ if (diff !== 0) return descending ? -diff : diff;
62
+ }
63
+
64
+ if (aKnown !== bKnown) return aKnown ? -1 : 1;
65
+ return compareByName(a, b);
66
+ };
67
+
68
+ const sortEntriesInPlace = (entries, sortMode) => {
69
+ entries.sort((a, b) => {
70
+ if (sortMode === 'name-desc') return -compareByName(a, b);
71
+ if (sortMode === 'size-desc') return compareBySize(a, b, true);
72
+ if (sortMode === 'size-asc') return compareBySize(a, b, false);
73
+ return compareByName(a, b);
74
+ });
75
+ };
76
+
77
+ const fetchFontSizeBytes = async (url) => {
78
+ try {
79
+ const head = await fetch(url, { method: 'HEAD', cache: 'force-cache' });
80
+ if (head.ok) {
81
+ const len = Number(head.headers.get('content-length'));
82
+ if (Number.isFinite(len) && len > 0) return len;
83
+ }
84
+ } catch {
85
+ // Fall through to GET.
86
+ }
87
+
88
+ const res = await fetch(url, { cache: 'force-cache' });
89
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
90
+ const buf = await res.arrayBuffer();
91
+ return buf.byteLength;
92
+ };
93
+
94
+ const mapLimit = async (items, limit, mapper) => {
95
+ const maxWorkers = Math.max(1, Math.min(limit, items.length || 1));
96
+ let nextIndex = 0;
97
+ const workers = Array.from({ length: maxWorkers }, async () => {
98
+ while (true) {
99
+ const idx = nextIndex++;
100
+ if (idx >= items.length) break;
101
+ await mapper(items[idx], idx);
102
+ }
103
+ });
104
+ await Promise.all(workers);
105
+ };
106
+
107
+ const createFontEntries = () => {
108
+ const entries = Object.entries(FONT_URLS).map(([key, url], idx) => {
109
+ const relPath = normalizeRelPath(key);
110
+ return {
111
+ idx,
112
+ relPath,
113
+ url,
114
+ name: prettyNameFromPath(relPath),
115
+ sizeBytes: null,
116
+ sizeText: 'loading...',
117
+ familyName: `__font_audit_${idx}`,
118
+ rowEl: null,
119
+ checkboxEl: null,
120
+ sizeEl: null,
121
+ };
122
+ });
123
+ return entries;
124
+ };
125
+
126
+ const injectFontFaces = (entries) => {
127
+ const style = document.createElement('style');
128
+ const css = entries
129
+ .map((entry) => {
130
+ const family = cssEscapeValue(entry.familyName);
131
+ const url = cssEscapeValue(entry.url);
132
+ const format = formatHintFromExt(entry.relPath);
133
+ const formatPart = format ? ` format("${format}")` : '';
134
+ return `@font-face{font-family:"${family}";src:url("${url}")${formatPart};font-display:swap;}`;
135
+ })
136
+ .join('\n');
137
+ style.textContent = css;
138
+ document.head.appendChild(style);
139
+ };
140
+
141
+ const buildRow = (entry) => {
142
+ const row = document.createElement('article');
143
+ row.className = 'font-row';
144
+
145
+ const head = document.createElement('div');
146
+ head.className = 'font-row-head';
147
+
148
+ const checkbox = document.createElement('input');
149
+ checkbox.type = 'checkbox';
150
+ checkbox.checked = false;
151
+ checkbox.setAttribute('aria-label', `Select ${entry.name}`);
152
+ head.appendChild(checkbox);
153
+
154
+ const labelWrap = document.createElement('div');
155
+ const nameEl = document.createElement('div');
156
+ nameEl.className = 'font-row-name';
157
+ nameEl.textContent = entry.name || entry.relPath;
158
+ const metaEl = document.createElement('div');
159
+ metaEl.className = 'font-row-meta';
160
+ metaEl.textContent = entry.relPath;
161
+ labelWrap.appendChild(nameEl);
162
+ labelWrap.appendChild(metaEl);
163
+ head.appendChild(labelWrap);
164
+
165
+ const sizeEl = document.createElement('div');
166
+ sizeEl.className = 'font-row-size';
167
+ sizeEl.textContent = 'loading...';
168
+ head.appendChild(sizeEl);
169
+
170
+ row.appendChild(head);
171
+
172
+ const sample = document.createElement('div');
173
+ sample.className = 'font-sample';
174
+ sample.style.fontFamily = `"${entry.familyName}", ui-sans-serif, system-ui, sans-serif`;
175
+
176
+ const foxEl = document.createElement('div');
177
+ foxEl.className = 'font-sample-fox';
178
+ foxEl.textContent = SAMPLE_FOX;
179
+ sample.appendChild(foxEl);
180
+
181
+ const digitsEl = document.createElement('div');
182
+ digitsEl.className = 'font-sample-digits';
183
+ digitsEl.textContent = SAMPLE_DIGITS;
184
+ sample.appendChild(digitsEl);
185
+
186
+ row.appendChild(sample);
187
+
188
+ entry.rowEl = row;
189
+ entry.checkboxEl = checkbox;
190
+ entry.sizeEl = sizeEl;
191
+ return row;
192
+ };
193
+
194
+ const renderRows = (entries, listEl) => {
195
+ const frag = document.createDocumentFragment();
196
+ for (const entry of entries) {
197
+ if (entry.rowEl) frag.appendChild(entry.rowEl);
198
+ }
199
+ listEl.appendChild(frag);
200
+ };
201
+
202
+ const updateStatus = (entries, statusEl) => {
203
+ const selected = entries.filter((entry) => entry.checkboxEl?.checked).length;
204
+ const knownSizes = entries.filter((entry) => Number.isFinite(entry.sizeBytes));
205
+ const totalKnown = knownSizes.reduce((sum, entry) => sum + entry.sizeBytes, 0);
206
+ statusEl.textContent = `${entries.length} fonts • ${selected} selected • known size ${formatBytes(totalKnown)}`;
207
+ };
208
+
209
+ const applyVisibilityFilter = (entries, searchTerm, selectedOnly) => {
210
+ const query = String(searchTerm || '').trim().toLowerCase();
211
+ for (const entry of entries) {
212
+ const matchesQuery =
213
+ !query ||
214
+ entry.name.toLowerCase().includes(query) ||
215
+ entry.relPath.toLowerCase().includes(query);
216
+ const matchesSelected = !selectedOnly || !!entry.checkboxEl?.checked;
217
+ const visible = matchesQuery && matchesSelected;
218
+ entry.rowEl?.classList.toggle('hidden', !visible);
219
+ }
220
+ };
221
+
222
+ const buildSelectedListText = (entries) => {
223
+ const selected = entries.filter((entry) => entry.checkboxEl?.checked);
224
+ const knownTotal = selected.reduce(
225
+ (sum, entry) => sum + (Number.isFinite(entry.sizeBytes) ? entry.sizeBytes : 0),
226
+ 0
227
+ );
228
+
229
+ const lines = [];
230
+ lines.push(`Selected fonts: ${selected.length}`);
231
+ lines.push(`Known total size: ${formatBytes(knownTotal)}`);
232
+ lines.push('');
233
+ lines.push('Path\tSize');
234
+
235
+ for (const entry of selected) {
236
+ lines.push(`${entry.relPath}\t${formatBytes(entry.sizeBytes)}`);
237
+ }
238
+
239
+ return lines.join('\n');
240
+ };
241
+
242
+ const loadFontSizes = async (entries, statusEl) => {
243
+ let completed = 0;
244
+ await mapLimit(entries, 8, async (entry) => {
245
+ try {
246
+ entry.sizeBytes = await fetchFontSizeBytes(entry.url);
247
+ entry.sizeText = formatBytes(entry.sizeBytes);
248
+ } catch {
249
+ entry.sizeBytes = null;
250
+ entry.sizeText = 'size unavailable';
251
+ }
252
+ if (entry.sizeEl) entry.sizeEl.textContent = entry.sizeText;
253
+ completed += 1;
254
+ if (statusEl) {
255
+ statusEl.textContent = `Loading sizes... ${completed}/${entries.length}`;
256
+ }
257
+ });
258
+ };
259
+
260
+ const initFontAuditPage = () => {
261
+ const listEl = document.getElementById('font-list');
262
+ const statusEl = document.getElementById('font-audit-status');
263
+ const outputEl = document.getElementById('font-selection-output');
264
+ const selectAllBtn = document.getElementById('btn-select-all');
265
+ const clearAllBtn = document.getElementById('btn-clear-all');
266
+ const generateBtn = document.getElementById('btn-generate-list');
267
+ const copyBtn = document.getElementById('btn-copy-list');
268
+ const filterInput = document.getElementById('font-filter');
269
+ const sortInput = document.getElementById('font-sort');
270
+ const showSelectedOnlyInput = document.getElementById('show-selected-only');
271
+
272
+ if (!listEl || !statusEl || !outputEl || !selectAllBtn || !clearAllBtn || !generateBtn || !copyBtn || !filterInput || !sortInput || !showSelectedOnlyInput) {
273
+ return;
274
+ }
275
+
276
+ const entries = createFontEntries();
277
+ injectFontFaces(entries);
278
+
279
+ const refreshStatus = () => updateStatus(entries, statusEl);
280
+ const refreshFilter = () =>
281
+ applyVisibilityFilter(entries, filterInput.value, !!showSelectedOnlyInput.checked);
282
+ const refreshSort = () => {
283
+ sortEntriesInPlace(entries, sortInput.value || 'name-asc');
284
+ renderRows(entries, listEl);
285
+ };
286
+
287
+ for (const entry of entries) {
288
+ const row = buildRow(entry);
289
+ listEl.appendChild(row);
290
+ entry.checkboxEl?.addEventListener('change', () => {
291
+ refreshStatus();
292
+ refreshFilter();
293
+ });
294
+ }
295
+
296
+ selectAllBtn.addEventListener('click', () => {
297
+ for (const entry of entries) {
298
+ if (entry.checkboxEl) entry.checkboxEl.checked = true;
299
+ }
300
+ refreshStatus();
301
+ refreshFilter();
302
+ });
303
+
304
+ clearAllBtn.addEventListener('click', () => {
305
+ for (const entry of entries) {
306
+ if (entry.checkboxEl) entry.checkboxEl.checked = false;
307
+ }
308
+ refreshStatus();
309
+ refreshFilter();
310
+ });
311
+
312
+ generateBtn.addEventListener('click', () => {
313
+ outputEl.value = buildSelectedListText(entries);
314
+ });
315
+
316
+ copyBtn.addEventListener('click', async () => {
317
+ const text = outputEl.value || '';
318
+ if (!text.trim()) return;
319
+ try {
320
+ await navigator.clipboard.writeText(text);
321
+ copyBtn.textContent = 'Copied';
322
+ window.setTimeout(() => {
323
+ copyBtn.textContent = 'Copy List';
324
+ }, 1000);
325
+ } catch {
326
+ copyBtn.textContent = 'Copy Failed';
327
+ window.setTimeout(() => {
328
+ copyBtn.textContent = 'Copy List';
329
+ }, 1200);
330
+ }
331
+ });
332
+
333
+ filterInput.addEventListener('input', refreshFilter);
334
+ showSelectedOnlyInput.addEventListener('change', refreshFilter);
335
+ sortInput.addEventListener('change', () => {
336
+ refreshSort();
337
+ refreshFilter();
338
+ });
339
+
340
+ refreshSort();
341
+ refreshStatus();
342
+ refreshFilter();
343
+
344
+ loadFontSizes(entries, statusEl)
345
+ .catch(() => {
346
+ statusEl.textContent = 'Loaded fonts with partial size info.';
347
+ })
348
+ .finally(() => {
349
+ refreshSort();
350
+ refreshStatus();
351
+ });
352
+ };
353
+
354
+ initFontAuditPage();
@@ -1,23 +0,0 @@
1
- <p> Anek, as the meaning of the word suggests, is an exercise in multiplicity — multiple scripts designed in multiple
2
- weights and widths by multiple designers. A well-informed, conscientious and refreshing interpretation of India’s
3
- letter traditions, this family offers a versatile system that can meet the demands of a wide range of applications.
4
- </p>
5
-
6
- <p> Its expansive design space allows Anek to don multiple personalities. At its most condensed, capsular forms keep
7
- structures compact for that graphic texture. On the wide end of the spectrum, the extra legroom lets each letter
8
- yawn and stretch into their message. But it is in the boldest weights that Anek comes alive. Sharp terminals and
9
- tapered joineries sparkle amidst regimented forms, making this ideal for setting titillating headlines or that
10
- magnetic word-mark.</p>
11
-
12
- <p> Anek comes in <a href="/?query=Anek">ten scripts</a>: Bangla, Devanagari, Kannada, Latin, Gujarati, Gurmukhi,
13
- Malayalam, Odia, Tamil and Telugu. The shared aesthetics of this type-family are drawn from a collaboratively
14
- decided pool of visual features. At the same time, each script amalgamates influences from its own typographic
15
- culture as well as the perspectives of individual designers. </p>
16
-
17
- <p> This project is designed, engineered and maintained by Ek Type; a collective of type designers based in Mumbai
18
- focused on designing contemporary Indian typefaces. Contributors of this project are: Maithili Shingre (Anek
19
- Malayalam, Anek Kannada), Yesha Goshar (Anek Latin, Anek Odia), Kailash Malviya (Anek Devanagari), Aadarsh Rajan
20
- (Anek Tamil), Sulekha Rajkumar (Anek Bangla), Vaishnavi Murthy (Anek Kannada), Omkar Bhoir (Anek Telugu), Mrunmayee
21
- Ghaisas (Anek Gujarati), Mahesh Sahu (Anek Odia), and Sarang Kulkarni (Anek Gurmukhi). Project management and design
22
- assistance by Noopur Datye, and Font engineering and design assistance by Girish Dalvi.</p>
23
- <p> To contribute, see <a href="https://github.com/EkType/Anek/">github.com/EkType/Anek</a></p>
@@ -1,47 +0,0 @@
1
- name: "Anek Telugu"
2
- designer: "Ek Type"
3
- license: "OFL"
4
- category: "SANS_SERIF"
5
- date_added: "2022-02-16"
6
- fonts {
7
- name: "Anek Telugu"
8
- style: "normal"
9
- weight: 400
10
- filename: "AnekTelugu[wdth,wght].ttf"
11
- post_script_name: "AnekTelugu-Medium"
12
- full_name: "Anek Telugu Medium"
13
- copyright: "Copyright 2021 The Anek Project Authors (https://github.com/EkType/Anek)"
14
- }
15
- subsets: "latin"
16
- subsets: "latin-ext"
17
- subsets: "menu"
18
- subsets: "telugu"
19
- axes {
20
- tag: "wdth"
21
- min_value: 75.0
22
- max_value: 125.0
23
- }
24
- axes {
25
- tag: "wght"
26
- min_value: 100.0
27
- max_value: 800.0
28
- }
29
- source {
30
- repository_url: "https://github.com/EkType/Anek"
31
- commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
32
- config_yaml: "sources/AnekTelugu/builder.yaml"
33
- files {
34
- source_file: "OFL.txt"
35
- dest_file: "OFL.txt"
36
- }
37
- files {
38
- source_file: "fonts/AnekTelugu/variable/AnekTelugu[wdth,wght].ttf"
39
- dest_file: "AnekTelugu[wdth,wght].ttf"
40
- }
41
- files {
42
- source_file: "DESCRIPTION.en_us.html"
43
- dest_file: "DESCRIPTION.en_us.html"
44
- }
45
- branch: "main"
46
- }
47
- primary_script: "Telu"
@@ -1,93 +0,0 @@
1
- Copyright 2021 The Anek Project Authors (https://github.com/EkType/Anek)
2
-
3
- This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
- This license is copied below, and is also available with a FAQ at:
5
- http://scripts.sil.org/OFL
6
-
7
-
8
- -----------------------------------------------------------
9
- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
- -----------------------------------------------------------
11
-
12
- PREAMBLE
13
- The goals of the Open Font License (OFL) are to stimulate worldwide
14
- development of collaborative font projects, to support the font creation
15
- efforts of academic and linguistic communities, and to provide a free and
16
- open framework in which fonts may be shared and improved in partnership
17
- with others.
18
-
19
- The OFL allows the licensed fonts to be used, studied, modified and
20
- redistributed freely as long as they are not sold by themselves. The
21
- fonts, including any derivative works, can be bundled, embedded,
22
- redistributed and/or sold with any software provided that any reserved
23
- names are not used by derivative works. The fonts and derivatives,
24
- however, cannot be released under any other type of license. The
25
- requirement for fonts to remain under this license does not apply
26
- to any document created using the fonts or their derivatives.
27
-
28
- DEFINITIONS
29
- "Font Software" refers to the set of files released by the Copyright
30
- Holder(s) under this license and clearly marked as such. This may
31
- include source files, build scripts and documentation.
32
-
33
- "Reserved Font Name" refers to any names specified as such after the
34
- copyright statement(s).
35
-
36
- "Original Version" refers to the collection of Font Software components as
37
- distributed by the Copyright Holder(s).
38
-
39
- "Modified Version" refers to any derivative made by adding to, deleting,
40
- or substituting -- in part or in whole -- any of the components of the
41
- Original Version, by changing formats or by porting the Font Software to a
42
- new environment.
43
-
44
- "Author" refers to any designer, engineer, programmer, technical
45
- writer or other person who contributed to the Font Software.
46
-
47
- PERMISSION & CONDITIONS
48
- Permission is hereby granted, free of charge, to any person obtaining
49
- a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
- redistribute, and sell modified and unmodified copies of the Font
51
- Software, subject to the following conditions:
52
-
53
- 1) Neither the Font Software nor any of its individual components,
54
- in Original or Modified Versions, may be sold by itself.
55
-
56
- 2) Original or Modified Versions of the Font Software may be bundled,
57
- redistributed and/or sold with any software, provided that each copy
58
- contains the above copyright notice and this license. These can be
59
- included either as stand-alone text files, human-readable headers or
60
- in the appropriate machine-readable metadata fields within text or
61
- binary files as long as those fields can be easily viewed by the user.
62
-
63
- 3) No Modified Version of the Font Software may use the Reserved Font
64
- Name(s) unless explicit written permission is granted by the corresponding
65
- Copyright Holder. This restriction only applies to the primary font name as
66
- presented to the users.
67
-
68
- 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
- Software shall not be used to promote, endorse or advertise any
70
- Modified Version, except to acknowledge the contribution(s) of the
71
- Copyright Holder(s) and the Author(s) or with their explicit written
72
- permission.
73
-
74
- 5) The Font Software, modified or unmodified, in part or in whole,
75
- must be distributed entirely under this license, and must not be
76
- distributed under any other license. The requirement for fonts to
77
- remain under this license does not apply to any document created
78
- using the Font Software.
79
-
80
- TERMINATION
81
- This license becomes null and void if any of the above conditions are
82
- not met.
83
-
84
- DISCLAIMER
85
- THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
- OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
- COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
- INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
- DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
- FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
- OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -1,12 +0,0 @@
1
- <p>
2
- Anton is a reworking of a traditional advertising sans serif typeface. The
3
- letter forms have been digitised and then reshaped for use as a webfont, the
4
- counters have been opened up a little and the stems optimised for use as bold
5
- display font in modern web browsers.
6
- </p>
7
- <p>
8
- Anton language support includes now African Latin and full coverage of Vietnamese, additional to all Western, Central, and South-Eastern European languages.
9
- </p>
10
- <p>
11
- To contribute see <a href="https://github.com/googlefonts/AntonFont" target="_blank">github.com/googlefonts/AntonFont</a>.
12
- </p>
@@ -1,38 +0,0 @@
1
- name: "Anton"
2
- designer: "Vernon Adams"
3
- license: "OFL"
4
- category: "DISPLAY"
5
- date_added: "2011-02-23"
6
- fonts {
7
- name: "Anton"
8
- style: "normal"
9
- weight: 400
10
- filename: "Anton-Regular.ttf"
11
- post_script_name: "Anton-Regular"
12
- full_name: "Anton Regular"
13
- copyright: "Copyright 2020 The Anton Project Authors (https://github.com/googlefonts/AntonFont.git)"
14
- }
15
- subsets: "latin"
16
- subsets: "latin-ext"
17
- subsets: "menu"
18
- subsets: "vietnamese"
19
- source {
20
- repository_url: "https://github.com/googlefonts/AntonFont"
21
- commit: "beb92fcad87808357123bb66881b4032dc96efe7"
22
- files {
23
- source_file: "OFL.txt"
24
- dest_file: "OFL.txt"
25
- }
26
- files {
27
- source_file: "DESCRIPTION.en_us.html"
28
- dest_file: "DESCRIPTION.en_us.html"
29
- }
30
- files {
31
- source_file: "fonts/Anton-Regular.ttf"
32
- dest_file: "Anton-Regular.ttf"
33
- }
34
- branch: "master"
35
- config_yaml: "sources/config.yaml"
36
- }
37
- stroke: "SANS_SERIF"
38
- classifications: "DISPLAY"