Вот понадобилось сделать textbox. С кем не бывает. Понадобилось и понадобилось, но тут же встал вопрос: а под какие шрифты его затачивать? Собственно варианта два известно в нашем (с моей точки зрения) компьютерном мире: шрифты моноширинные и шрифты пропорциональные.
Неожиданно проблема выбора превратилась в головную боль. По одной причине: моноширинные шрифты дают тексту дополнительное свойство, которое можно назвать геометричностью: раз все буковки одинаковой ширины, то (это плоды некоторого количества исследований и издевательств над пользователями, возможно, факты известные и очевидные, но ничего нагуглить не удалось, поэтому до всего доходили сами)
1. в тексте появляется понятие колонки символов, и вообще textbox становиться двумерным, и в нём можно устраивать очень простое форматирование текста: всякие hexdump'ы форматируются простой табуляцией. И очень простую навигацию, вроде: нарисуй картинку по координатам (знакоместо 0, 10).
2.0. упрощается выбор текста мышкой. Когда происходит клик по координатам внутри textbox'а, то несравненно проще вычислить в какое место в строчке этот клик угодил. Там, конечно, возникнут проблемы с определением того, где в памяти кликнутое начинается, потому что текст, естественно, в utf8, но в случае с пропорциональными шрифтами к этому добавляется ресурсоёмкая головная боль, связанная с тем, что нужно ещё понять, в какой символ в строчке кликнул пользователь.
2.1. попасть в моноширинную i значительно проще, чем в пропорциональную.
3.0. читается проще. Что бы ни говорили поклонники times new roman, но когда слово из двух букв может выглядеть длиннее, чем слово из четырёх — это несколько замедляет скорость восприятия информации. Кроме того, сложности возникают с распознаванием порядков чисел. Когда 110 может быть короче, чем 100, мозгу сложно это оценить. Собственно, на этот счёт было проведено несколько экспериментов с психологами.
3.1. анимация. Часы, нарисованные в виде 05:40:47 при замене одного символа не дёрнутся, не изменят свою ширину, что для мозга является меньшей неожиданностью, чем дёргание при смене 0 на 1 в какой-нибудь Tunga.
3.2. проще сравнивать тексты. Например, две md5 суммы. Нет, конечно, можно автоматически, но иногда лень программку запускать, а тут хопа — позыркал на колонки символов — и готово. hexdump'ы проще читать. Можно, конечно, оформить всё exel'еподобным методом, написать байтовые комбинации нужной длинные в колоночки, адресса там приписать и всё такое прочее. Но увидеть в подобных распечатках нужные закономерности оказывается значительно сложнее, чем в распечатках моноширинных, отформатированных tab'ами и space'ами. Хотя, возможно, в этом опыте сыграла роль профессиональная болезнь — испытуемые были программистами.
3.3. при редактировании текста не происходит непредсказуемых перепрыгов со строчки на строчку, всё достаточно ожидаемо: стёрли одну букву, длинна слова уменьшилась на одну единицу, добавили одну — и длина увеличилась на одну. Не бывает так, что убрали букву z, слово прыгнуло на строчку вверх, добавили две ii, а слово не вернулось на строчку вниз. Большая предсказуемость тоже разгружает мозги.
4. Пошатался я по алфавитам различным. Все, конечно, не видел, но все распространённые вполне укладываются в моноширные клеточки. Оно, вобщем-то и понятно, смысл буквы ставить в зависимость от её величины — это негуманно (в смысле, люди все разные). Более того, японские и китайские символы, вроде как должны быть моноширными, потому что тексто должен записываться как вертикально, так и горизонтально.
Вобщем, на мой взгляд, у моноширинных шрифтов сплошные плюсы, и единственный минус — нельзя писать мелкими в высоту буквами на экране так, чтобы читабельно было и красиво. Например, шрифт с высотой прописной буквы o в 3 пикселя с кирилицей вряд ли возможен, потому как в 3x3 букву ы впихнёшь. С другой стороны, а кому это нужно? Тем более, что на современном печатном оборудовании всё векторное, и мельчить можно, хоть до тысячных долей дюйма — заумельчаться можно до полного немогу. А на экране 3x3 никто и не читает.
Но с другой стороны, есть такой человек, как дизайнер. На взгляд которого шрифты — это такие полигончики (ну, они, конечно, не совсем полигончики, но в итоге из сплайнов в них превращаются, cf freetype), которыми можно рисовать, описывая картинку последовательностью буковок. А полигончики, вобщем-то могут быть совершенно разными, хоть смайликами, хоть интегралами (речь идёт не о TeX'оподобии, потому как нечто ему подобное с моноширными шрифтами дружит на ура. Потому как раньше математические статьи набивали на машинках, а формулы вписывали от руки — было очень удобно на самом деле форматировать, таблички рисовать и графики подписывать. По словам ветеранов).
А раз буковка может быть любой, то и права нет у разработчиков делать textbox усиленным знаниями о моноширинности шрифтов, хотя усиление и ускорение может быть существенным.
Эх. Вот такая грустная история. Придётся хитрить как со скроллингом, так и с пометками о длинных строках, с выбором мышкой и прочими прелестями. Остаётся утешаться лишь тем, что textbox сможет рисовать строчки не только из буковок, но и из любых векторных фигорок, если они будут правильно описаны в какой-нибудь самопальной недоttf'ке (кстати, долой патенты :).
В итоге, пришли к компромису: textbox будет не заточен под моноширные шрифты, но первый шрифт, который нам сделают эти чёртовы дизайнеры обязан будет быть моноширным. Надо же нам в конце концов смотреть hexdump'ы.
Но если у вас нет за спиной такой капризной публике, то можете подумать над приемуществами моноширинных шрифтов. Над тем, что они дают двумерность, ascii-арт, колонки символов, предсказуемые изменения текста при его редактировании и прочие прелести. Подумать и не записывать такие шрифты в бесполезный реликт прошлого.
P.S. А что означает загадочная фраза С. Джобса 'если бы я забросил курс калиграфии, то, возможно, на Mac'ах вообще не было бы моноширинных шрифтов'?
Неожиданно проблема выбора превратилась в головную боль. По одной причине: моноширинные шрифты дают тексту дополнительное свойство, которое можно назвать геометричностью: раз все буковки одинаковой ширины, то (это плоды некоторого количества исследований и издевательств над пользователями, возможно, факты известные и очевидные, но ничего нагуглить не удалось, поэтому до всего доходили сами)
1. в тексте появляется понятие колонки символов, и вообще textbox становиться двумерным, и в нём можно устраивать очень простое форматирование текста: всякие hexdump'ы форматируются простой табуляцией. И очень простую навигацию, вроде: нарисуй картинку по координатам (знакоместо 0, 10).
2.0. упрощается выбор текста мышкой. Когда происходит клик по координатам внутри textbox'а, то несравненно проще вычислить в какое место в строчке этот клик угодил. Там, конечно, возникнут проблемы с определением того, где в памяти кликнутое начинается, потому что текст, естественно, в utf8, но в случае с пропорциональными шрифтами к этому добавляется ресурсоёмкая головная боль, связанная с тем, что нужно ещё понять, в какой символ в строчке кликнул пользователь.
2.1. попасть в моноширинную i значительно проще, чем в пропорциональную.
3.0. читается проще. Что бы ни говорили поклонники times new roman, но когда слово из двух букв может выглядеть длиннее, чем слово из четырёх — это несколько замедляет скорость восприятия информации. Кроме того, сложности возникают с распознаванием порядков чисел. Когда 110 может быть короче, чем 100, мозгу сложно это оценить. Собственно, на этот счёт было проведено несколько экспериментов с психологами.
3.1. анимация. Часы, нарисованные в виде 05:40:47 при замене одного символа не дёрнутся, не изменят свою ширину, что для мозга является меньшей неожиданностью, чем дёргание при смене 0 на 1 в какой-нибудь Tunga.
3.2. проще сравнивать тексты. Например, две md5 суммы. Нет, конечно, можно автоматически, но иногда лень программку запускать, а тут хопа — позыркал на колонки символов — и готово. hexdump'ы проще читать. Можно, конечно, оформить всё exel'еподобным методом, написать байтовые комбинации нужной длинные в колоночки, адресса там приписать и всё такое прочее. Но увидеть в подобных распечатках нужные закономерности оказывается значительно сложнее, чем в распечатках моноширинных, отформатированных tab'ами и space'ами. Хотя, возможно, в этом опыте сыграла роль профессиональная болезнь — испытуемые были программистами.
3.3. при редактировании текста не происходит непредсказуемых перепрыгов со строчки на строчку, всё достаточно ожидаемо: стёрли одну букву, длинна слова уменьшилась на одну единицу, добавили одну — и длина увеличилась на одну. Не бывает так, что убрали букву z, слово прыгнуло на строчку вверх, добавили две ii, а слово не вернулось на строчку вниз. Большая предсказуемость тоже разгружает мозги.
4. Пошатался я по алфавитам различным. Все, конечно, не видел, но все распространённые вполне укладываются в моноширные клеточки. Оно, вобщем-то и понятно, смысл буквы ставить в зависимость от её величины — это негуманно (в смысле, люди все разные). Более того, японские и китайские символы, вроде как должны быть моноширными, потому что тексто должен записываться как вертикально, так и горизонтально.
Вобщем, на мой взгляд, у моноширинных шрифтов сплошные плюсы, и единственный минус — нельзя писать мелкими в высоту буквами на экране так, чтобы читабельно было и красиво. Например, шрифт с высотой прописной буквы o в 3 пикселя с кирилицей вряд ли возможен, потому как в 3x3 букву ы впихнёшь. С другой стороны, а кому это нужно? Тем более, что на современном печатном оборудовании всё векторное, и мельчить можно, хоть до тысячных долей дюйма — заумельчаться можно до полного немогу. А на экране 3x3 никто и не читает.
Но с другой стороны, есть такой человек, как дизайнер. На взгляд которого шрифты — это такие полигончики (ну, они, конечно, не совсем полигончики, но в итоге из сплайнов в них превращаются, cf freetype), которыми можно рисовать, описывая картинку последовательностью буковок. А полигончики, вобщем-то могут быть совершенно разными, хоть смайликами, хоть интегралами (речь идёт не о TeX'оподобии, потому как нечто ему подобное с моноширными шрифтами дружит на ура. Потому как раньше математические статьи набивали на машинках, а формулы вписывали от руки — было очень удобно на самом деле форматировать, таблички рисовать и графики подписывать. По словам ветеранов).
А раз буковка может быть любой, то и права нет у разработчиков делать textbox усиленным знаниями о моноширинности шрифтов, хотя усиление и ускорение может быть существенным.
Эх. Вот такая грустная история. Придётся хитрить как со скроллингом, так и с пометками о длинных строках, с выбором мышкой и прочими прелестями. Остаётся утешаться лишь тем, что textbox сможет рисовать строчки не только из буковок, но и из любых векторных фигорок, если они будут правильно описаны в какой-нибудь самопальной недоttf'ке (кстати, долой патенты :).
В итоге, пришли к компромису: textbox будет не заточен под моноширные шрифты, но первый шрифт, который нам сделают эти чёртовы дизайнеры обязан будет быть моноширным. Надо же нам в конце концов смотреть hexdump'ы.
Но если у вас нет за спиной такой капризной публике, то можете подумать над приемуществами моноширинных шрифтов. Над тем, что они дают двумерность, ascii-арт, колонки символов, предсказуемые изменения текста при его редактировании и прочие прелести. Подумать и не записывать такие шрифты в бесполезный реликт прошлого.
P.S. А что означает загадочная фраза С. Джобса 'если бы я забросил курс калиграфии, то, возможно, на Mac'ах вообще не было бы моноширинных шрифтов'?