«Проводной» (одномерный) шрифт

17

Все шрифты, о которых я когда-либо слышал, являются двумерными : каждый глиф - это в основном двумерная область (замкнутый контур или несколько замкнутых контуров), которую программное обеспечение или принтер каким-то образом обводит или заполняет в зависимости от инструкций, данных пользователем. Я хотел бы знать, существуют ли одномерные шрифты , где глифы описываются просто как наборы сегментов (которые программа может обводить, но не обязательно заполнять), а не областей.

Другими словами (или, что лучше, в изображениях), то, что я хотел бы иметь, это левая вещь вместо правой на картинке ниже. Это существует?

От двухмерного к одномерному письму

(извините за картинку, я знаю, что это действительно плохо; я просто сделал это быстро)

Джованни Масцеллани
источник
Возможно, нам нужно ответить на graphicdesign.stackexchange.com/questions/64626/… прежде чем мы действительно сможем ответить на ваш вопрос
Райан
Какое ваше желаемое приложение для шрифта? Я не вижу никакого смысла в шрифте с одним штрихом для проектирования, поэтому я предполагаю, что вы хотите это для чертежа или гравюры. В какой программе вы собираетесь использовать шрифт?
DavidC
5
Есть еще два измерения, а внутри просто нет: P
Зак Заусье
8
Самая близкая вещь к одномерному шрифту была бы штрих-кодом.
Джеральд Шнайдер
Как идея приложения, я написал демонстрацию Raspberry Pi для построения путей SVG на осциллографе XY - это было бы идеально для этого. По общему признанию, это необычная среда (как и перьевой плоттер, на котором я собираюсь использовать его позже).
Крис Х

Ответы:

23

В плоттерах это называется «шрифт обводки», « шрифт однострочный », «шрифт гравировки», «шрифт технической надписи» или просто «шрифт плоттера».

Плоттер наносит изображения на бумагу с помощью ручки. Он не может заполнить изображения, за исключением повторного поглаживания их на расстоянии менее ширины пера. Таким образом, шрифты, предназначенные для использования с плоттерами, будут содержать глифы с одним штрихом («симплекс»), двумя более или менее параллельными штрихами («дуплекс») или тремя штрихами («триплекс»). Шрифты с большим количеством штрихов отрисовываются дольше, но допускают большее изменение ширины штрихов в глифе. Использование ручки, слишком узкой для глифа данного размера, приведет к видимым промежуткам между штрихами.

Одним из примеров в основном одностороннего шрифта является Hershey Vector Font . Его знак @, скобки [], фигурные скобки {}и тильда ~являются дуплексными.

Глифы в шрифте Hershey Vector

Если вы видели « жирный шрифт доски », это шрифт 𝕕𝕦𝕡𝕝𝕖𝕩 с шириной пера меньше расстояния между штрихами.

Полужирный шрифт с засечками

Библиотеки изображений старой школы поддерживали штрих-шрифты почти так же, как это делает плоттер. При рендеринге текста приложение будет устанавливать ширину и цвет обводки до рисования текста, так же как и до рисования линии. Это аналогично выбору ручки на плоттере.

Но современные библиотеки растрового изображения используют шрифты OpenType, которые содержат контуры TrueType или CFF (PostScript Type 2). Вместо этого шрифты OpenType, имитирующие шрифты обводки, содержат контур обводки на некоторой ширине линии. Эту операцию обводки можно изменить, вставив контур глифа на расстояние, равное половине ширины обводки, что-то вроде инверсии алгоритмического полужирного шрифта.

Дамиан Йеррик
источник
Бинго! Они существуют, но довольно бесполезны, если не используются для BluePrints, гравировки или лазерных приложений. Дизайнерские приложения, такие как Adobe, Corel и т. Д., Испытывают трудности даже с их рендерингом, поэтому они не слишком полезны для разработки.
DavidC
@DavidC: На графических платформах, которые могут применять преобразования отдельно к перу для рисования и к шрифту, шрифт-палочка может работать хорошо, если использовать очень тонкое эллиптическое перо и применить к нему явное преобразование (получая вид каллиграфического пера). Похоже, что это лучше работает с шрифтом, похожим на флешку, чем со шрифтом с нормальной шириной обводки.
суперкат
10

Большинство инженерных приложений поддерживают шрифты с использованием только линий и толщины пользовательских расходных материалов. Как и довольно много гравировальных и фрезерных станков. Некоторые шрифты существуют, хотя они не очень хорошо работают в современном программном обеспечении (если вообще).

Это проблема: механизмы шрифтов регрессировали с тех пор, как мы отказались от PostScript. Извините, нет простых решений. Таким образом, в тот день можно было получить все виды вкусностей, которые больше не возможны на большинстве компьютеров. Почти ни одно приложение не поддерживает это, даже если оно не работает даже в svg, так как определения шрифтов svg устарели в браузерах.

Проблема в том, что нет универсального формата для таких шрифтов. И сами шрифты будут работать со сбоями во многих случаях. Нормальные приложения будут относиться к ним странно. Видеть:

  • Другой вопрос по теме star-trek-interior-plaques, где вы можете найти такой шрифт, который может работать в некоторых приложениях.

Jongware разработал скрипт для рисования моно-текста, например, вы можете получить его здесь:

Можно создать свои собственные шрифты этого типа в PostScript, используя шрифты типа 3 (но поддержка больше не является широкой *, хотя иллюстратор может использовать их при некоторых обстоятельствах). Однако поддержка в дизайнерских приложениях скудна. Но я на самом деле использую это весь день, когда делаю ostScript. Вот пример (шрифт для специального использования,   отредактированный только для этой демонстрации):

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 200 40
%%Title: Demo type 3 font
%%Creator: Janne Ojala
%%CreationDate:  2015-12-23
%%EndComments

% set stroking characteristics
5 setlinewidth 
1 setlinecap
1 setlinejoin

% lets define the font
10 dict dup begin
  /FontType 3 def
  /FontMatrix [.01 0 0 .01 0 0] def
  /FontBBox [-2 0 52 102] def

  /Encoding 256 array def
  0 1 255 {Encoding exch /.notdef put} for 

  Encoding
    dup (L) 0 get /L put
    dup (a) 0 get /a put
        (b) 0 get /b put

  /Metrics 4 dict def
  Metrics begin
    /.notdef 30 def
    /L 65 def
    /a 65 def
    /b 55 def
  end

  /BBox 4 dict def
  BBox begin
    /.notdef [0 0 0 0] def
    /L [0 0 75 100] def
    /a [25 0 75 100] def
    /b [25 0 65 100]  def
  end

  /CharacterDefs 4 dict def
  CharacterDefs begin
    /.notdef { } def

    /L
      { newpath
        0 100 moveto
        0 0 lineto
        50 0 lineto
        stroke
      } def 
    /a
      { newpath
        25 25 25 0 360 arc 
        50 45 moveto 
        50 0 lineto
        stroke
      } def
    /b
      { newpath
        0 100  moveto
        0 0 lineto
        40 0 40 50 17.5 arct
        40 50 0 50 17.5 arct
        0 50  lineto
        stroke
      } def
    end

  /BuildChar
    { 0 begin

        /char exch def
        /fontdict exch def

        /charname fontdict /Encoding get char get def
        fontdict begin
          Metrics charname get 0
          BBox charname get aload pop
              setcachedevice

          CharacterDefs charname get exec
        end
      end
    } def
  /BuildChar load 0 3 dict put
  /UniqueID 1 def
end

/SpecialUseOnly exch definefont pop
/special /SpecialUseOnly findfont 20 scalefont def

special setfont 

10 10 moveto

%write some text
(Lab baa baa abL) show

%%EOF

Чтобы использовать это, просто поместите его в текстовый файл с окончанием EPS и перетащите его в иллюстратор или слово. убедитесь, что нет пустых строк перед началом. Вы можете редактировать текст, изменяя то, что находится внутри скобок в конце строки в 3 строки. Предостережение здесь состоит в том, что я только определил символы 'L' 'a' и 'b'.

предварительный просмотр

Изображение 1 : Предварительный просмотр программы шрифтов.

* Так что это было легко возможно еще в конце 1980-х и середине 1990-х, но не сегодня. Поддержка была в основном удалена, некоторые программные приложения Adobe все еще имеют это.

joojaa
источник
1
Тем не менее, даже мой сценарий не может заставить его работать без какой-либо толщины: вам все равно нужно установить толщину «a» для линий, которые вы рисуете. Но, разумеется, вы можете установить любое значение, которое вам нравится, в отличие от контурных шрифтов, имеющих «предопределенную» толщину.
usr2564301
2
Заметим, что лазерные резцы, станки с ЧПУ и приложения для САПР будут работать без толщины линии, поскольку толщина для них - всего лишь артефакт постобработки.
joojaa
2
Это прекрасно и модно, но это не шрифт. Я проверил несколько определений шрифта и до сих пор не нашел ни одного, которое не включает толщину / ширину как часть определения. В графическом дизайне это не шрифт из всего, что я нашел. Даже @Jongware, и вы признаете, что для его работы должна быть некоторая толщина. Я бы сказал (и каждое найденное мной согласие), что это не шрифт, пока это не произойдет. Тем не менее, на практике это вполне может быть то, что нужно после ОП, если они просто пытаются построить точки :) Возможно, стоит взглянуть на Corel Draw, я знаю, что создатели знаков часто используют его.
Райан
1
Это также все еще не одномерный, как задают в вопросе. Но тогда я бы сказал , что фактический, одномерный шрифт является невозможным, потому что один размер будет ограничивать вас на прямой линии, а, в одном измерении. Вы можете сделать I и I без двух измерений, но не намного больше.
Янус Бах Жакет
3
@Ryan: это может быть прекрасно и модно, но суть в том, что шрифты только для обводки могут существовать, но не поддерживаются текущими технологиями основного шрифта.
usr2564301 23.12.15
8

Metafont - это язык описания, используемый для определения векторных шрифтов.

В отличие от более распространенных форматов контурных шрифтов (таких как TrueType или PostScript Type 1), шрифт Metafont в основном состоит из штрихов с «ручками» конечной ширины и заполненных областей. Таким образом, вместо описания контура глифа, файл Metafont описывает пути пера.

То, что вы описываете, может быть реализовано как шрифт Metafont с постоянной шириной пера.

Locoluis
источник
6

Еще один термин для того, что вы ищете, - это «шрифт на палочке» - есть бесплатный набор из 9, который я использовал для ЧПУ и лазерной гравировки на http://www.mrrace.com/CamBam_Fonts/

Обратите внимание, что эти шрифты выглядят плохо на экране, а замкнутые области часто выглядят сплошными. Это связано с тем, что они являются технически недопустимыми шрифтами структуры: каждый символ обязательно состоит из одного или нескольких замкнутых циклов (поскольку современные ОС не поддерживают любой другой тип шрифта), но каждый цикл имеет нулевую область. Поэтому они могут быть неподходящими для вас, если целью является нечто иное, чем гравировка.

jasonharper
источник
Он работает нормально с Inkscape при условии, что вы обводите его, а не заполняете. Благодарность!
Джованни Масцеллани
3

В архитектуре новичок может рисовать стены как отдельные линии. Хотя это неточно и не может существовать - даже тонкие стены имеют толщину.

Точно так же ваш А слева, даже тонкий, имеет толщину. Насколько толстый? Это 1pt? Это 0.025pt? Как принтер узнает? Мы должны сказать это.

Чтобы ответить на ваш вопрос, нет, не может существовать одномерный шрифт, как вы его описали. Все линии должны иметь некоторую толщину, чтобы существовать.

Райан
источник
2
Я не совсем согласен: цель шрифта - описать геометрию, связанную с отображением текста. То, как эти геометрии должны быть представлены, является другой проблемой, которая не описана самим шрифтом. Даже с обычными шрифтами, описанными в TrueType, OpenType или что вы хотите, вы все равно должны решить, какой цвет, рисунок и что использовать для заливки или обводки контура. Таким образом, у вас может быть шрифт, подобный тому, который я говорю: пользователь должен указать толщину линии и другие свойства.
Джованни Масчеллани
2
Более того, есть приложение, в котором у вас есть понятие линии независимо от ее толщины. Например, я имею в виду приложение - векторная лазерная гравировка. Толщина того, что я гравирую, является побочным продуктом скорости лазера, мощности и физических свойств материала, который я использую. Это не должно быть известно программному обеспечению, управляющему гравером.
Джованни Масчеллани
2
@ Райан, это строго не правда. Это правда в мире, ориентированном на Adobe. И только если ты хочешь быть счастливым с собой. Иначе даже тогда это ложь.
joojaa
1
@immibis, который, безусловно, учитывается при печати материала, чернил и цвета, но не имеет никакого отношения к шрифту. Шрифт может существовать на вашем экране без глубины, но он не может существовать на вашем экране без какой-либо ширины.
Райан
3
Весь текст должен иметь ширину линии при рисовании, но эта ширина не должна храниться в шрифте. Вместо этого он может быть сохранен в документе с использованием шрифта, так же как и размер и цвет.
Дамиан Йеррик