Existe uma versão da fonte Arial ou Tahoma com dígitos e espaços monoespaçados?

5

Os dígitos da fonte Arial fornecidos com o Windows são monoespaçados, cada um ocupando o mesmo espaço horizontal, mas eles parecem ter negligenciado fornecer uma versão "monoespaçada" do caractere de espaço. Isso significa que você não pode formatar uma coluna de dígitos justificada à direita em (digamos) 12 espaços e ter a borda da direita alinhada. Por exemplo:

         1
        12
       123
      1234
     12345
   1234567
  12345678
 123456789
1234567890 

funciona porque a fonte usada para exemplos de código tem espaços com a mesma largura que os dígitos. No entanto, isso não funciona se o mesmo texto for exibido no Arial (não consigo demonstrar porque não consigo descobrir como derrotar a reformatação do SU no momento!).

Acontece que com Tahoma 8 ponto você pode trapacear porque um espaço é exatamente metade do número de pixels como um dígito, mas isso é confuso e muito específico.

    
por rossmcm 26.08.2011 / 05:37

3 respostas

6

Tente usar um espaço de figura que deve ter a mesma largura que um dígito, mesmo em uma fonte proporcional:

A figure space is a typographic unit equal to the size of a single typographic figure (numeral or letter), minus leading. Its size can fluctuate somewhat depending on which font is being used. In fonts with monospaced digits, it is equal to the width of one digit.

    
por 21.09.2012 / 17:15
2

Sim, se você estiver disposto a pagar por isso, o monótipo tem uma variância de arial à venda que é monoespaçada .

Por outro lado, se você quiser uma fonte boa e sem serifas que seja gratuita e funcione bem em muitas situações, eu sugiro que você procure em

    
por 26.08.2011 / 05:45
2

Eu usei o espaço da figura (como sugerido pelo user1458424) para alinhar números e o espaço fino para separar milhares.

Em, digamos, JavaScript ou C, você pode digitar os códigos de caracteres unicode correspondentes em qualquer lugar de uma string:

  • \u2007 : espaço de figura.
  • \u202F : espaço fino.

Usar o espaço thin como separador de milhares tem algumas vantagens significativas:

  • A intenção é clara para os leitores americanos e europeus, em vez de usar um , ou . .
  • Você pode adicioná-lo independentemente de o valor ser >= 1000 , pois o espaço é invisível aos olhos.
  • É mais fino que o espaço normal que separa o sinal de moeda do valor, o que faz com que pareça melhor quando há apenas um espaço após o sinal de moeda.

Abaixo, descreverei o que fiz para obter o seguinte formato (separador decimal europeu , neste exemplo):

  • € 1,75
  • € 100,00
  • € 199,97
  • € 10350,00
  • € 21003,18
  • € 121018,33

    1. Remover da entrada todos os caracteres não dígitos: price.replace(/[^\d]+/g, '') .
    2. Conte os "caracteres ausentes": missingDigits = maxDigits - price.length .
    3. Defina o valor de saída como '€' .
    4. Para cada dígito ausente, anexe um espaço de figura à saída: '\u2007' .
    5. Anexe todos os dígitos de entrada, exceto os dois últimos, depois um separador decimal e, em seguida, os dois últimos dígitos da entrada.
    6. Retorna todos os caracteres da saída, exceto os seis últimos, acrescentados por um espaço fino '\u202F' , anexado pelos seis últimos caracteres.

A entrada pode ser qualquer representação de string de um número, com ou sem pontuação e caracteres ilegais. A saída será como visto acima. Você tem que escolher o número máximo de dígitos permitidos.

    
por 26.11.2013 / 16:41