Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.FTN.DEVELOP
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.FTN.DEVELOP с датами от 12 Jul 13 20:52:30 до 25 Jun 24 23:52:42, всего сообщений: 2542
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 567 из 2542 ==================================== RU.FTN.DEVELOP =
От   : Mithgol the Webmaster            2:50/88            22 Nov 14 21:24:56
Кому : Serguei E. Leontiev                                 22 Nov 14 21:24:56
Тема : Проблема выбора шрифта
FGHI : area://RU.FTN.DEVELOP?msgid=2:50/88+5470d50b
На   : area://RU.FTN.DEVELOP?msgid=<1187497314@ddt.demos.su>+3ac4e569
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
Так было 01:58 05 Nov 14 написано от Serguei E. Leontiev к Mithgol the Webmaster:

MtW>> С другой стороны, понятно, что фидонетовские таблицы (как
MtW>> публикуемый Фёдоровым список WebBBS, например) пропорциональный
MtW>> шрифт не любят, так как столбцы их выстраиваются тогда не в ряд.

SEL> Проблема же не только в таблицах, графиках и прочих иллюстрациях. Ещё
SEL> несколько проблем.

SEL>          1         2         3         4         5         6         7
SEL> 1234567890123456789012345678901234567890123456789012345678901234567890

SEL> Проблема первая, с простым текстом. Достаточно много людей привыкли
SEL> использовать в письмах (и программах) текст моноширинного шрифта
SEL> фиксированной ширины, часто по традиции 64-76 символов. Соответственно,
SEL> взаимодействие тех, что предпочитает пропорциональные шрифты, с нами,
SEL> с ретроградами подразумевает надёжное переформатирование абзацев. Таким
SEL> образом мы приходим к проблеме мягких концов строки (soft line break),
SEL> конечно есть значимое количество ПО, которое поддерживает RFC 3676
SEL> в котором мягкий конец представляется как последовательность SP CRLF
SEL> в противовес жёсткому концу CRLF. Однако, в контексте ФИДО мне
SEL> встречалось только один намёк и только один раз в FSC-0032 было
SEL> упоминание "Hard" <CR>, следовательно, наверное бывают иные, мягкие.
SEL> Hо что это? Для меня загадка, может это русская буква "H"? Хоть
SEL> каких-то документов ФИДО, где определялось бы представление и способы
SEL> обработки мягких переносов не встречал.

Да, мягким концом строки какое-то время на Западе считался код, который у нас
в CP866 соответствует заглавной русской букве 'эн'. По мере того, как Фидонет
стал большей частью своею (по числу узлов, а не по географическому пространству
своему) располагаться в России, стало отмирать в нём и это противоестественное
представление.

В нынешних же обстоятельствах я вижу несколько решений у этой проблемы.

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

╔═════════════════════════════════════════════════════────────────────────────
║ Письмо из эхи:  Ru.Fidonet.Today (Фидонет сегодня)
║ URL сообщения:  area://Ru.Fidonet.Today?msgid=2:50/88+54635f80
║ Автор и время:  Mithgol the Webmaster, 2:50/88 (12 Nov 14 16:20)
║ Кому написано:  Max Vasilyev
║ Заглавие темы:  Кладж FLAGS и проблема выбора шрифта
╚════════════════════════════════════════════════════════════════════─────────
Так было 21:35 10 Nov 14 написано от Max Vasilyev к Mithgol the Webmaster:

MV>>> Кладж FLAGS NPD

MtW>> Была ли эта идея оформлена в каком-нибудь документе FTSC?

MV> Ахз.

MV> ФлитСтрит так работал еще в прошлом тысячелетии.

Пришлось мне самому поискать. Это не так-то просто, потому что поисковику
неоткуда знать, например, что по слову 'flags' в Интернете надо бы находить
и слово ^aFLAGS.

Однако всё же нашёл.

Вот описание кладжа FLAGS в документе FSC-0053.002 в Fidonet Reference Library:

http://ftsc.org/docs/fsc-0053.002

И видно, что флага NPD там как раз и нет.

То есть во время сочинения этого документа (в 1992 году) кладж FLAGS замышляли
как хранилище стандартных флагов сообщения (PVT для Private, HLD для Hold,
CRA для Crash, K/S для Kill/Sent, SNT для Sent, RCV для Received, A/S для
Archive/Sent, DIR для Direct, ZON для Zonegate, HUB для Hub/Host-route,
FIL для File attach, FRQ для File request, IMM для Immediate, XMA для Xmail,
KFS для Kill file when sent, TFS для Truncate file when sent, LOK для Lock,
RRQ для Receipt request, CFM для Confirm request).

Видно также, что тогда была уж попытка расширить его всякими факсовыми
дополнениями: HIR для HiRes, COV для CoverLetter, SIG для Signature,
LET для LetterHead, FAX для Fax image, FPU для Force pickup.

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

https://github.com/Mithgol/node-fidonet-jam/blob/ae36f04ceb57/JAM.txt#L366-372

Это значит, что к моменту сочинения документации по JAM (а это 1993 год,
следующий за годом появления FSC-0053.002) было понимание того обстоятельства,
что в кладж FLAGS станут помещать и нестандартные флаги (или, по крайней мере,
такие флаги, которые в JAM не предусмотрены).

Сколько таких флагов возможно в принципе?

Слово 'FLAGS' занимает пять символов, а в сочетании со предшествующим Ctrl+A
и последующим возможным двоеточием ── семь символов. Так как каждый флаг в этом
кладже занимает четыре символа (три символа мнемоники да ещё один пробел перед
флагом), то на семидесяти девяти символах (это ширина строки терминала) можно
поместить восемнадцать флагов (72 символа) и ещё останется место для названия
кладжа. А девятнадцатый флаг не поместится ни в каком случае, есть ли двоеточие
после FLAGS или же нет его. Поэтому слегка удивительно видеть, что FSC-0053.002
двоеточия там не предусматривает, а предполагает после названия кладжа сразу
пробел.

Кажется также, что документ FSC-0053.002 пренебрегает восемнадцатифлаговым
ограничением, ведь он определяет девятнадцать более или менее стандартных
флагов и затем ещё пять или шесть факсовых. (Шесть, если считать флаг FPU,
который по сути синоним IMM и поэтому невесть зачем он нужен.)

Впрочем, это лишь кажется. А на самом деле из стандартных флагов далеко не все
употребляются одновременно (например, я с трудом представляю себе сочетание
DIR и HUB, FIL и FRQ, KFS и TFS, RRQ и CFM), так что остаётся место примерно
для трёх ещё нестандартных.

И что же? Факсовые флаги из FSC-0053.002 ── не единственный способ изобрести
пару-тройку-другую нестандартных флагов. Откроем тот FAQ по FrontDoor APX/w,
который был составлен Definite Solutions в 1999 году (то есть через шесть лет
после документации по JAM и через семь лет после FSC-0053.002):

http://defsol.com/downloads/definite-solutions/frontdoor-apxw-faq/

Там мы без труда увидим (в пункте 7.2) такое определение флага NPD:

(Начало цитаты.)

        *) Fixed pitch fonts / Proportional fonts

           Since FrontDoor APX is a Windows program, it is able to use
           most of the fonts that are installed. Contrary to the fonts
           used in a DOS program, most fonts in Windows are
           proportional fonts, which means that the width of each
           character is different. This is not a problem in most
           messages, but when a message contains information that are
           in columns (for instance a table), it will often look
           incorrect with a proportional font.

           To prevent this problem, it is possible to add the NPD (Non
           Proportional Display) status to a message. If you know that
           you are sending messages that use columns, you might want
           to add the NPD status, if possible. To do this in a *.MSG
           or Hudson message, add a control information (kludge) line
           to the message that looks like this:

              @FLAGS NPD

           (@ should be replaced by a Ctrl+A character, ASCII 01h).

           In a JAM message base, there is a special header attribute
           for the NPD status.

(Конец цитаты.)

Можно догадываться, что NPD означает Non-proportional display.

Интересно, что в последнем абзаце упоминается специальный атрибут заголовка
базы JAM, который служит-де для хранения статуса NPD. Я в документации по JAM
не вижу ничего подобного, да и все могут смотреть сами и убедиться в том:

https://github.com/Mithgol/node-fidonet-jam/blob/ae36f04ceb57c7a12533c/JAM.txt

Кроме того, можно найти в Сети следы того, что FastEcho наряду с флагом NPD
употреблял флаг PGM, который в FSC-0053.002 вовсе не упоминался:

http://fido.mic6090.pp.ru/echo.pl?c=view&e=6&m=4755

Документация же по FastEcho версии 1.46 (30 марта 1997 года, на два года раньше
появления FAQ по FrontDoor APX/w) содержит определение флага PGM ('it means
that the message having this attribute set has been automatically generated
by a program'), но не содержит определения флага NPD, хотя мы убедилися уж
в том, что FastEcho употребляет его.

Можно догадываться, что PGM означает Program-generated message.

По итогам вышеприведённого разыскания мне становится гораздо яснее ответ
на вопрос о том, как добавить в мой фидобраузер (в PhiDo) поддержку флага NPD.

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

И ФлитСтрит, и FrontDoor, и даже FastEcho постепенно вышли из моды в Фидонете.

С весны 2007 года (включительно) я не видел, например, здесь (Ru.Fidonet.Today)
ни одного письма с флагом NPD ни в натуральном виде, ни как итог цитирования.
Даже само слово NPD начали упоминать только в этом вот обсуждении. А ведь это
шесть лет с половиною.

А что это значит? ── Это значит, что передо мною встала реальная перспектива
добавить в свою программу такую возможность, корректность и работоспособность
которой мне будет не на чем проверить: нет тестового примера, на котором её
проверять.

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


Фидонет будет великим и гипертекстовым!    [Ru.Mozilla]     http://Mithgol.Ru/
Mithgol the Webmaster.                    [Братство Нод] [Team А я меняю subj]

... Я не хочу изменять ни жене, ни президенту, ни москвичам.    (Ю. М. Лужков)
■■■ Now playing:                                   http://hentaichan.ru/games/
 √ Origin: Hо колдовства сломай печать, чтобы вебсайт себе скачать (2:50/88)
────────────────────────════════╪══╬═╣()╠═╬══╪════════────────────────────────

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

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

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

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

Другим из примеров такого текста являются стихотворения.

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

А на будущее (на то будущее, когда перевёрстка станет распространённым приёмом
в фидобраузерах и в WebBBS) понадобится также придумать какой-нибудь способ,
которым автор сообщения сможет пометить абзац, не подлежащий перевёрстыванию.

Для исходного кода можно спользоваться тем приёмом, который упомянут по адресу
https://help.github.com/articles/github-flavored-markdown/#syntax-highlighting
для легковесного языка разметки, известного под названием GitHub Flavored
Markdown. Куски исходного кода обрамляются тройным обратным апострофом (```)
с последующим необязательным указанием языка программирования (это последнее
обеспечивает ещё и раскраску исходного кода в соответствии с синтаксисом того
языка, на котором он записан).

Для стихотворений придётся придумать другой способ ── например, начинать
каждую строку стихотворения с четырёх или более пробелов, как по адресу
http://daringfireball.net/projects/markdown/syntax#precode (также в языке
Markdown) рекомендуют делать с блоками исходного кода.

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

SEL> Проблема вторая, цитирование. В случае, цитирования по RFC 3676 -
SEL> последовательность ">" с опциональным пробелом, почти нет проблем
SEL> с использованием пропорционального шрифта, т.к. используется только
SEL> одинаковые символы, то цитаты одинаковой вложенности находится на одном
SEL> расстоянии от границы текста. Опять же правила цитирования просты, чаще
SEL> всего исполняются, соответственно многие программы их достаточно надёжно
SEL> отображаю графически (линиями, отступами и  т.п.). Правила цитирования
SEL> ФИДО описываются неформальным документом FSC-0032 и с пропорциональным
SEL> шрифтом не очень дружат. Hапример:

>>>>> Цитата уровня 4
i>>>> Цитата уровня 3
00>>> Цитата уровня 2
ЛСЕ>> Цитата уровня 1

SEL> Ибо указано, что инициалы опциональны, не определено сколько символов
SEL> в инициалах и из какого они набора символов.

SEL> Проблема третья, это переформатирование цитат. К сожалению, даже
SEL> с выполнением базового образца "^ [[:alnum:]]*>+ " имеются проблемы.
SEL> Hе то что бы они были нерешаемы, к сожалению, на них тупо забивают.

Это, в сущности, одна и та же проблема. Если вычленить цитату из фидопочты,
то её, уж конечно, можно и надёжно отобразить графически (линией и отступом),
и переверстать (переформатировать).

Полагаю, что регулярное выражение "^ [[:alnum:]]*>+ " не вполне соответствует
указаниям из FSC-0032.001. Вот почему в своём модуле преобразования фидопочты
в HTML5 я использовал более общее регулярное выражение /^\s*[^\s>]*>+/

(Так как на языке регулярных выражений \s может означать и разделитель строк,
то это регулярное выражение можно применять только к отдельной строке, то есть
после того, как сообщение фидопочты разбито на отдельные строки.)

Вот это место в исходном коде моего модуля в нынешнем его состоянии:

https://github.com/Mithgol/node-fidonet-fidohtml/blob/779432a/fidohtml.js#L254

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

SEL> Я не дизайнер, однако, меня пугают трудности подбора пар шрифтов
SEL> моноширинный+пропорциональный, что бы это не было безобразно.

В этом отношении я решил положиться на отечественную фирму 'ПараТайп', в рамках
проекта http://www.paratype.ru/public/ выпустившую сразу несколько шрифтов
(как пропорциональных, так и одноширинных), составляющих единое семейство,
употребление которого к тому же бесплатно.

SEL> Тексты программ. Hаверное, можно выполнять частотный анализ областей
SEL> текста, как одномерный, так и двумерный, и достаточно легко выявлять
SEL> области: программ со структурными сдвигами, таблиц, картинок, графиков.
SEL> (Заметим, если бы хотя бы мягкие/жесткие концы строк поддерживались бы,
SEL> то было бы заметно надёжнее).

Частотный анализ ── хорошая идея.


Фидонет будет великим и гипертекстовым!    [Ru.Mozilla]     http://Mithgol.Ru/
Mithgol the Webmaster.                    [Братство Нод] [Team А я меняю subj]

... Бойся гнева терпеливого человека.                           (Джон Драйден)
--- Эшелону: Федеральная Служба Безопасности немедленно ликвидирует Президента
* Origin: Болея душой за Россию свою, за Путина голос я не подаю! (2:50/88)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.115161 секунды