Как определить «самый узкий» шрифт в Windows? - PullRequest
3 голосов
/ 27 ноября 2009

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

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

Что бы это ни стоило, это будет приложение ms-Access.

Ответы [ 6 ]

2 голосов
/ 27 ноября 2009

Я не думаю, что вам действительно нужен абсолютно узкий шрифт, так как это может быть какой-то символьный / служебный шрифт, который на самом деле может не содержать реальных символов. Конечно, в моей системе здесь «самый узкий» шрифт - это тот, который почти не содержит латинских символов, что делает ширину отображаемой строки почти нулевой!

Arial Narrow устанавливается Office, поэтому это может показаться разумным выбором для приложения Access. Если вы хотите более узкий, чем этот, я думаю, вам придется связать определенный шрифт самостоятельно.

1 голос
/ 27 ноября 2009

Не могу поверить, что это еще не было упомянуто: просто уменьшите объем текста на кнопках!

Если вам нужно поместить предложение в кнопку, тогда Вы делаете это неправильно . У вас должно быть одно или два слова, желательно с действием, которое будет выполнять пользователь (в отличие от OK / Cancel). При необходимости вы можете использовать диалоговое окно для более конкретного описания того, что влечет за собой каждое действие.

Не говоря уже о том, что более узкий шрифт делает текст трудным для чтения, как бы там ни было.

1 голос
/ 27 ноября 2009

Попробуйте перечислить все шрифты, измеряя «Быстрая коричневая лиса перепрыгнула через ленивую собаку» каждым, а затем выберите тот, который занимает меньше всего места.

Эта ссылка объясняет, как перечислять шрифты

Эта ссылка объясняет, как измерять строки

0 голосов
/ 14 июня 2010

Я просто отвечаю на вопрос без каких-либо комментариев, является ли это хорошей идеей или правильным решением для вашей проблемы.

  1. Перечислите шрифты.
  2. Для каждого шрифта создайте его экземпляр, выберите его в DC и используйте вызов GetTextMetrics.
  3. Проверьте поле tmAveCharWidth структуры метрик. Если он меньше, чем самый маленький из найденных к настоящему времени, запомните его и шрифт.
  4. Выберите шрифт из DC и уничтожьте его.
  5. Создайте заново шрифт с наименьшей средней шириной символа и используйте его.
0 голосов
/ 27 ноября 2009

Просто получите приложение для просмотра шрифтов, такое как AMP Font Viewer. Они часто предлагают возможность перечисления всех установленных шрифтов, отображаемых в произвольной строке с самим шрифтом.

В моей системе я вижу много шрифтов (нестандартных) уже Arial Narrow. Как хорошо известный Haettenschweiler или несколько «сжатых» шрифтов.

0 голосов
/ 27 ноября 2009

Если меня, я буду использовать Arial Narrow

...