feat(fonts): deinterlace GIF i font ari-w9500 per placeholders
Fix: gif.cpp no desfeia l'interlace, trinxava qualsevol GIF entrellaçat (tota la sortida de Pillow). Afegeix Defaults::UI::Font per centralitzar noms/rutes i mou data/font → data/fonts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
03f1c5f926
commit
eb07e7e564
18 files changed
+859
-14
No files matched your search
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,132 @@
|
|||||||
|
# Font: ari-w9500-bold — generado desde ari-w9500-bold.ttf size 11
|
||||||
|
# Generado con tools/font_gen/font_gen.py
|
||||||
|
|
||||||
|
box_width 13
|
||||||
|
box_height 11
|
||||||
|
columns 15
|
||||||
|
|
||||||
|
# codepoint_decimal ancho_visual
|
||||||
|
32 3 # U+0020
|
||||||
|
33 3 # !
|
||||||
|
34 6 # "
|
||||||
|
35 9 # #
|
||||||
|
36 7 # $
|
||||||
|
37 12 # %
|
||||||
|
38 8 # &
|
||||||
|
39 3 # '
|
||||||
|
40 5 # (
|
||||||
|
41 5 # )
|
||||||
|
42 5 # *
|
||||||
|
43 7 # +
|
||||||
|
44 3 # ,
|
||||||
|
45 5 # -
|
||||||
|
46 3 # .
|
||||||
|
47 6 # /
|
||||||
|
48 7 # 0
|
||||||
|
49 6 # 1
|
||||||
|
50 7 # 2
|
||||||
|
51 7 # 3
|
||||||
|
52 7 # 4
|
||||||
|
53 7 # 5
|
||||||
|
54 7 # 6
|
||||||
|
55 7 # 7
|
||||||
|
56 7 # 8
|
||||||
|
57 7 # 9
|
||||||
|
58 3 # :
|
||||||
|
59 3 # ;
|
||||||
|
60 7 # <
|
||||||
|
61 7 # =
|
||||||
|
62 7 # >
|
||||||
|
63 7 # ?
|
||||||
|
64 13 # @
|
||||||
|
65 9 # A
|
||||||
|
66 8 # B
|
||||||
|
67 8 # C
|
||||||
|
68 8 # D
|
||||||
|
69 7 # E
|
||||||
|
70 7 # F
|
||||||
|
71 8 # G
|
||||||
|
72 8 # H
|
||||||
|
73 3 # I
|
||||||
|
74 6 # J
|
||||||
|
75 8 # K
|
||||||
|
76 7 # L
|
||||||
|
77 10 # M
|
||||||
|
78 9 # N
|
||||||
|
79 9 # O
|
||||||
|
80 8 # P
|
||||||
|
81 9 # Q
|
||||||
|
82 8 # R
|
||||||
|
83 8 # S
|
||||||
|
84 7 # T
|
||||||
|
85 8 # U
|
||||||
|
86 8 # V
|
||||||
|
87 11 # W
|
||||||
|
88 9 # X
|
||||||
|
89 9 # Y
|
||||||
|
90 9 # Z
|
||||||
|
91 5 # [
|
||||||
|
92 6 # \
|
||||||
|
93 5 # ]
|
||||||
|
94 6 # ^
|
||||||
|
95 7 # _
|
||||||
|
96 4 # `
|
||||||
|
97 7 # a
|
||||||
|
98 7 # b
|
||||||
|
99 7 # c
|
||||||
|
100 7 # d
|
||||||
|
101 7 # e
|
||||||
|
102 5 # f
|
||||||
|
103 7 # g
|
||||||
|
104 7 # h
|
||||||
|
105 3 # i
|
||||||
|
106 3 # j
|
||||||
|
107 7 # k
|
||||||
|
108 3 # l
|
||||||
|
109 9 # m
|
||||||
|
110 7 # n
|
||||||
|
111 7 # o
|
||||||
|
112 7 # p
|
||||||
|
113 7 # q
|
||||||
|
114 5 # r
|
||||||
|
115 6 # s
|
||||||
|
116 5 # t
|
||||||
|
117 7 # u
|
||||||
|
118 7 # v
|
||||||
|
119 9 # w
|
||||||
|
120 7 # x
|
||||||
|
121 7 # y
|
||||||
|
122 7 # z
|
||||||
|
123 6 # {
|
||||||
|
124 3 # |
|
||||||
|
125 6 # }
|
||||||
|
126 8 # ~
|
||||||
|
192 9 # À
|
||||||
|
193 9 # Á
|
||||||
|
200 7 # È
|
||||||
|
201 7 # É
|
||||||
|
204 3 # Ì
|
||||||
|
205 3 # Í
|
||||||
|
210 9 # Ò
|
||||||
|
211 9 # Ó
|
||||||
|
217 8 # Ù
|
||||||
|
218 8 # Ú
|
||||||
|
209 9 # Ñ
|
||||||
|
199 8 # Ç
|
||||||
|
224 7 # à
|
||||||
|
225 7 # á
|
||||||
|
232 7 # è
|
||||||
|
233 7 # é
|
||||||
|
236 3 # ì
|
||||||
|
237 4 # í
|
||||||
|
242 7 # ò
|
||||||
|
243 7 # ó
|
||||||
|
249 7 # ù
|
||||||
|
250 7 # ú
|
||||||
|
241 7 # ñ
|
||||||
|
231 7 # ç
|
||||||
|
161 3 # ¡
|
||||||
|
191 6 # ¿
|
||||||
|
171 9 # «
|
||||||
|
187 9 # »
|
||||||
|
183 3 # ·
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,132 @@
|
|||||||
|
# Font: ari-w9500-condensed-bold — generado desde ari-w9500-condensed-bold.ttf size 11
|
||||||
|
# Generado con tools/font_gen/font_gen.py
|
||||||
|
|
||||||
|
box_width 12
|
||||||
|
box_height 11
|
||||||
|
columns 15
|
||||||
|
|
||||||
|
# codepoint_decimal ancho_visual
|
||||||
|
32 2 # U+0020
|
||||||
|
33 3 # !
|
||||||
|
34 6 # "
|
||||||
|
35 9 # #
|
||||||
|
36 6 # $
|
||||||
|
37 10 # %
|
||||||
|
38 7 # &
|
||||||
|
39 3 # '
|
||||||
|
40 5 # (
|
||||||
|
41 5 # )
|
||||||
|
42 5 # *
|
||||||
|
43 7 # +
|
||||||
|
44 3 # ,
|
||||||
|
45 5 # -
|
||||||
|
46 3 # .
|
||||||
|
47 5 # /
|
||||||
|
48 6 # 0
|
||||||
|
49 5 # 1
|
||||||
|
50 6 # 2
|
||||||
|
51 6 # 3
|
||||||
|
52 6 # 4
|
||||||
|
53 6 # 5
|
||||||
|
54 6 # 6
|
||||||
|
55 6 # 7
|
||||||
|
56 6 # 8
|
||||||
|
57 6 # 9
|
||||||
|
58 3 # :
|
||||||
|
59 3 # ;
|
||||||
|
60 7 # <
|
||||||
|
61 7 # =
|
||||||
|
62 7 # >
|
||||||
|
63 6 # ?
|
||||||
|
64 12 # @
|
||||||
|
65 8 # A
|
||||||
|
66 7 # B
|
||||||
|
67 7 # C
|
||||||
|
68 7 # D
|
||||||
|
69 6 # E
|
||||||
|
70 6 # F
|
||||||
|
71 7 # G
|
||||||
|
72 7 # H
|
||||||
|
73 3 # I
|
||||||
|
74 6 # J
|
||||||
|
75 7 # K
|
||||||
|
76 7 # L
|
||||||
|
77 8 # M
|
||||||
|
78 8 # N
|
||||||
|
79 8 # O
|
||||||
|
80 7 # P
|
||||||
|
81 8 # Q
|
||||||
|
82 7 # R
|
||||||
|
83 7 # S
|
||||||
|
84 7 # T
|
||||||
|
85 7 # U
|
||||||
|
86 7 # V
|
||||||
|
87 9 # W
|
||||||
|
88 7 # X
|
||||||
|
89 7 # Y
|
||||||
|
90 7 # Z
|
||||||
|
91 5 # [
|
||||||
|
92 5 # \
|
||||||
|
93 5 # ]
|
||||||
|
94 6 # ^
|
||||||
|
95 6 # _
|
||||||
|
96 4 # `
|
||||||
|
97 6 # a
|
||||||
|
98 6 # b
|
||||||
|
99 6 # c
|
||||||
|
100 6 # d
|
||||||
|
101 6 # e
|
||||||
|
102 5 # f
|
||||||
|
103 6 # g
|
||||||
|
104 6 # h
|
||||||
|
105 3 # i
|
||||||
|
106 3 # j
|
||||||
|
107 6 # k
|
||||||
|
108 3 # l
|
||||||
|
109 8 # m
|
||||||
|
110 6 # n
|
||||||
|
111 6 # o
|
||||||
|
112 6 # p
|
||||||
|
113 6 # q
|
||||||
|
114 5 # r
|
||||||
|
115 6 # s
|
||||||
|
116 5 # t
|
||||||
|
117 6 # u
|
||||||
|
118 6 # v
|
||||||
|
119 8 # w
|
||||||
|
120 6 # x
|
||||||
|
121 6 # y
|
||||||
|
122 6 # z
|
||||||
|
123 6 # {
|
||||||
|
124 3 # |
|
||||||
|
125 6 # }
|
||||||
|
126 8 # ~
|
||||||
|
192 8 # À
|
||||||
|
193 8 # Á
|
||||||
|
200 6 # È
|
||||||
|
201 6 # É
|
||||||
|
204 3 # Ì
|
||||||
|
205 3 # Í
|
||||||
|
210 8 # Ò
|
||||||
|
211 8 # Ó
|
||||||
|
217 7 # Ù
|
||||||
|
218 7 # Ú
|
||||||
|
209 8 # Ñ
|
||||||
|
199 7 # Ç
|
||||||
|
224 6 # à
|
||||||
|
225 6 # á
|
||||||
|
232 6 # è
|
||||||
|
233 6 # é
|
||||||
|
236 3 # ì
|
||||||
|
237 4 # í
|
||||||
|
242 6 # ò
|
||||||
|
243 6 # ó
|
||||||
|
249 6 # ù
|
||||||
|
250 6 # ú
|
||||||
|
241 6 # ñ
|
||||||
|
231 6 # ç
|
||||||
|
161 3 # ¡
|
||||||
|
191 6 # ¿
|
||||||
|
171 9 # «
|
||||||
|
187 9 # »
|
||||||
|
183 3 # ·
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,132 @@
|
|||||||
|
# Font: ari-w9500-condensed-display — generado desde ari-w9500-condensed-display.ttf size 11
|
||||||
|
# Generado con tools/font_gen/font_gen.py
|
||||||
|
|
||||||
|
box_width 12
|
||||||
|
box_height 11
|
||||||
|
columns 15
|
||||||
|
|
||||||
|
# codepoint_decimal ancho_visual
|
||||||
|
32 3 # U+0020
|
||||||
|
33 3 # !
|
||||||
|
34 6 # "
|
||||||
|
35 9 # #
|
||||||
|
36 7 # $
|
||||||
|
37 11 # %
|
||||||
|
38 8 # &
|
||||||
|
39 3 # '
|
||||||
|
40 5 # (
|
||||||
|
41 5 # )
|
||||||
|
42 5 # *
|
||||||
|
43 7 # +
|
||||||
|
44 4 # ,
|
||||||
|
45 6 # -
|
||||||
|
46 3 # .
|
||||||
|
47 6 # /
|
||||||
|
48 7 # 0
|
||||||
|
49 6 # 1
|
||||||
|
50 7 # 2
|
||||||
|
51 7 # 3
|
||||||
|
52 8 # 4
|
||||||
|
53 7 # 5
|
||||||
|
54 7 # 6
|
||||||
|
55 7 # 7
|
||||||
|
56 7 # 8
|
||||||
|
57 7 # 9
|
||||||
|
58 3 # :
|
||||||
|
59 4 # ;
|
||||||
|
60 7 # <
|
||||||
|
61 7 # =
|
||||||
|
62 7 # >
|
||||||
|
63 7 # ?
|
||||||
|
64 12 # @
|
||||||
|
65 8 # A
|
||||||
|
66 7 # B
|
||||||
|
67 8 # C
|
||||||
|
68 8 # D
|
||||||
|
69 7 # E
|
||||||
|
70 7 # F
|
||||||
|
71 8 # G
|
||||||
|
72 7 # H
|
||||||
|
73 3 # I
|
||||||
|
74 6 # J
|
||||||
|
75 8 # K
|
||||||
|
76 7 # L
|
||||||
|
77 9 # M
|
||||||
|
78 8 # N
|
||||||
|
79 9 # O
|
||||||
|
80 7 # P
|
||||||
|
81 9 # Q
|
||||||
|
82 7 # R
|
||||||
|
83 7 # S
|
||||||
|
84 7 # T
|
||||||
|
85 7 # U
|
||||||
|
86 7 # V
|
||||||
|
87 10 # W
|
||||||
|
88 8 # X
|
||||||
|
89 7 # Y
|
||||||
|
90 8 # Z
|
||||||
|
91 5 # [
|
||||||
|
92 6 # \
|
||||||
|
93 5 # ]
|
||||||
|
94 6 # ^
|
||||||
|
95 7 # _
|
||||||
|
96 5 # `
|
||||||
|
97 7 # a
|
||||||
|
98 7 # b
|
||||||
|
99 7 # c
|
||||||
|
100 7 # d
|
||||||
|
101 7 # e
|
||||||
|
102 6 # f
|
||||||
|
103 7 # g
|
||||||
|
104 7 # h
|
||||||
|
105 3 # i
|
||||||
|
106 3 # j
|
||||||
|
107 7 # k
|
||||||
|
108 3 # l
|
||||||
|
109 9 # m
|
||||||
|
110 7 # n
|
||||||
|
111 7 # o
|
||||||
|
112 7 # p
|
||||||
|
113 7 # q
|
||||||
|
114 6 # r
|
||||||
|
115 6 # s
|
||||||
|
116 6 # t
|
||||||
|
117 7 # u
|
||||||
|
118 7 # v
|
||||||
|
119 8 # w
|
||||||
|
120 7 # x
|
||||||
|
121 7 # y
|
||||||
|
122 7 # z
|
||||||
|
123 6 # {
|
||||||
|
124 3 # |
|
||||||
|
125 6 # }
|
||||||
|
126 8 # ~
|
||||||
|
192 8 # À
|
||||||
|
193 8 # Á
|
||||||
|
200 7 # È
|
||||||
|
201 7 # É
|
||||||
|
204 3 # Ì
|
||||||
|
205 3 # Í
|
||||||
|
210 9 # Ò
|
||||||
|
211 9 # Ó
|
||||||
|
217 7 # Ù
|
||||||
|
218 7 # Ú
|
||||||
|
209 8 # Ñ
|
||||||
|
199 8 # Ç
|
||||||
|
224 7 # à
|
||||||
|
225 7 # á
|
||||||
|
232 7 # è
|
||||||
|
233 7 # é
|
||||||
|
236 4 # ì
|
||||||
|
237 3 # í
|
||||||
|
242 7 # ò
|
||||||
|
243 7 # ó
|
||||||
|
249 7 # ù
|
||||||
|
250 7 # ú
|
||||||
|
241 7 # ñ
|
||||||
|
231 7 # ç
|
||||||
|
161 3 # ¡
|
||||||
|
191 7 # ¿
|
||||||
|
171 10 # «
|
||||||
|
187 10 # »
|
||||||
|
183 3 # ·
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,132 @@
|
|||||||
|
# Font: ari-w9500-condensed — generado desde ari-w9500-condensed.ttf size 11
|
||||||
|
# Generado con tools/font_gen/font_gen.py
|
||||||
|
|
||||||
|
box_width 9
|
||||||
|
box_height 11
|
||||||
|
columns 15
|
||||||
|
|
||||||
|
# codepoint_decimal ancho_visual
|
||||||
|
32 2 # U+0020
|
||||||
|
33 2 # !
|
||||||
|
34 4 # "
|
||||||
|
35 8 # #
|
||||||
|
36 5 # $
|
||||||
|
37 8 # %
|
||||||
|
38 6 # &
|
||||||
|
39 2 # '
|
||||||
|
40 4 # (
|
||||||
|
41 4 # )
|
||||||
|
42 4 # *
|
||||||
|
43 6 # +
|
||||||
|
44 2 # ,
|
||||||
|
45 4 # -
|
||||||
|
46 2 # .
|
||||||
|
47 4 # /
|
||||||
|
48 5 # 0
|
||||||
|
49 4 # 1
|
||||||
|
50 5 # 2
|
||||||
|
51 5 # 3
|
||||||
|
52 5 # 4
|
||||||
|
53 5 # 5
|
||||||
|
54 5 # 6
|
||||||
|
55 5 # 7
|
||||||
|
56 5 # 8
|
||||||
|
57 5 # 9
|
||||||
|
58 2 # :
|
||||||
|
59 2 # ;
|
||||||
|
60 4 # <
|
||||||
|
61 6 # =
|
||||||
|
62 4 # >
|
||||||
|
63 5 # ?
|
||||||
|
64 9 # @
|
||||||
|
65 6 # A
|
||||||
|
66 6 # B
|
||||||
|
67 6 # C
|
||||||
|
68 6 # D
|
||||||
|
69 6 # E
|
||||||
|
70 6 # F
|
||||||
|
71 6 # G
|
||||||
|
72 6 # H
|
||||||
|
73 2 # I
|
||||||
|
74 4 # J
|
||||||
|
75 6 # K
|
||||||
|
76 6 # L
|
||||||
|
77 6 # M
|
||||||
|
78 6 # N
|
||||||
|
79 7 # O
|
||||||
|
80 6 # P
|
||||||
|
81 7 # Q
|
||||||
|
82 6 # R
|
||||||
|
83 6 # S
|
||||||
|
84 6 # T
|
||||||
|
85 6 # U
|
||||||
|
86 6 # V
|
||||||
|
87 8 # W
|
||||||
|
88 6 # X
|
||||||
|
89 6 # Y
|
||||||
|
90 6 # Z
|
||||||
|
91 4 # [
|
||||||
|
92 4 # \
|
||||||
|
93 4 # ]
|
||||||
|
94 6 # ^
|
||||||
|
95 5 # _
|
||||||
|
96 3 # `
|
||||||
|
97 5 # a
|
||||||
|
98 5 # b
|
||||||
|
99 5 # c
|
||||||
|
100 5 # d
|
||||||
|
101 5 # e
|
||||||
|
102 4 # f
|
||||||
|
103 5 # g
|
||||||
|
104 5 # h
|
||||||
|
105 2 # i
|
||||||
|
106 2 # j
|
||||||
|
107 5 # k
|
||||||
|
108 2 # l
|
||||||
|
109 6 # m
|
||||||
|
110 5 # n
|
||||||
|
111 5 # o
|
||||||
|
112 5 # p
|
||||||
|
113 5 # q
|
||||||
|
114 4 # r
|
||||||
|
115 5 # s
|
||||||
|
116 4 # t
|
||||||
|
117 5 # u
|
||||||
|
118 5 # v
|
||||||
|
119 6 # w
|
||||||
|
120 5 # x
|
||||||
|
121 5 # y
|
||||||
|
122 5 # z
|
||||||
|
123 5 # {
|
||||||
|
124 2 # |
|
||||||
|
125 5 # }
|
||||||
|
126 6 # ~
|
||||||
|
192 6 # À
|
||||||
|
193 6 # Á
|
||||||
|
200 6 # È
|
||||||
|
201 6 # É
|
||||||
|
204 2 # Ì
|
||||||
|
205 2 # Í
|
||||||
|
210 7 # Ò
|
||||||
|
211 7 # Ó
|
||||||
|
217 6 # Ù
|
||||||
|
218 6 # Ú
|
||||||
|
209 6 # Ñ
|
||||||
|
199 6 # Ç
|
||||||
|
224 5 # à
|
||||||
|
225 5 # á
|
||||||
|
232 5 # è
|
||||||
|
233 5 # é
|
||||||
|
236 2 # ì
|
||||||
|
237 3 # í
|
||||||
|
242 5 # ò
|
||||||
|
243 5 # ó
|
||||||
|
249 5 # ù
|
||||||
|
250 5 # ú
|
||||||
|
241 5 # ñ
|
||||||
|
231 5 # ç
|
||||||
|
161 2 # ¡
|
||||||
|
191 5 # ¿
|
||||||
|
171 7 # «
|
||||||
|
187 7 # »
|
||||||
|
183 2 # ·
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,132 @@
|
|||||||
|
# Font: ari-w9500-display — generado desde ari-w9500-display.ttf size 11
|
||||||
|
# Generado con tools/font_gen/font_gen.py
|
||||||
|
|
||||||
|
box_width 12
|
||||||
|
box_height 11
|
||||||
|
columns 15
|
||||||
|
|
||||||
|
# codepoint_decimal ancho_visual
|
||||||
|
32 3 # U+0020
|
||||||
|
33 3 # !
|
||||||
|
34 6 # "
|
||||||
|
35 9 # #
|
||||||
|
36 8 # $
|
||||||
|
37 12 # %
|
||||||
|
38 9 # &
|
||||||
|
39 3 # '
|
||||||
|
40 5 # (
|
||||||
|
41 5 # )
|
||||||
|
42 5 # *
|
||||||
|
43 7 # +
|
||||||
|
44 4 # ,
|
||||||
|
45 6 # -
|
||||||
|
46 3 # .
|
||||||
|
47 6 # /
|
||||||
|
48 8 # 0
|
||||||
|
49 6 # 1
|
||||||
|
50 8 # 2
|
||||||
|
51 8 # 3
|
||||||
|
52 8 # 4
|
||||||
|
53 8 # 5
|
||||||
|
54 8 # 6
|
||||||
|
55 8 # 7
|
||||||
|
56 8 # 8
|
||||||
|
57 8 # 9
|
||||||
|
58 3 # :
|
||||||
|
59 4 # ;
|
||||||
|
60 7 # <
|
||||||
|
61 7 # =
|
||||||
|
62 7 # >
|
||||||
|
63 8 # ?
|
||||||
|
64 12 # @
|
||||||
|
65 9 # A
|
||||||
|
66 8 # B
|
||||||
|
67 9 # C
|
||||||
|
68 9 # D
|
||||||
|
69 8 # E
|
||||||
|
70 8 # F
|
||||||
|
71 9 # G
|
||||||
|
72 8 # H
|
||||||
|
73 3 # I
|
||||||
|
74 7 # J
|
||||||
|
75 9 # K
|
||||||
|
76 8 # L
|
||||||
|
77 10 # M
|
||||||
|
78 9 # N
|
||||||
|
79 10 # O
|
||||||
|
80 8 # P
|
||||||
|
81 10 # Q
|
||||||
|
82 8 # R
|
||||||
|
83 8 # S
|
||||||
|
84 9 # T
|
||||||
|
85 8 # U
|
||||||
|
86 9 # V
|
||||||
|
87 12 # W
|
||||||
|
88 9 # X
|
||||||
|
89 9 # Y
|
||||||
|
90 9 # Z
|
||||||
|
91 5 # [
|
||||||
|
92 6 # \
|
||||||
|
93 5 # ]
|
||||||
|
94 7 # ^
|
||||||
|
95 7 # _
|
||||||
|
96 5 # `
|
||||||
|
97 8 # a
|
||||||
|
98 8 # b
|
||||||
|
99 8 # c
|
||||||
|
100 8 # d
|
||||||
|
101 8 # e
|
||||||
|
102 6 # f
|
||||||
|
103 8 # g
|
||||||
|
104 8 # h
|
||||||
|
105 3 # i
|
||||||
|
106 4 # j
|
||||||
|
107 8 # k
|
||||||
|
108 3 # l
|
||||||
|
109 11 # m
|
||||||
|
110 8 # n
|
||||||
|
111 8 # o
|
||||||
|
112 8 # p
|
||||||
|
113 8 # q
|
||||||
|
114 6 # r
|
||||||
|
115 7 # s
|
||||||
|
116 6 # t
|
||||||
|
117 8 # u
|
||||||
|
118 8 # v
|
||||||
|
119 9 # w
|
||||||
|
120 8 # x
|
||||||
|
121 8 # y
|
||||||
|
122 8 # z
|
||||||
|
123 6 # {
|
||||||
|
124 3 # |
|
||||||
|
125 6 # }
|
||||||
|
126 9 # ~
|
||||||
|
192 9 # À
|
||||||
|
193 9 # Á
|
||||||
|
200 8 # È
|
||||||
|
201 8 # É
|
||||||
|
204 3 # Ì
|
||||||
|
205 3 # Í
|
||||||
|
210 10 # Ò
|
||||||
|
211 10 # Ó
|
||||||
|
217 8 # Ù
|
||||||
|
218 8 # Ú
|
||||||
|
209 9 # Ñ
|
||||||
|
199 9 # Ç
|
||||||
|
224 8 # à
|
||||||
|
225 8 # á
|
||||||
|
232 8 # è
|
||||||
|
233 8 # é
|
||||||
|
236 4 # ì
|
||||||
|
237 3 # í
|
||||||
|
242 8 # ò
|
||||||
|
243 8 # ó
|
||||||
|
249 8 # ù
|
||||||
|
250 8 # ú
|
||||||
|
241 8 # ñ
|
||||||
|
231 8 # ç
|
||||||
|
161 3 # ¡
|
||||||
|
191 8 # ¿
|
||||||
|
171 10 # «
|
||||||
|
187 10 # »
|
||||||
|
183 3 # ·
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,132 @@
|
|||||||
|
# Font: ari-w9500 — generado desde ari-w9500.ttf size 11
|
||||||
|
# Generado con tools/font_gen/font_gen.py
|
||||||
|
|
||||||
|
box_width 12
|
||||||
|
box_height 11
|
||||||
|
columns 15
|
||||||
|
|
||||||
|
# codepoint_decimal ancho_visual
|
||||||
|
32 3 # U+0020
|
||||||
|
33 2 # !
|
||||||
|
34 4 # "
|
||||||
|
35 9 # #
|
||||||
|
36 6 # $
|
||||||
|
37 10 # %
|
||||||
|
38 7 # &
|
||||||
|
39 2 # '
|
||||||
|
40 4 # (
|
||||||
|
41 4 # )
|
||||||
|
42 4 # *
|
||||||
|
43 6 # +
|
||||||
|
44 2 # ,
|
||||||
|
45 4 # -
|
||||||
|
46 2 # .
|
||||||
|
47 5 # /
|
||||||
|
48 6 # 0
|
||||||
|
49 5 # 1
|
||||||
|
50 6 # 2
|
||||||
|
51 6 # 3
|
||||||
|
52 6 # 4
|
||||||
|
53 6 # 5
|
||||||
|
54 6 # 6
|
||||||
|
55 6 # 7
|
||||||
|
56 6 # 8
|
||||||
|
57 6 # 9
|
||||||
|
58 2 # :
|
||||||
|
59 2 # ;
|
||||||
|
60 6 # <
|
||||||
|
61 6 # =
|
||||||
|
62 6 # >
|
||||||
|
63 6 # ?
|
||||||
|
64 12 # @
|
||||||
|
65 8 # A
|
||||||
|
66 7 # B
|
||||||
|
67 8 # C
|
||||||
|
68 8 # D
|
||||||
|
69 7 # E
|
||||||
|
70 7 # F
|
||||||
|
71 8 # G
|
||||||
|
72 7 # H
|
||||||
|
73 2 # I
|
||||||
|
74 5 # J
|
||||||
|
75 7 # K
|
||||||
|
76 7 # L
|
||||||
|
77 8 # M
|
||||||
|
78 7 # N
|
||||||
|
79 8 # O
|
||||||
|
80 7 # P
|
||||||
|
81 8 # Q
|
||||||
|
82 7 # R
|
||||||
|
83 7 # S
|
||||||
|
84 6 # T
|
||||||
|
85 7 # U
|
||||||
|
86 7 # V
|
||||||
|
87 10 # W
|
||||||
|
88 8 # X
|
||||||
|
89 8 # Y
|
||||||
|
90 8 # Z
|
||||||
|
91 4 # [
|
||||||
|
92 5 # \
|
||||||
|
93 4 # ]
|
||||||
|
94 6 # ^
|
||||||
|
95 6 # _
|
||||||
|
96 3 # `
|
||||||
|
97 6 # a
|
||||||
|
98 6 # b
|
||||||
|
99 6 # c
|
||||||
|
100 6 # d
|
||||||
|
101 6 # e
|
||||||
|
102 4 # f
|
||||||
|
103 6 # g
|
||||||
|
104 6 # h
|
||||||
|
105 2 # i
|
||||||
|
106 2 # j
|
||||||
|
107 6 # k
|
||||||
|
108 2 # l
|
||||||
|
109 8 # m
|
||||||
|
110 6 # n
|
||||||
|
111 6 # o
|
||||||
|
112 6 # p
|
||||||
|
113 6 # q
|
||||||
|
114 4 # r
|
||||||
|
115 5 # s
|
||||||
|
116 4 # t
|
||||||
|
117 6 # u
|
||||||
|
118 6 # v
|
||||||
|
119 8 # w
|
||||||
|
120 6 # x
|
||||||
|
121 6 # y
|
||||||
|
122 6 # z
|
||||||
|
123 5 # {
|
||||||
|
124 2 # |
|
||||||
|
125 5 # }
|
||||||
|
126 6 # ~
|
||||||
|
192 8 # À
|
||||||
|
193 8 # Á
|
||||||
|
200 7 # È
|
||||||
|
201 7 # É
|
||||||
|
204 2 # Ì
|
||||||
|
205 2 # Í
|
||||||
|
210 8 # Ò
|
||||||
|
211 8 # Ó
|
||||||
|
217 7 # Ù
|
||||||
|
218 7 # Ú
|
||||||
|
209 7 # Ñ
|
||||||
|
199 8 # Ç
|
||||||
|
224 6 # à
|
||||||
|
225 6 # á
|
||||||
|
232 6 # è
|
||||||
|
233 6 # é
|
||||||
|
236 2 # ì
|
||||||
|
237 3 # í
|
||||||
|
242 6 # ò
|
||||||
|
243 6 # ó
|
||||||
|
249 6 # ù
|
||||||
|
250 6 # ú
|
||||||
|
241 6 # ñ
|
||||||
|
231 6 # ç
|
||||||
|
161 2 # ¡
|
||||||
|
191 6 # ¿
|
||||||
|
171 7 # «
|
||||||
|
187 7 # »
|
||||||
|
183 2 # ·
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
@@ -198,10 +198,33 @@ namespace GIF {
|
|||||||
readBytes(buffer, &lzw_code_size, sizeof(uint8_t));
|
readBytes(buffer, &lzw_code_size, sizeof(uint8_t));
|
||||||
|
|
||||||
std::vector<uint8_t> compressed_data = readSubBlocks(buffer);
|
std::vector<uint8_t> compressed_data = readSubBlocks(buffer);
|
||||||
int uncompressed_data_length = image_descriptor.image_width * image_descriptor.image_height;
|
const int IMG_W = image_descriptor.image_width;
|
||||||
std::vector<uint8_t> uncompressed_data(uncompressed_data_length);
|
const int IMG_H = image_descriptor.image_height;
|
||||||
|
std::vector<uint8_t> uncompressed_data(static_cast<std::size_t>(IMG_W) * IMG_H);
|
||||||
|
|
||||||
decompress(lzw_code_size, compressed_data.data(), static_cast<int>(compressed_data.size()), uncompressed_data.data());
|
decompress(lzw_code_size, compressed_data.data(), static_cast<int>(compressed_data.size()), uncompressed_data.data());
|
||||||
|
|
||||||
|
// Interlaced GIF (flag 0x40 al byte de fields): les files no arriben
|
||||||
|
// en ordre lineal, sinó en 4 passades (8:0, 8:4, 4:2, 2:1). Reordena
|
||||||
|
// al buffer lineal que espera Surface. Sense aquest pas, les fuentes
|
||||||
|
// i qualsevol GIF entrellaçat es veien completament trinxats.
|
||||||
|
constexpr uint8_t INTERLACE_FLAG = 0x40;
|
||||||
|
if ((image_descriptor.fields & INTERLACE_FLAG) != 0) {
|
||||||
|
constexpr int PASS_START[4] = {0, 4, 2, 1};
|
||||||
|
constexpr int PASS_STEP[4] = {8, 8, 4, 2};
|
||||||
|
std::vector<uint8_t> deinterlaced(static_cast<std::size_t>(IMG_W) * IMG_H);
|
||||||
|
int src_row = 0;
|
||||||
|
for (int pass = 0; pass < 4; ++pass) {
|
||||||
|
for (int dst_row = PASS_START[pass]; dst_row < IMG_H; dst_row += PASS_STEP[pass]) {
|
||||||
|
std::memcpy(deinterlaced.data() + (static_cast<std::size_t>(dst_row) * IMG_W),
|
||||||
|
uncompressed_data.data() + (static_cast<std::size_t>(src_row) * IMG_W),
|
||||||
|
IMG_W);
|
||||||
|
++src_row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return deinterlaced;
|
||||||
|
}
|
||||||
|
|
||||||
return uncompressed_data;
|
return uncompressed_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "core/audio/audio.hpp"
|
#include "core/audio/audio.hpp"
|
||||||
@@ -80,11 +81,16 @@ Director::Director() {
|
|||||||
// Hotkeys globals. GlobalInputs::update() les consumirà a cada frame.
|
// Hotkeys globals. GlobalInputs::update() les consumirà a cada frame.
|
||||||
KeyConfig::get().load("data/input/keys.yaml");
|
KeyConfig::get().load("data/input/keys.yaml");
|
||||||
|
|
||||||
// Recursos compartits d'UI (paleta + font). Es carreguen abans que els
|
// Recursos compartits d'UI (paleta + fonts). Es carreguen abans que els
|
||||||
// overlays perquè tots els reaprofiten sense duplicar la lògica.
|
// overlays perquè tots els reaprofiten sense duplicar la lògica. Els
|
||||||
|
// noms de font viuen a Defaults::UI::Font (un únic lloc per canviar-los).
|
||||||
Resource::Cache::get().loadPalette("ui", "data/palettes/sega-cube.pal");
|
Resource::Cache::get().loadPalette("ui", "data/palettes/sega-cube.pal");
|
||||||
Resource::Cache::get().loadSurface("8bithud.gif", "data/font/8bithud.gif");
|
const std::string HUD_FONT_GIF_KEY = std::string(Defaults::UI::Font::HUD_NAME) + ".gif";
|
||||||
Resource::Cache::get().getSurface("8bithud.gif")->setPalette(Resource::Cache::get().getPalette("ui"));
|
Resource::Cache::get().loadSurface(HUD_FONT_GIF_KEY, Defaults::UI::Font::HUD_GIF);
|
||||||
|
Resource::Cache::get().getSurface(HUD_FONT_GIF_KEY)->setPalette(Resource::Cache::get().getPalette("ui"));
|
||||||
|
const std::string PLACEHOLDER_FONT_GIF_KEY = std::string(Defaults::UI::Font::PLACEHOLDER_NAME) + ".gif";
|
||||||
|
Resource::Cache::get().loadSurface(PLACEHOLDER_FONT_GIF_KEY, Defaults::UI::Font::PLACEHOLDER_GIF);
|
||||||
|
Resource::Cache::get().getSurface(PLACEHOLDER_FONT_GIF_KEY)->setPalette(Resource::Cache::get().getPalette("ui"));
|
||||||
|
|
||||||
// Música de la piràmide 1 (primer i únic track de moment). Carreguem ací
|
// Música de la piràmide 1 (primer i únic track de moment). Carreguem ací
|
||||||
// perquè forma part del preload d'assets, com la font i la paleta.
|
// perquè forma part del preload d'assets, com la font i la paleta.
|
||||||
@@ -98,13 +104,19 @@ Director::Director() {
|
|||||||
// Font compartida pels overlays: construïm una sola instància de Text
|
// Font compartida pels overlays: construïm una sola instància de Text
|
||||||
// i la injectem als consumidors (Notifier, RenderInfo) per a que cap
|
// i la injectem als consumidors (Notifier, RenderInfo) per a que cap
|
||||||
// d'ells hagi de conèixer els noms dels recursos concrets.
|
// d'ells hagi de conèixer els noms dels recursos concrets.
|
||||||
auto hud_font_surface = Resource::Cache::get().getSurface("8bithud.gif");
|
auto hud_font_surface = Resource::Cache::get().getSurface(HUD_FONT_GIF_KEY);
|
||||||
auto hud_text = std::make_shared<Text>(hud_font_surface, "data/font/8bithud.fnt");
|
auto hud_text = std::make_shared<Text>(hud_font_surface, Defaults::UI::Font::HUD_FNT);
|
||||||
const auto& ui_palette = Resource::Cache::get().getPalette("ui");
|
const auto& ui_palette = Resource::Cache::get().getPalette("ui");
|
||||||
|
|
||||||
RenderInfo::get().init(Options::buildRenderInfoFrame(UiColor::RENDER_INFO_TEXT, UiColor::RENDER_INFO_SHADOW), hud_text);
|
RenderInfo::get().init(Options::buildRenderInfoFrame(UiColor::RENDER_INFO_TEXT, UiColor::RENDER_INFO_SHADOW), hud_text);
|
||||||
Notifier::get().init(hud_text, ui_palette);
|
Notifier::get().init(hud_text, ui_palette);
|
||||||
|
|
||||||
|
// Font dels placeholders (LOGO / TITLE / INTRO). És una font distinta a
|
||||||
|
// la de HUD perquè els placeholders desapareixeran amb les seues escenes
|
||||||
|
// finals; mentrestant tenen estètica pròpia.
|
||||||
|
auto placeholder_font_surface = Resource::Cache::get().getSurface(PLACEHOLDER_FONT_GIF_KEY);
|
||||||
|
auto placeholder_text = std::make_shared<Text>(placeholder_font_surface, Defaults::UI::Font::PLACEHOLDER_FNT);
|
||||||
|
|
||||||
// Flux d'escenes LOGO → TITLE → INTRO → GAME. Cada placeholder rep una
|
// Flux d'escenes LOGO → TITLE → INTRO → GAME. Cada placeholder rep una
|
||||||
// factory que construeix la següent, construïda bottom-up des de GAME.
|
// factory que construeix la següent, construïda bottom-up des de GAME.
|
||||||
//
|
//
|
||||||
@@ -123,16 +135,16 @@ Director::Director() {
|
|||||||
std::cout << "Director: start_scene=" << DebugConfig::toString(START) << '\n';
|
std::cout << "Director: start_scene=" << DebugConfig::toString(START) << '\n';
|
||||||
|
|
||||||
auto make_game = []() -> std::unique_ptr<Scene> { return std::make_unique<GameScene>(); };
|
auto make_game = []() -> std::unique_ptr<Scene> { return std::make_unique<GameScene>(); };
|
||||||
auto make_intro = [hud_text, make_game]() -> std::unique_ptr<Scene> {
|
auto make_intro = [placeholder_text, make_game]() -> std::unique_ptr<Scene> {
|
||||||
return std::make_unique<IntroScene>(hud_text, make_game);
|
return std::make_unique<IntroScene>(placeholder_text, make_game);
|
||||||
};
|
};
|
||||||
auto make_title = [hud_text, make_intro]() -> std::unique_ptr<Scene> {
|
auto make_title = [placeholder_text, make_intro]() -> std::unique_ptr<Scene> {
|
||||||
return std::make_unique<TitleScene>(hud_text, make_intro);
|
return std::make_unique<TitleScene>(placeholder_text, make_intro);
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (START) {
|
switch (START) {
|
||||||
case DebugConfig::StartScene::LOGO:
|
case DebugConfig::StartScene::LOGO:
|
||||||
current_scene_ = std::make_unique<LogoScene>(hud_text, make_title);
|
current_scene_ = std::make_unique<LogoScene>(placeholder_text, make_title);
|
||||||
break;
|
break;
|
||||||
case DebugConfig::StartScene::TITLE:
|
case DebugConfig::StartScene::TITLE:
|
||||||
current_scene_ = make_title();
|
current_scene_ = make_title();
|
||||||
|
|||||||
@@ -90,6 +90,24 @@ namespace Defaults {
|
|||||||
// pel codi. Si algun dia es volen temes múltiples, es pot moure a YAML
|
// pel codi. Si algun dia es volen temes múltiples, es pot moure a YAML
|
||||||
// sense més impacte que dos accessors extra.
|
// sense més impacte que dos accessors extra.
|
||||||
namespace UI {
|
namespace UI {
|
||||||
|
// Fonts d'UI centralitzades: un únic lloc per conèixer la carpeta
|
||||||
|
// (data/fonts/), el nom-clau al Resource::Cache i els fitxers .gif /
|
||||||
|
// .fnt de cada font. Afegir-ne una nova és una constant ací i ja.
|
||||||
|
namespace Font {
|
||||||
|
constexpr const char* DIR = "data/fonts/";
|
||||||
|
|
||||||
|
// HUD/Notifier/RenderInfo: font principal de UI del joc.
|
||||||
|
constexpr const char* HUD_NAME = "8bithud";
|
||||||
|
constexpr const char* HUD_GIF = "data/fonts/8bithud.gif";
|
||||||
|
constexpr const char* HUD_FNT = "data/fonts/8bithud.fnt";
|
||||||
|
|
||||||
|
// Placeholders (LOGO / TITLE / INTRO): font temporal fins que els
|
||||||
|
// placeholders es substitueixin per les seues escenes finals.
|
||||||
|
constexpr const char* PLACEHOLDER_NAME = "ari-w9500";
|
||||||
|
constexpr const char* PLACEHOLDER_GIF = "data/fonts/ari-w9500.gif";
|
||||||
|
constexpr const char* PLACEHOLDER_FNT = "data/fonts/ari-w9500.fnt";
|
||||||
|
} // namespace Font
|
||||||
|
|
||||||
// Overlay de RenderInfo (F12).
|
// Overlay de RenderInfo (F12).
|
||||||
constexpr Uint8 RENDER_INFO_TEXT = 47;
|
constexpr Uint8 RENDER_INFO_TEXT = 47;
|
||||||
constexpr Uint8 RENDER_INFO_SHADOW = 34;
|
constexpr Uint8 RENDER_INFO_SHADOW = 34;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
namespace Texts {
|
namespace Texts {
|
||||||
constexpr const char* WINDOW_TITLE = "© 2026 Aventures en Egipte — JailDesigner";
|
constexpr const char* WINDOW_TITLE = "© 2026 Aventures en Egipte — JailDesigner";
|
||||||
constexpr const char* COPYRIGHT = "© 2026 JailDesigner";
|
constexpr const char* COPYRIGHT = "© 2026 JailDesigner";
|
||||||
constexpr const char* VERSION = "0.18.0"; // Single source of truth — Makefile el grep
|
constexpr const char* VERSION = "0.19.0"; // Single source of truth — Makefile el grep
|
||||||
} // namespace Texts
|
} // namespace Texts
|
||||||
|
|
||||||
namespace GameCanvas {
|
namespace GameCanvas {
|
||||||
|
|||||||
Reference in new issue
Block a user