Существует ли версия шрифта Arial или Tahoma с одноразмерными цифрами и пробелами?

10031
rossmcm

Цифры в шрифте Arial, поставляемом с Windows, являются моноширинными, так как они занимают одно и то же горизонтальное пространство, но, похоже, они пренебрегли предоставлением «моноширинной» версии символа пробела. Это означает, что вы не можете отформатировать столбец из цифр, выровненных по правому краю, скажем, в 12 пробелах, и выровнять правый край. Например:

 1 12 123 1234 12345 1234567 12345678 123456789 1234567890  

работает, потому что шрифт, используемый для примеров кода, имеет одинаковую ширину с цифрами. Это, однако, не работает, если тот же текст отображается в Arial (я не могу продемонстрировать, потому что я не могу понять, как победить переформатирование SU в данный момент!).

Так уж получилось, что с Tahoma 8 point вы можете обмануть, потому что пробел - это ровно половина числа пикселей в виде цифры, но это грязно и очень специфично.

5

3 ответа на вопрос

6
user1458424

Попробуйте использовать пробел, который должен быть такой же ширины, как цифра, даже пропорциональным шрифтом:

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

Отлично. Я объединил это с «тонким пространством», чтобы получить красиво выровненные представления денег. Позвольте уточнить в отдельном ответе. Timo 10 лет назад 0
2
Journeyman Geek

Да, если вы готовы за это заплатить, у монотипа есть разновидность ариала для продажи, которая моноширинная .

С другой стороны, если вам нужен хороший бесплатный шрифт без засечек, который хорошо работает во многих ситуациях, я бы посоветовал взглянуть на droid sans mono

Хм. Я хотел только цифры и пробел моно - мне очень нравятся пропорциональные тексты и тахома. Кроме того, демонстрация на странице, которую вы предоставили, не снижается до 8pt - 12px на моей машине - 9pt. Также по какой-то причине мой дисплей портится со шрифтами и фактически делает их без чтения rossmcm 12 лет назад 0
2
Timo

I used the figure space (as suggested by user1458424) to align numbers and the thin space to separate thousands.

In, say, JavaScript or C, you can type the corresponding unicode char codes anywhere in a string:

  • \u2007: Figure space.
  • \u202F: Thin space.

Using the thin space as a thousands separator has some significant advantages:

  • The intent is clear to both US and European readers, as opposed to using a , or ..
  • You can add it regardless of whether the value is >= 1000, since the space is invisible to the eye.
  • It is thinner than the regular space that separates the currency sign from the value, which makes it look better when there is only one space after the currency sign.

Below, I will describe what I did to get the following format (European decimal separator , in this ex.):

  • € 1,75
  • € 100,00
  • € 199,97
  • € 10 350,00
  • € 21 003,18
  • € 121 018,33

    1. Remove from input all non-digit characters: price.replace(/[^\d]+/g, '').
    2. Count the 'missing characters': missingDigits = maxDigits - price.length.
    3. Set the output value to '€'.
    4. For each missing digit, append a figure space to output: '\u2007'.
    5. Append all the input digits except for the last two, then a decimal separator, then the input's last two digits.
    6. Return all characters of the output except the last six, appended by a thin space '\u202F', appended by the last six characters.

The input can be any string representation of a number, with or without punctuation and illegal characters. The output will be as seen above. You have to choose the maximum number of digits allowed.

Обратите внимание, что есть дополнительные интересные связанные символы, такие как рисунок тире. Timo 10 лет назад 0
Думаю, вам лучше отредактировать исходный ответ, чтобы включить эти полезные дополнения. Полезно, хотя. O'Rooney 8 лет назад 0