A halftone system, comprising: at least one processor; and a memory including computer program code executable by the processor to cause the halftone system to: receive a raster image comprising an array of pixels; and perform a multi-level halftoning process on one or more blocks of the pixels; for the multi-level halftoning process: the processor further causes the halftone system to identify thresholds that distinguish different intensity levels; for each block of the pixels from the one or more blocks, the processor causes the halftone system to: identify a set of pixel values for the pixels in the block; perform a vectorized comparison of the set of pixel values to each of the thresholds to generate sets of comparison bits; characterised in that the processor further causes the halftone system to perform a first ternary logic operation with three of the sets of comparison bits as input to define a set of low-order bits for the pixels in the block; and perform a second ternary logic operation with three of the sets of comparison bits as input to define a set of higher-order bits for the pixels in the block. at least one processor; and a memory including computer program code executable by the processor to cause the halftone system to: receive a raster image comprising an array of pixels; and perform a multi-level halftoning process on one or more blocks of the pixels; for the multi-level halftoning process: the processor further causes the halftone system to identify thresholds that distinguish different intensity levels; for each block of the pixels from the one or more blocks, the processor causes the halftone system to: identify a set of pixel values for the pixels in the block; perform a vectorized comparison of the set of pixel values to each of the thresholds to generate sets of comparison bits; characterised in that the processor further causes the halftone system to receive a raster image comprising an array of pixels; and perform a multi-level halftoning process on one or more blocks of the pixels; for the multi-level halftoning process: the processor further causes the halftone system to identify thresholds that distinguish different intensity levels; for each block of the pixels from the one or more blocks, the processor causes the halftone system to: identify a set of pixel values for the pixels in the block; perform a vectorized comparison of the set of pixel values to each of the thresholds to generate sets of comparison bits; characterised in that the processor further causes the halftone system to the processor further causes the halftone system to identify thresholds that distinguish different intensity levels; for each block of the pixels from the one or more blocks, the processor causes the halftone system to: identify a set of pixel values for the pixels in the block; perform a vectorized comparison of the set of pixel values to each of the thresholds to generate sets of comparison bits; characterised in that the processor further causes the halftone system to identify a set of pixel values for the pixels in the block; perform a vectorized comparison of the set of pixel values to each of the thresholds to generate sets of comparison bits; characterised in that the processor further causes the halftone system to perform a first ternary logic operation with three of the sets of comparison bits as input to define a set of low-order bits for the pixels in the block; and perform a second ternary logic operation with three of the sets of comparison bits as input to define a set of higher-order bits for the pixels in the block.