Hasse, o que tentei explicar para o amigo gvc é que o terceiro parâmetro da função SetFont, quando passado em forma de matriz, para se calcular a largura da fonte em CPI, você deve
dividir o segundo elemento da matriz pelo valor do primeiro elemento. Então, {1,18}, {2,36} e {3,54} é tudo a mesma coisa, pois o resultado será 18 CPI.
Se você observar a sintaxe da função SetFont() da classe Win32prn, vai notar que na descrição do parâmetro
<nFontWidth> fala o seguinte:
<nFontWidth>:
Este pode ser um valor numérico que indica a largura da fonte em pixels. Se omitido, uma fonte de tamanho padrão é usado. Alternativamente, um array com dois elementos podem ser passados. Ele é usado para calcular a largura da fonte na unidade "caracteres por polegada" (CPI), dividindo o segundo elemento pelo primeiro elemento. Por exemplo:
aFontWidth: = (3, 50)
nCPI: = aFontWidth [2] / aFontWidth [1]
? nCPI // 16,67 caracteres por polegada
Quando a matriz (0,0) é passado, a largura da fonte padrão é selecionado.
Nota: quando o segundo elemento contém um valor negativo, o espaçamento de caracteres fixa é aplicada, mesmo se a fonte é uma fonte proporcional.
Hasse escreveu:Se você tem uma fonte de 18 CPI (tamanho 1,41 mm) e deseja dobrar o tamanho dela, você multiplica ela por 2, e terás 9 CPI (tamanho 2,82 mm).
Se você triplica o tamanho, terás 6 CPI (tamanho 4,23 mm).
Bom, neste caso você teria que passar a matriz {1,18} para 18 CPI, {2,18} para 9 CPI e {3,18} para 6 CPI. Onde dividindo o segundo elemento pelo primeiro elemento de cada matriz, você realmente vai ter 18, 9 e 6 CPI.
Abraços,