No Crystal Reports se vc colocar a font Draft 10cpi ou 12cpi ele imprime em moto texto, agora se usar fontes true type ele imprime em modo grafico mesmo.
Bom C# nao é o meu forte, mais vou dar algumas dicas de impressão:
Uma abordagem que uso para impressões direto para a porta é gravar o arquivo diretamente na porta da impressora. Por exemplo vc grava um arquivo texto com o conteudo da impressão em por exemplo C:\impressao.txt, no lugar deste caminho vc coloca a porta da impressora diretamente, por exemplo LPT1.
Como a impressora é USB fica um pouco mais complicado pois o windows nao deixa vc mapear diretamente a porta USB000x, pode-se fazer o teste diretamente no prompt de comando, por exemplo: "dir>LPT1" onde o prompt jogara o conteudo do diretorio diretamente para a impressora, ja na USB ele retorna um erro, eu costumo fazer da seguinte forma, compartilho a impressora com um nome qualquer, ai no caminho coloco "\\127.0.0.1\compartilhamento", com este recurso vc pode inclusive imprimir atravez da rede.
Outra forma é mapear a porta para um caminho de rede, ai usa-se o seguinte comando: "net use LPT3 \\127.0.0.1\compartilhamento" e à partir deste momento o que vc mandar para LPT3 irá para este caminho de impressão.
Bom é +/- isso, em C# como disse nao é o meu forte, mais acredito que seja somente abrir um steam de arquivo para o caminho LPT1 e jogar as strings diretamente la dentro.
PS: Para impressoras matriciais existem uma série de comandos especiais como por exemplo condensar a fonte, mudar o espacamento horizontal, ejetar a folha, configurar tamanho da folha, tudo isso é feito atravez de uma combinação de caracteres, essa tabela se acha facil pela internet, mais qualquer dúvida me pergunte.
Abraços