A printing system comprising: a print head including a plurality of ink nozzles; an actuator configured to move the print head relative to a substrate; a print head position sensing system configured to detect an actual position of the print head relative to the substrate; and a controller configured to: receive the actual position of the print head detected by the print head position sensing system wherein the actual position has a corresponding target print head position; determine a positional offset between the actual position and the target print head position; generate a nozzle firing pattern based on the positional offset; and control the print head to print the nozzle firing pattern at the target print head position using the plurality of ink nozzles, wherein the controller includes: a print client preprocessor configured to generate the nozzle firing pattern; and a print head controller configured to receive the nozzle firing pattern, in response, send a nozzle command signal to the print head to trigger ink ejection of at least one of the plurality of ink nozzles; the print client preprocessor is further configured to generate the nozzle firing pattern, at least by: identifying a plurality of predetermined candidate positional offsets; generating a respective offset nozzle command for each of the plurality of predetermined candidate positional offsets; and sending each of the respective offset nozzle commands to the print head controller in a nozzle command array; and the print head controller is further configured to control the print head to print the nozzle firing pattern at least by: selecting an offset nozzle command from the nozzle command array based at least on the nozzle command signal and the determined positional offset; and sending the selected offset nozzle command signal to the print head to control the print head to print the nozzle firing pattern at the target print head position using the plurality of ink nozzles. a print head including a plurality of ink nozzles; an actuator configured to move the print head relative to a substrate; a print head position sensing system configured to detect an actual position of the print head relative to the substrate; and a controller configured to: receive the actual position of the print head detected by the print head position sensing system wherein the actual position has a corresponding target print head position; determine a positional offset between the actual position and the target print head position; generate a nozzle firing pattern based on the positional offset; and control the print head to print the nozzle firing pattern at the target print head position using the plurality of ink nozzles, wherein receive the actual position of the print head detected by the print head position sensing system wherein the actual position has a corresponding target print head position; determine a positional offset between the actual position and the target print head position; generate a nozzle firing pattern based on the positional offset; and control the print head to print the nozzle firing pattern at the target print head position using the plurality of ink nozzles, wherein the controller includes: a print client preprocessor configured to generate the nozzle firing pattern; and a print head controller configured to receive the nozzle firing pattern, in response, send a nozzle command signal to the print head to trigger ink ejection of at least one of the plurality of ink nozzles; a print client preprocessor configured to generate the nozzle firing pattern; and a print head controller configured to receive the nozzle firing pattern, in response, send a nozzle command signal to the print head to trigger ink ejection of at least one of the plurality of ink nozzles; the print client preprocessor is further configured to generate the nozzle firing pattern, at least by: identifying a plurality of predetermined candidate positional offsets; generating a respective offset nozzle command for each of the plurality of predetermined candidate positional offsets; and sending each of the respective offset nozzle commands to the print head controller in a nozzle command array; and identifying a plurality of predetermined candidate positional offsets; generating a respective offset nozzle command for each of the plurality of predetermined candidate positional offsets; and sending each of the respective offset nozzle commands to the print head controller in a nozzle command array; and the print head controller is further configured to control the print head to print the nozzle firing pattern at least by: selecting an offset nozzle command from the nozzle command array based at least on the nozzle command signal and the determined positional offset; and sending the selected offset nozzle command signal to the print head to control the print head to print the nozzle firing pattern at the target print head position using the plurality of ink nozzles.