Не все так просто с шрифтами ... Вопрос решается в три этапа.
1. Номер нужно перекодировать в код EAN-13 или другой, обязательно с расчетом контрольной суммы кода.
(алгоритм простейший, подробно описан на
http://www.ean.ru)
Обрати внимание, что для пользовательских кодов отводится
секция 20-22 - иначе могут быть накладки с "настоящими" ш/к.
2. Код EAN должен быть подготовлен для печати - это требование двунапрвленного считывания. Т.е. одни и те же цифры кода имеют различное графическое отображение, в зависимости от своего местоположения в коде. Например так (подготовка строки с EAN13 для печати):
PrintBarCode PROCEDURE (Code_S)
Loc:RetValue STRING(14)
Loc:Count BYTE
Loc:Table BYTE
Loc:LTMP LONG
Loc:CodS STRING(14)
TABLE_EAN13 STRING('0@`pP!')
ORDER_EAN13 STRING(13),DIM(10)
CODE
ORDER_EAN13[1] ='6311111555554'
ORDER_EAN13[2] ='6312122555554'
ORDER_EAN13[3] ='6312212555554'
ORDER_EAN13[4] ='6312221555554'
ORDER_EAN13[5] ='6321122555554'
ORDER_EAN13[6] ='6322112555554'
ORDER_EAN13[7] ='6322211555554'
ORDER_EAN13[8] ='6321212555554'
ORDER_EAN13[9] ='6321221555554'
ORDER_EAN13[10]='6322121555554'
Loc:CodS = Clip(Left(Code_S))
! Дополним строку нулями до полной
Loop While Len(Clip(Left(Loc:CodS))) < 13
Loc:CodS = '0' & Clip(Loc:CodS)
end
Loc:Table = Loc:CodS[1] + 1 ! Определить таблицу кодировки
Clear(Loc:RetValue) ! Обнулить результат
Loop Loc:Count = 1 to 13 by 1
If (Loc:Count =

then Loc:RetValue = Clip(Loc:RetValue) & '|'. ! Разделители
Loc:LTmp = Val(table_ean13[Sub(order_ean13Loc:Table], Loc:Count,1)])
Loc:RetValue = Clip(Loc:RetValue) & Chr(Loc:LTmp + Loc:CodS[Loc:Count])
end
Return(Loc:RetValue)
! ------ ВСЕ : будет возвращена строка для печати или отображения
3. Далее, действительно - полно различных по красоте шрифтов (просто зебры, с цифрами и т.д.), которыми можно эту закодированную строку распечатать - и она будет считана любым сканером. Если не сможешь найти, оставь мыло - сброшу несколько вариантов ....