font8x8/latin.rs
1//! Extended Latin. `U+00A0 - U+00FF`
2use super::{
3 legacy::LATIN_LEGACY,
4 unicode::{FontUnicode, UnicodeFonts},
5};
6use core::fmt;
7
8/// A constant `[FontUnicode; 96]`, for Extended Latin fonts (`U+00A0` - `U+00FF`).
9pub const LATIN_UNICODE: [FontUnicode; 96] = [
10 FontUnicode('\u{00A0}', LATIN_LEGACY[0]),
11 FontUnicode('\u{00A1}', LATIN_LEGACY[1]),
12 FontUnicode('\u{00A2}', LATIN_LEGACY[2]),
13 FontUnicode('\u{00A3}', LATIN_LEGACY[3]),
14 FontUnicode('\u{00A4}', LATIN_LEGACY[4]),
15 FontUnicode('\u{00A5}', LATIN_LEGACY[5]),
16 FontUnicode('\u{00A6}', LATIN_LEGACY[6]),
17 FontUnicode('\u{00A7}', LATIN_LEGACY[7]),
18 FontUnicode('\u{00A8}', LATIN_LEGACY[8]),
19 FontUnicode('\u{00A9}', LATIN_LEGACY[9]),
20 FontUnicode('\u{00AA}', LATIN_LEGACY[10]),
21 FontUnicode('\u{00AB}', LATIN_LEGACY[11]),
22 FontUnicode('\u{00AC}', LATIN_LEGACY[12]),
23 FontUnicode('\u{00AD}', LATIN_LEGACY[13]),
24 FontUnicode('\u{00AE}', LATIN_LEGACY[14]),
25 FontUnicode('\u{00AF}', LATIN_LEGACY[15]),
26 FontUnicode('\u{00B0}', LATIN_LEGACY[16]),
27 FontUnicode('\u{00B1}', LATIN_LEGACY[17]),
28 FontUnicode('\u{00B2}', LATIN_LEGACY[18]),
29 FontUnicode('\u{00B2}', LATIN_LEGACY[19]),
30 FontUnicode('\u{00B2}', LATIN_LEGACY[20]),
31 FontUnicode('\u{00B5}', LATIN_LEGACY[21]),
32 FontUnicode('\u{00B6}', LATIN_LEGACY[22]),
33 FontUnicode('\u{00B7}', LATIN_LEGACY[23]),
34 FontUnicode('\u{00B8}', LATIN_LEGACY[24]),
35 FontUnicode('\u{00B9}', LATIN_LEGACY[25]),
36 FontUnicode('\u{00BA}', LATIN_LEGACY[26]),
37 FontUnicode('\u{00BB}', LATIN_LEGACY[27]),
38 FontUnicode('\u{00BC}', LATIN_LEGACY[28]),
39 FontUnicode('\u{00BD}', LATIN_LEGACY[29]),
40 FontUnicode('\u{00BE}', LATIN_LEGACY[30]),
41 FontUnicode('\u{00BF}', LATIN_LEGACY[31]),
42 FontUnicode('\u{00C0}', LATIN_LEGACY[32]),
43 FontUnicode('\u{00C1}', LATIN_LEGACY[33]),
44 FontUnicode('\u{00C2}', LATIN_LEGACY[34]),
45 FontUnicode('\u{00C3}', LATIN_LEGACY[35]),
46 FontUnicode('\u{00C4}', LATIN_LEGACY[36]),
47 FontUnicode('\u{00C5}', LATIN_LEGACY[37]),
48 FontUnicode('\u{00C6}', LATIN_LEGACY[38]),
49 FontUnicode('\u{00C7}', LATIN_LEGACY[39]),
50 FontUnicode('\u{00C8}', LATIN_LEGACY[40]),
51 FontUnicode('\u{00C9}', LATIN_LEGACY[41]),
52 FontUnicode('\u{00CA}', LATIN_LEGACY[42]),
53 FontUnicode('\u{00CB}', LATIN_LEGACY[43]),
54 FontUnicode('\u{00CC}', LATIN_LEGACY[44]),
55 FontUnicode('\u{00CD}', LATIN_LEGACY[45]),
56 FontUnicode('\u{00CE}', LATIN_LEGACY[46]),
57 FontUnicode('\u{00CF}', LATIN_LEGACY[47]),
58 FontUnicode('\u{00D0}', LATIN_LEGACY[48]),
59 FontUnicode('\u{00D1}', LATIN_LEGACY[49]),
60 FontUnicode('\u{00D2}', LATIN_LEGACY[50]),
61 FontUnicode('\u{00D3}', LATIN_LEGACY[51]),
62 FontUnicode('\u{00D4}', LATIN_LEGACY[52]),
63 FontUnicode('\u{00D5}', LATIN_LEGACY[53]),
64 FontUnicode('\u{00D6}', LATIN_LEGACY[54]),
65 FontUnicode('\u{00D7}', LATIN_LEGACY[55]),
66 FontUnicode('\u{00D8}', LATIN_LEGACY[56]),
67 FontUnicode('\u{00D9}', LATIN_LEGACY[57]),
68 FontUnicode('\u{00DA}', LATIN_LEGACY[58]),
69 FontUnicode('\u{00DB}', LATIN_LEGACY[59]),
70 FontUnicode('\u{00DC}', LATIN_LEGACY[60]),
71 FontUnicode('\u{00DD}', LATIN_LEGACY[61]),
72 FontUnicode('\u{00DE}', LATIN_LEGACY[62]),
73 FontUnicode('\u{00DF}', LATIN_LEGACY[63]),
74 FontUnicode('\u{00E0}', LATIN_LEGACY[64]),
75 FontUnicode('\u{00E1}', LATIN_LEGACY[65]),
76 FontUnicode('\u{00E2}', LATIN_LEGACY[66]),
77 FontUnicode('\u{00E3}', LATIN_LEGACY[67]),
78 FontUnicode('\u{00E4}', LATIN_LEGACY[68]),
79 FontUnicode('\u{00E5}', LATIN_LEGACY[69]),
80 FontUnicode('\u{00E6}', LATIN_LEGACY[70]),
81 FontUnicode('\u{00E7}', LATIN_LEGACY[71]),
82 FontUnicode('\u{00E8}', LATIN_LEGACY[72]),
83 FontUnicode('\u{00E9}', LATIN_LEGACY[73]),
84 FontUnicode('\u{00EA}', LATIN_LEGACY[74]),
85 FontUnicode('\u{00EB}', LATIN_LEGACY[75]),
86 FontUnicode('\u{00EC}', LATIN_LEGACY[76]),
87 FontUnicode('\u{00ED}', LATIN_LEGACY[77]),
88 FontUnicode('\u{00EE}', LATIN_LEGACY[78]),
89 FontUnicode('\u{00EF}', LATIN_LEGACY[79]),
90 FontUnicode('\u{00F0}', LATIN_LEGACY[80]),
91 FontUnicode('\u{00F1}', LATIN_LEGACY[81]),
92 FontUnicode('\u{00F2}', LATIN_LEGACY[82]),
93 FontUnicode('\u{00F3}', LATIN_LEGACY[83]),
94 FontUnicode('\u{00F4}', LATIN_LEGACY[84]),
95 FontUnicode('\u{00F5}', LATIN_LEGACY[85]),
96 FontUnicode('\u{00F6}', LATIN_LEGACY[86]),
97 FontUnicode('\u{00F7}', LATIN_LEGACY[87]),
98 FontUnicode('\u{00F8}', LATIN_LEGACY[88]),
99 FontUnicode('\u{00F9}', LATIN_LEGACY[89]),
100 FontUnicode('\u{00FA}', LATIN_LEGACY[90]),
101 FontUnicode('\u{00FB}', LATIN_LEGACY[91]),
102 FontUnicode('\u{00FC}', LATIN_LEGACY[92]),
103 FontUnicode('\u{00FD}', LATIN_LEGACY[93]),
104 FontUnicode('\u{00FE}', LATIN_LEGACY[94]),
105 FontUnicode('\u{00FF}', LATIN_LEGACY[95]),
106];
107
108/// A convenient constant for Extended Latin fonts (`U+00A0` - `U+00FF`), that implements the `UnicodeFonts` trait.
109///
110/// ## `LATIN_UNICODE[0]: U+00A0` `WHITESPACE`
111/// ## `LATIN_UNICODE[1]: U+00A1`
112/// `"¡"`
113///
114/// ```text
115/// ░░░██░░░
116/// ░░░██░░░
117/// ░░░░░░░░
118/// ░░░██░░░
119/// ░░░██░░░
120/// ░░░██░░░
121/// ░░░██░░░
122/// ░░░░░░░░
123/// ```
124///
125/// ## `LATIN_UNICODE[2]: U+00A2`
126/// `"¢"`
127///
128/// ```text
129/// ░░░██░░░
130/// ░░░██░░░
131/// ░██████░
132/// ██░░░░░░
133/// ██░░░░░░
134/// ░██████░
135/// ░░░██░░░
136/// ░░░██░░░
137/// ```
138///
139/// ## `LATIN_UNICODE[3]: U+00A3`
140/// `"£"`
141///
142/// ```text
143/// ░░███░░░
144/// ░██░██░░
145/// ░██░░█░░
146/// ████░░░░
147/// ░██░░░░░
148/// ███░░██░
149/// ██████░░
150/// ░░░░░░░░
151/// ```
152///
153/// ## `LATIN_UNICODE[4]: U+00A4`
154/// `"¤"`
155///
156/// ```text
157/// ░░░░░░░░
158/// ░░░░░░░░
159/// ██░░░██░
160/// ░█████░░
161/// ░██░██░░
162/// ░█████░░
163/// ██░░░██░
164/// ░░░░░░░░
165/// ```
166///
167/// ## `LATIN_UNICODE[5]: U+00A5`
168/// `"¥"`
169///
170/// ```text
171/// ██░░██░░
172/// ██░░██░░
173/// ░████░░░
174/// ██████░░
175/// ░░██░░░░
176/// ██████░░
177/// ░░██░░░░
178/// ░░██░░░░
179/// ```
180///
181/// ## `LATIN_UNICODE[6]: U+00A6`
182/// `"¦"`
183///
184/// ```text
185/// ░░░██░░░
186/// ░░░██░░░
187/// ░░░██░░░
188/// ░░░░░░░░
189/// ░░░██░░░
190/// ░░░██░░░
191/// ░░░██░░░
192/// ░░░░░░░░
193/// ```
194///
195/// ## `LATIN_UNICODE[7]: U+00A7`
196/// `"§"`
197///
198/// ```text
199/// ░░█████░
200/// ░██░░░██
201/// ░░███░░░
202/// ░██░██░░
203/// ░██░██░░
204/// ░░███░░░
205/// ██░░██░░
206/// ░████░░░
207/// ```
208///
209/// ## `LATIN_UNICODE[8]: U+00A8`
210/// `"¨"`
211///
212/// ```text
213/// ██░░██░░
214/// ░░░░░░░░
215/// ░░░░░░░░
216/// ░░░░░░░░
217/// ░░░░░░░░
218/// ░░░░░░░░
219/// ░░░░░░░░
220/// ░░░░░░░░
221/// ```
222///
223/// ## `LATIN_UNICODE[9]: U+00A9`
224/// `"©"`
225///
226/// ```text
227/// ░░████░░
228/// ░█░░░░█░
229/// █░░██░░█
230/// █░█░░░░█
231/// █░█░░░░█
232/// █░░██░░█
233/// ░█░░░░█░
234/// ░░████░░
235/// ```
236///
237/// ## `LATIN_UNICODE[10]: U+00AA`
238/// `"ª"`
239///
240/// ```text
241/// ░░████░░
242/// ░██░██░░
243/// ░██░██░░
244/// ░░█████░
245/// ░░░░░░░░
246/// ░░░░░░░░
247/// ░░░░░░░░
248/// ░░░░░░░░
249/// ```
250///
251/// ## `LATIN_UNICODE[11]: U+00AB`
252/// `"«"`
253///
254/// ```text
255/// ░░░░░░░░
256/// ░░██░░██
257/// ░██░░██░
258/// ██░░██░░
259/// ░██░░██░
260/// ░░██░░██
261/// ░░░░░░░░
262/// ░░░░░░░░
263/// ```
264///
265/// ## `LATIN_UNICODE[12]: U+00AC`
266/// `"¬"`
267///
268/// ```text
269/// ░░░░░░░░
270/// ░░░░░░░░
271/// ░░░░░░░░
272/// ██████░░
273/// ░░░░██░░
274/// ░░░░██░░
275/// ░░░░░░░░
276/// ░░░░░░░░
277/// ```
278///
279/// ## `LATIN_UNICODE[13]: U+00AD` `WHITESPACE`
280/// ## `LATIN_UNICODE[14]: U+00AE`
281/// `"®"`
282///
283/// ```text
284/// ░░████░░
285/// ░█░░░░█░
286/// █░███░░█
287/// █░█░░█░█
288/// █░███░░█
289/// █░█░░█░█
290/// ░█░░░░█░
291/// ░░████░░
292/// ```
293///
294/// ## `LATIN_UNICODE[15]: U+00AF`
295/// `"¯"`
296///
297/// ```text
298/// ░██████░
299/// ░░░░░░░░
300/// ░░░░░░░░
301/// ░░░░░░░░
302/// ░░░░░░░░
303/// ░░░░░░░░
304/// ░░░░░░░░
305/// ░░░░░░░░
306/// ```
307///
308/// ## `LATIN_UNICODE[16]: U+00B0`
309/// `"°"`
310///
311/// ```text
312/// ░░███░░░
313/// ░██░██░░
314/// ░██░██░░
315/// ░░███░░░
316/// ░░░░░░░░
317/// ░░░░░░░░
318/// ░░░░░░░░
319/// ░░░░░░░░
320/// ```
321///
322/// ## `LATIN_UNICODE[17]: U+00B1`
323/// `"±"`
324///
325/// ```text
326/// ░░░██░░░
327/// ░░░██░░░
328/// ░██████░
329/// ░░░██░░░
330/// ░░░██░░░
331/// ░░░░░░░░
332/// ░██████░
333/// ░░░░░░░░
334/// ```
335///
336/// ## `LATIN_UNICODE[18]: U+00B2`
337/// `"²"`
338///
339/// ```text
340/// ░░███░░░
341/// ░░░░██░░
342/// ░░░██░░░
343/// ░░██░░░░
344/// ░░████░░
345/// ░░░░░░░░
346/// ░░░░░░░░
347/// ░░░░░░░░
348/// ```
349///
350/// ## `LATIN_UNICODE[19]: U+00B2`
351/// `"²"`
352///
353/// ```text
354/// ░░███░░░
355/// ░░░░██░░
356/// ░░░██░░░
357/// ░░░░██░░
358/// ░░███░░░
359/// ░░░░░░░░
360/// ░░░░░░░░
361/// ░░░░░░░░
362/// ```
363///
364/// ## `LATIN_UNICODE[20]: U+00B2`
365/// `"²"`
366///
367/// ```text
368/// ░░░██░░░
369/// ░░██░░░░
370/// ░░░░░░░░
371/// ░░░░░░░░
372/// ░░░░░░░░
373/// ░░░░░░░░
374/// ░░░░░░░░
375/// ░░░░░░░░
376/// ```
377///
378/// ## `LATIN_UNICODE[21]: U+00B5`
379/// `"µ"`
380///
381/// ```text
382/// ░░░░░░░░
383/// ░░░░░░░░
384/// ░██░░██░
385/// ░██░░██░
386/// ░██░░██░
387/// ░█████░░
388/// ░██░░░░░
389/// ██░░░░░░
390/// ```
391///
392/// ## `LATIN_UNICODE[22]: U+00B6`
393/// `"¶"`
394///
395/// ```text
396/// ░███████
397/// ██░██░██
398/// ██░██░██
399/// ░████░██
400/// ░░░██░██
401/// ░░░██░██
402/// ░░░██░██
403/// ░░░░░░░░
404/// ```
405///
406/// ## `LATIN_UNICODE[23]: U+00B7`
407/// `"·"`
408///
409/// ```text
410/// ░░░░░░░░
411/// ░░░░░░░░
412/// ░░░░░░░░
413/// ░░░██░░░
414/// ░░░██░░░
415/// ░░░░░░░░
416/// ░░░░░░░░
417/// ░░░░░░░░
418/// ```
419///
420/// ## `LATIN_UNICODE[24]: U+00B8`
421/// `"¸"`
422///
423/// ```text
424/// ░░░░░░░░
425/// ░░░░░░░░
426/// ░░░░░░░░
427/// ░░░░░░░░
428/// ░░░░░░░░
429/// ░░░██░░░
430/// ░░░░██░░
431/// ░████░░░
432/// ```
433///
434/// ## `LATIN_UNICODE[25]: U+00B9`
435/// `"¹"`
436///
437/// ```text
438/// ░░░█░░░░
439/// ░░██░░░░
440/// ░░░█░░░░
441/// ░░███░░░
442/// ░░░░░░░░
443/// ░░░░░░░░
444/// ░░░░░░░░
445/// ░░░░░░░░
446/// ```
447///
448/// ## `LATIN_UNICODE[26]: U+00BA`
449/// `"º"`
450///
451/// ```text
452/// ░░███░░░
453/// ░██░██░░
454/// ░██░██░░
455/// ░░███░░░
456/// ░░░░░░░░
457/// ░░░░░░░░
458/// ░░░░░░░░
459/// ░░░░░░░░
460/// ```
461///
462/// ## `LATIN_UNICODE[27]: U+00BB`
463/// `"»"`
464///
465/// ```text
466/// ░░░░░░░░
467/// ██░░██░░
468/// ░██░░██░
469/// ░░██░░██
470/// ░██░░██░
471/// ██░░██░░
472/// ░░░░░░░░
473/// ░░░░░░░░
474/// ```
475///
476/// ## `LATIN_UNICODE[28]: U+00BC`
477/// `"¼"`
478///
479/// ```text
480/// ██░░░░██
481/// ██░░░██░
482/// ██░░██░░
483/// █░████░█
484/// ░░██░███
485/// ░██░████
486/// ██░░████
487/// ██░░░░░░
488/// ```
489///
490/// ## `LATIN_UNICODE[29]: U+00BD`
491/// `"½"`
492///
493/// ```text
494/// ██░░░░██
495/// ██░░░██░
496/// ██░░██░░
497/// ██░████░
498/// ░░██░░██
499/// ░██░░██░
500/// ██░░██░░
501/// ░░░░████
502/// ```
503///
504/// ## `LATIN_UNICODE[30]: U+00BE`
505/// `"¾"`
506///
507/// ```text
508/// ██░░░░░░
509/// ░░█░░░██
510/// ██░░░██░
511/// ░░█░██░█
512/// ██░██░██
513/// ░░██░█░█
514/// ░██░░███
515/// ░░░░░░░█
516/// ```
517///
518/// ## `LATIN_UNICODE[31]: U+00BF`
519/// `"¿"`
520///
521/// ```text
522/// ░░██░░░░
523/// ░░░░░░░░
524/// ░░██░░░░
525/// ░██░░░░░
526/// ██░░░░░░
527/// ██░░██░░
528/// ░████░░░
529/// ░░░░░░░░
530/// ```
531///
532/// ## `LATIN_UNICODE[32]: U+00C0`
533/// `"À"`
534///
535/// ```text
536/// ███░░░░░
537/// ░░░░░░░░
538/// ░░███░░░
539/// ░██░██░░
540/// ██░░░██░
541/// ███████░
542/// ██░░░██░
543/// ░░░░░░░░
544/// ```
545///
546/// ## `LATIN_UNICODE[33]: U+00C1`
547/// `"Á"`
548///
549/// ```text
550/// ░░░░███░
551/// ░░░░░░░░
552/// ░░███░░░
553/// ░██░██░░
554/// ██░░░██░
555/// ███████░
556/// ██░░░██░
557/// ░░░░░░░░
558/// ```
559///
560/// ## `LATIN_UNICODE[34]: U+00C2`
561/// `"Â"`
562///
563/// ```text
564/// ░░███░░░
565/// ░██░██░░
566/// ░░░░░░░░
567/// ░█████░░
568/// ██░░░██░
569/// ███████░
570/// ██░░░██░
571/// ░░░░░░░░
572/// ```
573///
574/// ## `LATIN_UNICODE[35]: U+00C3`
575/// `"Ã"`
576///
577/// ```text
578/// ░███░██░
579/// ██░███░░
580/// ░░░░░░░░
581/// ░█████░░
582/// ██░░░██░
583/// ███████░
584/// ██░░░██░
585/// ░░░░░░░░
586/// ```
587///
588/// ## `LATIN_UNICODE[36]: U+00C4`
589/// `"Ä"`
590///
591/// ```text
592/// ██░░░██░
593/// ░░███░░░
594/// ░██░██░░
595/// ██░░░██░
596/// ███████░
597/// ██░░░██░
598/// ██░░░██░
599/// ░░░░░░░░
600/// ```
601///
602/// ## `LATIN_UNICODE[37]: U+00C5`
603/// `"Å"`
604///
605/// ```text
606/// ░░██░░░░
607/// ░░██░░░░
608/// ░░░░░░░░
609/// ░████░░░
610/// ██░░██░░
611/// ██████░░
612/// ██░░██░░
613/// ░░░░░░░░
614/// ```
615///
616/// ## `LATIN_UNICODE[38]: U+00C6`
617/// `"Æ"`
618///
619/// ```text
620/// ░░█████░
621/// ░██░██░░
622/// ██░░██░░
623/// ███████░
624/// ██░░██░░
625/// ██░░██░░
626/// ██░░███░
627/// ░░░░░░░░
628/// ```
629///
630/// ## `LATIN_UNICODE[39]: U+00C7`
631/// `"Ç"`
632///
633/// ```text
634/// ░████░░░
635/// ██░░██░░
636/// ██░░░░░░
637/// ██░░██░░
638/// ░████░░░
639/// ░░░██░░░
640/// ░░░░██░░
641/// ░████░░░
642/// ```
643///
644/// ## `LATIN_UNICODE[40]: U+00C8`
645/// `"È"`
646///
647/// ```text
648/// ███░░░░░
649/// ░░░░░░░░
650/// ██████░░
651/// ░██░░░░░
652/// ░████░░░
653/// ░██░░░░░
654/// ██████░░
655/// ░░░░░░░░
656/// ```
657///
658/// ## `LATIN_UNICODE[41]: U+00C9`
659/// `"É"`
660///
661/// ```text
662/// ░░░███░░
663/// ░░░░░░░░
664/// ██████░░
665/// ░██░░░░░
666/// ░████░░░
667/// ░██░░░░░
668/// ██████░░
669/// ░░░░░░░░
670/// ```
671///
672/// ## `LATIN_UNICODE[42]: U+00CA`
673/// `"Ê"`
674///
675/// ```text
676/// ░░██░░░░
677/// ░█░░█░░░
678/// ██████░░
679/// ░██░░░░░
680/// ░████░░░
681/// ░██░░░░░
682/// ██████░░
683/// ░░░░░░░░
684/// ```
685///
686/// ## `LATIN_UNICODE[43]: U+00CB`
687/// `"Ë"`
688///
689/// ```text
690/// ░██░██░░
691/// ░░░░░░░░
692/// ██████░░
693/// ░██░░░░░
694/// ░████░░░
695/// ░██░░░░░
696/// ██████░░
697/// ░░░░░░░░
698/// ```
699///
700/// ## `LATIN_UNICODE[44]: U+00CC`
701/// `"Ì"`
702///
703/// ```text
704/// ███░░░░░
705/// ░░░░░░░░
706/// ░████░░░
707/// ░░██░░░░
708/// ░░██░░░░
709/// ░░██░░░░
710/// ░████░░░
711/// ░░░░░░░░
712/// ```
713///
714/// ## `LATIN_UNICODE[45]: U+00CD`
715/// `"Í"`
716///
717/// ```text
718/// ░░░███░░
719/// ░░░░░░░░
720/// ░████░░░
721/// ░░██░░░░
722/// ░░██░░░░
723/// ░░██░░░░
724/// ░████░░░
725/// ░░░░░░░░
726/// ```
727///
728/// ## `LATIN_UNICODE[46]: U+00CE`
729/// `"Î"`
730///
731/// ```text
732/// ░░██░░░░
733/// ░█░░█░░░
734/// ░░░░░░░░
735/// ░████░░░
736/// ░░██░░░░
737/// ░░██░░░░
738/// ░████░░░
739/// ░░░░░░░░
740/// ```
741///
742/// ## `LATIN_UNICODE[47]: U+00CF`
743/// `"Ï"`
744///
745/// ```text
746/// ██░░██░░
747/// ░░░░░░░░
748/// ░████░░░
749/// ░░██░░░░
750/// ░░██░░░░
751/// ░░██░░░░
752/// ░████░░░
753/// ░░░░░░░░
754/// ```
755///
756/// ## `LATIN_UNICODE[48]: U+00D0`
757/// `"Ð"`
758///
759/// ```text
760/// ██████░░
761/// ░██░░██░
762/// ████░██░
763/// ████░██░
764/// ░██░░██░
765/// ░██░░██░
766/// ██████░░
767/// ░░░░░░░░
768/// ```
769///
770/// ## `LATIN_UNICODE[49]: U+00D1`
771/// `"Ñ"`
772///
773/// ```text
774/// ██████░░
775/// ░░░░░░░░
776/// ██░░██░░
777/// ███░██░░
778/// ██████░░
779/// ██░███░░
780/// ██░░██░░
781/// ░░░░░░░░
782/// ```
783///
784/// ## `LATIN_UNICODE[50]: U+00D2`
785/// `"Ò"`
786///
787/// ```text
788/// ░███░░░░
789/// ░░░░░░░░
790/// ░░░██░░░
791/// ░░████░░
792/// ░██░░██░
793/// ░░████░░
794/// ░░░██░░░
795/// ░░░░░░░░
796/// ```
797///
798/// ## `LATIN_UNICODE[51]: U+00D3`
799/// `"Ó"`
800///
801/// ```text
802/// ░░░░███░
803/// ░░░░░░░░
804/// ░░░██░░░
805/// ░░████░░
806/// ░██░░██░
807/// ░░████░░
808/// ░░░██░░░
809/// ░░░░░░░░
810/// ```
811///
812/// ## `LATIN_UNICODE[52]: U+00D4`
813/// `"Ô"`
814///
815/// ```text
816/// ░░████░░
817/// ░██░░██░
818/// ░░░██░░░
819/// ░░████░░
820/// ░██░░██░
821/// ░░████░░
822/// ░░░██░░░
823/// ░░░░░░░░
824/// ```
825///
826/// ## `LATIN_UNICODE[53]: U+00D5`
827/// `"Õ"`
828///
829/// ```text
830/// ░███░██░
831/// ██░███░░
832/// ░░░░░░░░
833/// ░█████░░
834/// ██░░░██░
835/// ██░░░██░
836/// ░█████░░
837/// ░░░░░░░░
838/// ```
839///
840/// ## `LATIN_UNICODE[54]: U+00D6`
841/// `"Ö"`
842///
843/// ```text
844/// ██░░░░██
845/// ░░░██░░░
846/// ░░████░░
847/// ░██░░██░
848/// ░██░░██░
849/// ░░████░░
850/// ░░░██░░░
851/// ░░░░░░░░
852/// ```
853///
854/// ## `LATIN_UNICODE[55]: U+00D7`
855/// `"×"`
856///
857/// ```text
858/// ░░░░░░░░
859/// ░██░██░░
860/// ░░███░░░
861/// ░░░█░░░░
862/// ░░███░░░
863/// ░██░██░░
864/// ░░░░░░░░
865/// ░░░░░░░░
866/// ```
867///
868/// ## `LATIN_UNICODE[56]: U+00D8`
869/// `"Ø"`
870///
871/// ```text
872/// ░░███░█░
873/// ░██░██░░
874/// ██░░███░
875/// ██░████░
876/// ████░██░
877/// ░██░██░░
878/// █░███░░░
879/// ░░░░░░░░
880/// ```
881///
882/// ## `LATIN_UNICODE[57]: U+00D9`
883/// `"Ù"`
884///
885/// ```text
886/// ░███░░░░
887/// ░░░░░░░░
888/// ░██░░██░
889/// ░██░░██░
890/// ░██░░██░
891/// ░██░░██░
892/// ░░████░░
893/// ░░░░░░░░
894/// ```
895///
896/// ## `LATIN_UNICODE[58]: U+00DA`
897/// `"Ú"`
898///
899/// ```text
900/// ░░░░███░
901/// ░░░░░░░░
902/// ░██░░██░
903/// ░██░░██░
904/// ░██░░██░
905/// ░██░░██░
906/// ░░████░░
907/// ░░░░░░░░
908/// ```
909///
910/// ## `LATIN_UNICODE[59]: U+00DB`
911/// `"Û"`
912///
913/// ```text
914/// ░░████░░
915/// ░██░░██░
916/// ░░░░░░░░
917/// ░██░░██░
918/// ░██░░██░
919/// ░██░░██░
920/// ░░████░░
921/// ░░░░░░░░
922/// ```
923///
924/// ## `LATIN_UNICODE[60]: U+00DC`
925/// `"Ü"`
926///
927/// ```text
928/// ██░░██░░
929/// ░░░░░░░░
930/// ██░░██░░
931/// ██░░██░░
932/// ██░░██░░
933/// ██░░██░░
934/// ░████░░░
935/// ░░░░░░░░
936/// ```
937///
938/// ## `LATIN_UNICODE[61]: U+00DD`
939/// `"Ý"`
940///
941/// ```text
942/// ░░░░███░
943/// ░░░░░░░░
944/// ░██░░██░
945/// ░██░░██░
946/// ░░████░░
947/// ░░░██░░░
948/// ░░░██░░░
949/// ░░░░░░░░
950/// ```
951///
952/// ## `LATIN_UNICODE[62]: U+00DE`
953/// `"Þ"`
954///
955/// ```text
956/// ████░░░░
957/// ░██░░░░░
958/// ░█████░░
959/// ░██░░██░
960/// ░██░░██░
961/// ░█████░░
962/// ░██░░░░░
963/// ████░░░░
964/// ```
965///
966/// ## `LATIN_UNICODE[63]: U+00DF`
967/// `"ß"`
968///
969/// ```text
970/// ░░░░░░░░
971/// ░████░░░
972/// ██░░██░░
973/// █████░░░
974/// ██░░██░░
975/// █████░░░
976/// ██░░░░░░
977/// ██░░░░░░
978/// ```
979///
980/// ## `LATIN_UNICODE[64]: U+00E0`
981/// `"à"`
982///
983/// ```text
984/// ███░░░░░
985/// ░░░░░░░░
986/// ░████░░░
987/// ░░░░██░░
988/// ░█████░░
989/// ██░░██░░
990/// ░██████░
991/// ░░░░░░░░
992/// ```
993///
994/// ## `LATIN_UNICODE[65]: U+00E1`
995/// `"á"`
996///
997/// ```text
998/// ░░░███░░
999/// ░░░░░░░░
1000/// ░████░░░
1001/// ░░░░██░░
1002/// ░█████░░
1003/// ██░░██░░
1004/// ░██████░
1005/// ░░░░░░░░
1006/// ```
1007///
1008/// ## `LATIN_UNICODE[66]: U+00E2`
1009/// `"â"`
1010///
1011/// ```text
1012/// ░██████░
1013/// ██░░░░██
1014/// ░░████░░
1015/// ░░░░░██░
1016/// ░░█████░
1017/// ░██░░██░
1018/// ░░██████
1019/// ░░░░░░░░
1020/// ```
1021///
1022/// ## `LATIN_UNICODE[67]: U+00E3`
1023/// `"ã"`
1024///
1025/// ```text
1026/// ░███░██░
1027/// ██░███░░
1028/// ░████░░░
1029/// ░░░░██░░
1030/// ░█████░░
1031/// ██░░██░░
1032/// ░██████░
1033/// ░░░░░░░░
1034/// ```
1035///
1036/// ## `LATIN_UNICODE[68]: U+00E4`
1037/// `"ä"`
1038///
1039/// ```text
1040/// ██░░██░░
1041/// ░░░░░░░░
1042/// ░████░░░
1043/// ░░░░██░░
1044/// ░█████░░
1045/// ██░░██░░
1046/// ░██████░
1047/// ░░░░░░░░
1048/// ```
1049///
1050/// ## `LATIN_UNICODE[69]: U+00E5`
1051/// `"å"`
1052///
1053/// ```text
1054/// ░░██░░░░
1055/// ░░██░░░░
1056/// ░████░░░
1057/// ░░░░██░░
1058/// ░█████░░
1059/// ██░░██░░
1060/// ░██████░
1061/// ░░░░░░░░
1062/// ```
1063///
1064/// ## `LATIN_UNICODE[70]: U+00E6`
1065/// `"æ"`
1066///
1067/// ```text
1068/// ░░░░░░░░
1069/// ░░░░░░░░
1070/// ░███████
1071/// ░░░░██░░
1072/// ░███████
1073/// ██░░██░░
1074/// ░███████
1075/// ░░░░░░░░
1076/// ```
1077///
1078/// ## `LATIN_UNICODE[71]: U+00E7`
1079/// `"ç"`
1080///
1081/// ```text
1082/// ░░░░░░░░
1083/// ░░░░░░░░
1084/// ░████░░░
1085/// ██░░░░░░
1086/// ██░░░░░░
1087/// ░████░░░
1088/// ░░░░██░░
1089/// ░░███░░░
1090/// ```
1091///
1092/// ## `LATIN_UNICODE[72]: U+00E8`
1093/// `"è"`
1094///
1095/// ```text
1096/// ███░░░░░
1097/// ░░░░░░░░
1098/// ░████░░░
1099/// ██░░██░░
1100/// ██████░░
1101/// ██░░░░░░
1102/// ░████░░░
1103/// ░░░░░░░░
1104/// ```
1105///
1106/// ## `LATIN_UNICODE[73]: U+00E9`
1107/// `"é"`
1108///
1109/// ```text
1110/// ░░░███░░
1111/// ░░░░░░░░
1112/// ░████░░░
1113/// ██░░██░░
1114/// ██████░░
1115/// ██░░░░░░
1116/// ░████░░░
1117/// ░░░░░░░░
1118/// ```
1119///
1120/// ## `LATIN_UNICODE[74]: U+00EA`
1121/// `"ê"`
1122///
1123/// ```text
1124/// ░██████░
1125/// ██░░░░██
1126/// ░░████░░
1127/// ░██░░██░
1128/// ░██████░
1129/// ░██░░░░░
1130/// ░░████░░
1131/// ░░░░░░░░
1132/// ```
1133///
1134/// ## `LATIN_UNICODE[75]: U+00EB`
1135/// `"ë"`
1136///
1137/// ```text
1138/// ██░░██░░
1139/// ░░░░░░░░
1140/// ░████░░░
1141/// ██░░██░░
1142/// ██████░░
1143/// ██░░░░░░
1144/// ░████░░░
1145/// ░░░░░░░░
1146/// ```
1147///
1148/// ## `LATIN_UNICODE[76]: U+00EC`
1149/// `"ì"`
1150///
1151/// ```text
1152/// ███░░░░░
1153/// ░░░░░░░░
1154/// ░███░░░░
1155/// ░░██░░░░
1156/// ░░██░░░░
1157/// ░░██░░░░
1158/// ░████░░░
1159/// ░░░░░░░░
1160/// ```
1161///
1162/// ## `LATIN_UNICODE[77]: U+00ED`
1163/// `"í"`
1164///
1165/// ```text
1166/// ░░███░░░
1167/// ░░░░░░░░
1168/// ░███░░░░
1169/// ░░██░░░░
1170/// ░░██░░░░
1171/// ░░██░░░░
1172/// ░████░░░
1173/// ░░░░░░░░
1174/// ```
1175///
1176/// ## `LATIN_UNICODE[78]: U+00EE`
1177/// `"î"`
1178///
1179/// ```text
1180/// ░█████░░
1181/// ██░░░██░
1182/// ░░███░░░
1183/// ░░░██░░░
1184/// ░░░██░░░
1185/// ░░░██░░░
1186/// ░░████░░
1187/// ░░░░░░░░
1188/// ```
1189///
1190/// ## `LATIN_UNICODE[79]: U+00EF`
1191/// `"ï"`
1192///
1193/// ```text
1194/// ██░░██░░
1195/// ░░░░░░░░
1196/// ░███░░░░
1197/// ░░██░░░░
1198/// ░░██░░░░
1199/// ░░██░░░░
1200/// ░████░░░
1201/// ░░░░░░░░
1202/// ```
1203///
1204/// ## `LATIN_UNICODE[80]: U+00F0`
1205/// `"ð"`
1206///
1207/// ```text
1208/// ██░██░░░
1209/// ░███░░░░
1210/// ██░██░░░
1211/// ░░░░██░░
1212/// ░█████░░
1213/// ██░░██░░
1214/// ░████░░░
1215/// ░░░░░░░░
1216/// ```
1217///
1218/// ## `LATIN_UNICODE[81]: U+00F1`
1219/// `"ñ"`
1220///
1221/// ```text
1222/// ░░░░░░░░
1223/// █████░░░
1224/// ░░░░░░░░
1225/// █████░░░
1226/// ██░░██░░
1227/// ██░░██░░
1228/// ██░░██░░
1229/// ░░░░░░░░
1230/// ```
1231///
1232/// ## `LATIN_UNICODE[82]: U+00F2`
1233/// `"ò"`
1234///
1235/// ```text
1236/// ░░░░░░░░
1237/// ███░░░░░
1238/// ░░░░░░░░
1239/// ░████░░░
1240/// ██░░██░░
1241/// ██░░██░░
1242/// ░████░░░
1243/// ░░░░░░░░
1244/// ```
1245///
1246/// ## `LATIN_UNICODE[83]: U+00F3`
1247/// `"ó"`
1248///
1249/// ```text
1250/// ░░░░░░░░
1251/// ░░░███░░
1252/// ░░░░░░░░
1253/// ░████░░░
1254/// ██░░██░░
1255/// ██░░██░░
1256/// ░████░░░
1257/// ░░░░░░░░
1258/// ```
1259///
1260/// ## `LATIN_UNICODE[84]: U+00F4`
1261/// `"ô"`
1262///
1263/// ```text
1264/// ░████░░░
1265/// ██░░██░░
1266/// ░░░░░░░░
1267/// ░████░░░
1268/// ██░░██░░
1269/// ██░░██░░
1270/// ░████░░░
1271/// ░░░░░░░░
1272/// ```
1273///
1274/// ## `LATIN_UNICODE[85]: U+00F5`
1275/// `"õ"`
1276///
1277/// ```text
1278/// ░███░██░
1279/// ██░███░░
1280/// ░░░░░░░░
1281/// ░████░░░
1282/// ██░░██░░
1283/// ██░░██░░
1284/// ░████░░░
1285/// ░░░░░░░░
1286/// ```
1287///
1288/// ## `LATIN_UNICODE[86]: U+00F6`
1289/// `"ö"`
1290///
1291/// ```text
1292/// ░░░░░░░░
1293/// ██░░██░░
1294/// ░░░░░░░░
1295/// ░████░░░
1296/// ██░░██░░
1297/// ██░░██░░
1298/// ░████░░░
1299/// ░░░░░░░░
1300/// ```
1301///
1302/// ## `LATIN_UNICODE[87]: U+00F7`
1303/// `"÷"`
1304///
1305/// ```text
1306/// ░░░██░░░
1307/// ░░░██░░░
1308/// ░░░░░░░░
1309/// ░██████░
1310/// ░░░░░░░░
1311/// ░░░██░░░
1312/// ░░░██░░░
1313/// ░░░░░░░░
1314/// ```
1315///
1316/// ## `LATIN_UNICODE[88]: U+00F8`
1317/// `"ø"`
1318///
1319/// ```text
1320/// ░░░░░░░░
1321/// ░░░░░██░
1322/// ░░████░░
1323/// ░██░███░
1324/// ░██████░
1325/// ░███░██░
1326/// ░░████░░
1327/// ░██░░░░░
1328/// ```
1329///
1330/// ## `LATIN_UNICODE[89]: U+00F9`
1331/// `"ù"`
1332///
1333/// ```text
1334/// ░░░░░░░░
1335/// ███░░░░░
1336/// ░░░░░░░░
1337/// ██░░██░░
1338/// ██░░██░░
1339/// ██░░██░░
1340/// ░██████░
1341/// ░░░░░░░░
1342/// ```
1343///
1344/// ## `LATIN_UNICODE[90]: U+00FA`
1345/// `"ú"`
1346///
1347/// ```text
1348/// ░░░░░░░░
1349/// ░░░███░░
1350/// ░░░░░░░░
1351/// ██░░██░░
1352/// ██░░██░░
1353/// ██░░██░░
1354/// ░██████░
1355/// ░░░░░░░░
1356/// ```
1357///
1358/// ## `LATIN_UNICODE[91]: U+00FB`
1359/// `"û"`
1360///
1361/// ```text
1362/// ░████░░░
1363/// ██░░██░░
1364/// ░░░░░░░░
1365/// ██░░██░░
1366/// ██░░██░░
1367/// ██░░██░░
1368/// ░██████░
1369/// ░░░░░░░░
1370/// ```
1371///
1372/// ## `LATIN_UNICODE[92]: U+00FC`
1373/// `"ü"`
1374///
1375/// ```text
1376/// ░░░░░░░░
1377/// ██░░██░░
1378/// ░░░░░░░░
1379/// ██░░██░░
1380/// ██░░██░░
1381/// ██░░██░░
1382/// ░██████░
1383/// ░░░░░░░░
1384/// ```
1385///
1386/// ## `LATIN_UNICODE[93]: U+00FD`
1387/// `"ý"`
1388///
1389/// ```text
1390/// ░░░░░░░░
1391/// ░░░███░░
1392/// ░░░░░░░░
1393/// ██░░██░░
1394/// ██░░██░░
1395/// ░█████░░
1396/// ░░░░██░░
1397/// █████░░░
1398/// ```
1399///
1400/// ## `LATIN_UNICODE[94]: U+00FE`
1401/// `"þ"`
1402///
1403/// ```text
1404/// ░░░░░░░░
1405/// ░░░░░░░░
1406/// ░██░░░░░
1407/// ░█████░░
1408/// ░██░░██░
1409/// ░█████░░
1410/// ░██░░░░░
1411/// ░░░░░░░░
1412/// ```
1413///
1414/// ## `LATIN_UNICODE[95]: U+00FF`
1415/// `"ÿ"`
1416///
1417/// ```text
1418/// ░░░░░░░░
1419/// ██░░██░░
1420/// ░░░░░░░░
1421/// ██░░██░░
1422/// ██░░██░░
1423/// ░█████░░
1424/// ░░░░██░░
1425/// █████░░░
1426/// ```
1427pub const LATIN_FONTS: LatinFonts = LatinFonts(LATIN_UNICODE);
1428
1429/// Strong-typed collection wrapper for [LATIN_UNICODE](./constant.LATIN_UNICODE.html).
1430pub struct LatinFonts([FontUnicode; 96]);
1431
1432impl LatinFonts {
1433 pub fn new() -> Self {
1434 LatinFonts(LATIN_UNICODE)
1435 }
1436}
1437
1438impl fmt::Debug for LatinFonts {
1439 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1440 write!(f, stringify!(LATIN_UNICODE))
1441 }
1442}
1443
1444impl PartialEq for LatinFonts {
1445 fn eq(&self, other: &LatinFonts) -> bool {
1446 self.0
1447 .iter()
1448 .zip(other.0.iter())
1449 .fold(true, |eq, (a, b)| eq && a == b)
1450 }
1451}
1452
1453impl Default for LatinFonts {
1454 fn default() -> Self {
1455 LatinFonts::new()
1456 }
1457}
1458
1459impl UnicodeFonts for LatinFonts {
1460 fn get(&self, key: char) -> Option<[u8; 8]> {
1461 match self.get_font(key) {
1462 Some(font) => Some(font.into()),
1463 None => None,
1464 }
1465 }
1466
1467 fn get_font(&self, key: char) -> Option<FontUnicode> {
1468 match self.0.binary_search_by_key(&key, |&f| f.char()) {
1469 Ok(idx) => Some(self.0[idx]),
1470 _ => None,
1471 }
1472 }
1473
1474 fn iter(&self) -> ::core::slice::Iter<FontUnicode> {
1475 self.0.iter()
1476 }
1477
1478 #[cfg(feature = "std")]
1479 fn print_set(&self) {
1480 println!();
1481 println!("# `{:?}`", self);
1482 for (idx, font) in self.0.iter().enumerate() {
1483 print!("## `{:?}[{:?}]: U+{:04X}`", self, idx, font.char() as u32,);
1484 if font.is_whitespace() {
1485 println!(" `WHITESPACE`");
1486 } else {
1487 println!();
1488 println!("`{:?}`", font.to_string());
1489 println!();
1490 println!("```text");
1491 for x in &font.byte_array() {
1492 for bit in 0..8 {
1493 match *x & 1 << bit {
1494 0 => print!("░"),
1495 _ => print!("█"),
1496 }
1497 }
1498 println!();
1499 }
1500 println!("```");
1501 println!();
1502 }
1503 }
1504 }
1505
1506 #[cfg(feature = "std")]
1507 fn to_vec(&self) -> Vec<(char, FontUnicode)> {
1508 self.0.iter().fold(Vec::with_capacity(128), |mut v, font| {
1509 v.push((font.char(), *font));
1510 v
1511 })
1512 }
1513}
1514
1515#[cfg(test)]
1516mod tests {
1517 use super::*;
1518
1519 #[test]
1520 fn latin_fonts_inner_array_is_sorted_by_unicode_key() {
1521 let mut sorted = LATIN_UNICODE;
1522 sorted.sort_by_key(|f| f.char());
1523 for (idx, key) in sorted.iter().enumerate() {
1524 assert_eq!(LATIN_UNICODE[idx].char(), key.char());
1525 }
1526 }
1527
1528 #[test]
1529 fn latin_set_implements_default_trait_with_method_new() {
1530 let latin_set: LatinFonts = Default::default();
1531 assert_eq!(latin_set, LatinFonts::new());
1532 }
1533
1534 #[test]
1535 fn latin_fonts_constant_is_equal_to_a_new_instance() {
1536 assert_eq!(LATIN_FONTS, LatinFonts::new());
1537 }
1538
1539 #[test]
1540 fn latin_fonts_constant_wraps_basic_unicode_constant() {
1541 let latin = LatinFonts::new();
1542 assert!(latin.0.len() == LATIN_UNICODE.len());
1543 for (idx, font) in latin.0.iter().enumerate() {
1544 assert_eq!(font, &LATIN_UNICODE[idx]);
1545 }
1546 }
1547}