En realidad, después de horas de pruebas y pruebas, me di cuenta de que los datos de glifos rasterizados tienen algunos bytes no relevantes llamados padding
. Ilustrativamente, de formación de imágenes a continuación es una datos de glifo en un tampón: (o
/x
son datos significativos, mientras que .
son no relevante)
0 1 2 3 4 5 6 7
0 o x o x o x . .
1 x o x o x o . .
2 o x o x o x . .
3 x o x o x o . .
4 o x o x o x . .
hay tres números que describen el tamaño de esta memoria intermedia, los dos primeros son obvias :
rows = 5 //since there are 5 rows
width = 6 //since each row has 6 bytes of data
Sin embargo, en realidad hay una tercera:
pitch = 8 //the actual width of rows, including "padding"
Si ignora esta propiedad del aficionado como yo, y tengo la idea equivocada de que el width
es el ancho real, estará representando una forma de glifo distorsionada o traducida.
Mi comprensión de este 'relleno' es como dice Dhaivat Pandya, es una compensación. Sin embargo, no es una compensación por la paridad (obviamente +2 no cambia la paridad) por defecto es una compensación para hacer que el ancho real sea un múltiplo de 4. Pero sí, puede cambiar el 4 en 2 o incluso 1. Supongo formando una matriz de datos con su ancho un múltiplo de 4, se puede cargar más rápido, por ejemplo, para cargarse en longint
en lugar de byte
.
Pero aún así, la perspicacia de R..
realmente me impresionó. Creo que ustedes no pueden imaginar que podría cometer un error tan básico.
Trata de compensar la paridad con el +1 y +2. –
¿Cómo está la paridad de compensación +2? No cambia la paridad. – trVoldemort
Vea mi comentario sobre la respuesta de Lie Ryan (y acéptelo si lo desea, no necesito representante). –