Да, есть несколько вариантов оператора show
, которые можно использовать для таких вещей:
ax ay строка показать -
добавить (ax, a y) к ширине каждого символа при отображении string
cx cy char string widthshow -
добавить (cx, cy) до ширины char при отображении string
cx cy char ax ay string widthshow -
объединить эффекты ashow и widthshow
proc string kshow -
выполнить proc между символами, показанными из string
Несколько советов. Поскольку в постскриптуме нет символьных литералов, распространенной идиомой является извлечение целочисленного значения из 1-байтового строкового литерала для предоставления аргумента char для widthshow
и awidthshow
. Например.
( ) 0 get %the space char, aka 32 or 16#20
И если вы не собираетесь использовать эффект лестницы, все значения y должны быть равны 0.
Процедура, выполняемая kshow между каждым символом, получает в качестве аргументов только что показанный символ и символ, который должен быть показан, в указанном порядке. Предположительно, это позволит вам найти пару в какой-то «таблице кернинга». Но я никогда не видел, чтобы это было сделано. Но не забудьте вытолкнуть их, если они не нужны (обычно).
Что касается создания производного шрифта, я отсылаю вас к этому моему ответу на codegolf.SE, который создает шрифт кроссворда, рисуя прямоугольники вокруг Times-Roman. Ширина символа задается оператором setcachedevice в процедуре /BuildChar. Для меня мне просто нужна была постоянная ширина, поэтому я использовал 1, чтобы привязать ее непосредственно к размеру шрифта.
person
luser droog
schedule
05.04.2012